docs: document IPC workflow and add project structure - #20

Merged
wilcorrea merged 3 commits into
mainfrom
docs/ipc-and-project-structure
Feb 24, 2026
Merged

docs: document IPC workflow and add project structure#20
wilcorrea merged 3 commits into
mainfrom
docs/ipc-and-project-structure

Conversation

@wilcorrea

@wilcorreawilcorrea commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Added comprehensive Unix domain socket IPC documentation to CLAUDE.md
    • Socket location (~/.arandu/arandu.sock), permissions, and protocol details
    • Complete CLI workflow: socket-first approach with automatic fallback to open command
    • Documented 3 IPC commands: open, ping, show
  • Created new "Project Structure" section in CLAUDE.md with visual folder tree
    • Shows all key directories and files with inline descriptions
    • Clear marking of deprecated apps/macos/ directory
    • Highlights critical backend files: ipc.rs, tray.rs, whisper/
  • Documented system tray functionality in README.md
    • Custom "A" glyph rendering, menu items, window hiding behavior
  • Added "Architecture Overview" section to README.md development guide
    • Backend/frontend structure with key files and communication patterns
  • Strengthened macOS native deprecation warning (Note → IMPORTANT)
  • Added new "Contributing" section to README.md linking to CLAUDE.md
  • Documented conditional compilation patterns (#[cfg(unix)], #[cfg(target_os = "macos")])

Test plan

  • Verify CLAUDE.md renders correctly on GitHub
    • Project structure tree displays properly
    • IPC section formatting is correct
    • Code blocks and inline code render properly
  • Verify README.md renders correctly on GitHub
    • System Tray section displays properly
    • Architecture Overview formatting is correct
    • Contributing section links work
  • Confirm documentation accurately reflects codebase
    • Socket path matches ipc.rs implementation
    • CLI script commands match cli_installer.rs
    • File paths in project structure are accurate

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added a system tray with Show Window and Quit options.
    • Fast CLI ↔ app communication via Unix-domain socket IPC with a TCP fallback and a macOS CLI installer flow.
  • Documentation

    • Detailed IPC, socket location/protocol, and graceful-fallback behavior.
    • Expanded architecture, build/contributing notes, and clear macOS native-deprecation guidance.

…ructure
- Add Unix domain socket IPC documentation (workflow, commands, fallback)
- Create comprehensive project structure section in CLAUDE.md
- Document system tray functionality in README.md
- Strengthen macOS native deprecation warning
- Add architecture overview to README development section
- Document conditional compilation patterns
- Clarify CLI socket-first approach with open fallback
@coderabbitai

coderabbitaiBot commented Feb 24, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Adds Unix-domain socket IPC (Unix-only) and TCP fallback, a macOS CLI installer fast-path, system tray integration notes, a Whisper subtree, public IPC modules in the Tauri backend, and related README/CLAUDE.md documentation including macOS-native deprecation and conditional compilation guidance.

Changes

Cohort / File(s)Summary
Tauri IPC core
apps/tauri/src-tauri/src/ipc_common.rs, apps/tauri/src-tauri/src/ipc.rs, apps/tauri/src-tauri/src/tcp_ipc.rs
Introduced shared IPC types and implementations: Unix domain socket server, TCP fallback server, and shared request/response types. Public API surface expanded for IPC.
Tauri CLI installer & integration
apps/tauri/src-tauri/src/cli_installer.rs, apps/tauri/src-tauri/src/lib.rs
Adds macOS CLI installer/fast-path logic and integrates socket setup/cleanup into Tauri app lifecycle (conditional macOS compilation notes).
Whisper subtree
apps/tauri/src-tauri/src/whisper/...
New directory for Whisper voice-to-text code; moved/organized related modules under a dedicated public subtree.
Documentation
CLAUDE.md, README.md
Added Architecture overview, IPC (Unix socket) protocol & location, CLI-to-app workflow, system tray notes, macOS native deprecation, conditional compilation, and build/dev guidance.
Misc (public API surface)
apps/tauri/src-tauri/src/...
Public-facing IPC transport implementations and CLI installer added to crate exports (visibility changes across new modules).

Sequence Diagram(s)

sequenceDiagram
autonumber
participant CLI as CLI (user)
participant Socket as Unix Domain Socket
participant Tauri as Tauri Backend (Rust)
participant Tray as System Tray / UI
CLI->>Socket: connect to /tmp/<app>.sock and send IpcCommand
Socket->>Tauri: accept connection, deliver IpcCommand
Tauri->>Tauri: parse command via ipc_common, execute handler
Tauri->>Tray: update tray state or notify frontend
Tauri-->>Socket: send IpcResponse
Socket-->>CLI: return response
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰
I nudged a socket, soft and neat,
The CLI whispered, quick and fleet,
The tray blinked back a tiny cheer,
Whisper hummed the words I hear,
Hop — the app and CLI now meet! 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title 'docs: document IPC workflow and add project structure' directly and specifically summarizes the main changes: adding documentation about IPC workflow and project structure in CLAUDE.md and README.md.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch docs/ipc-and-project-structure

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
CLAUDE.md (1)

150-151: Hard-coded line counts will go stale quickly.

Specific counts ("194 lines") and ranges ("lines 7–42") are maintenance liabilities — they'll be wrong after the first code edit.

♻️ Proposed fix
-**Key files:**-- `apps/tauri/src-tauri/src/ipc.rs` - Socket server implementation (194 lines)-- `apps/tauri/src-tauri/src/cli_installer.rs` - CLI script with socket logic (lines 7-42)+**Key files:**+- `apps/tauri/src-tauri/src/ipc.rs` - Socket server implementation+- `apps/tauri/src-tauri/src/cli_installer.rs` - CLI script with socket logic
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CLAUDE.md` around lines 150 - 151, Remove the hard-coded line counts and
explicit line ranges in the CLAUDE.md entries for
apps/tauri/src-tauri/src/ipc.rs and apps/tauri/src-tauri/src/cli_installer.rs;
instead describe the files generically (e.g., "Socket server implementation" and
"CLI script with socket logic") or use non-precise qualifiers like "≈194 lines"
or "initial lines" so the doc doesn't break when the source changes, and update
the two entries that currently contain "194 lines" and "lines 7-42" accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 101-103: Update the Architecture section reference that currently
says "whisper.rs" to match the new module directory layout shown in the tree:
replace the mention of "whisper.rs" with "whisper/" (or explicitly "whisper/
(module directory with mod.rs and model.rs)") so the docs consistently describe
the whisper module as a directory containing mod.rs and model.rs.
- Line 77: The fenced code block that begins before the directory tree (the
triple backticks surrounding the "arandu/" tree) lacks a language identifier and
triggers MD040; update the opening fence from ``` to a fenced code block with a
language such as ```text or ```plaintext so the directory tree (the "arandu/"
block) is marked as plain text.
---
Nitpick comments:
In `@CLAUDE.md`:
- Around line 150-151: Remove the hard-coded line counts and explicit line
ranges in the CLAUDE.md entries for apps/tauri/src-tauri/src/ipc.rs and
apps/tauri/src-tauri/src/cli_installer.rs; instead describe the files
generically (e.g., "Socket server implementation" and "CLI script with socket
logic") or use non-precise qualifiers like "≈194 lines" or "initial lines" so
the doc doesn't break when the source changes, and update the two entries that
currently contain "194 lines" and "lines 7-42" accordingly.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9cd04e9 and 00c3975.

📒 Files selected for processing (2)
  • CLAUDE.md
  • README.md

Comment threadCLAUDE.md Outdated
Comment threadCLAUDE.md Outdated
- Add language identifier to project structure code block (MD040)
- Update whisper.rs reference to whisper/ directory in Architecture
- Update whisper/ tree to reflect actual submodule files
- Remove hard-coded line counts from Key files section

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 136-154: The section heading and wording conflate two different
scopes: the Unix socket IPC implementation (apps/tauri/src-tauri/src/ipc.rs) is
enabled for all Unix targets (#[cfg(unix)]) while the CLI installer and fallback
flow (apps/tauri/src-tauri/src/cli_installer.rs and the macOS-only build gate in
lib.rs:11) are macOS-only (#[cfg(target_os = "macos")]). Update the
documentation to either rename the heading to something like "Inter-Process
Communication (macOS CLI installer; Unix socket infrastructure)" or split into
two subsections — one describing the Unix socket server and commands (ipc.rs)
and one describing the CLI installer and its macOS-only fallback behavior
(cli_installer.rs and lib.rs). Also clarify the `open` ambiguity by explicitly
distinguishing the IPC `open` command (handled by the socket server) from the
macOS system `open` fallback used by the CLI installer.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 00c3975 and 5fdd730.

📒 Files selected for processing (1)
  • CLAUDE.md

Comment threadCLAUDE.md Outdated
Split IPC documentation into three subsections:
- Socket Server (Unix: macOS + Linux) for ipc.rs
- TCP Server (All Platforms) for tcp_ipc.rs
- CLI Installer (macOS Only) for cli_installer.rs
Disambiguate IPC `open` command from macOS system `open` tool.
Add missing ipc_common.rs and tcp_ipc.rs to project tree and
Architecture section.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 75-118: Update the Project Structure section to remove the
non-existent comments.rs entry, replace the shared/ subtree to list actual files
(style.css, highlight-dark.min.css, highlight-light.min.css, highlight.min.js,
icon.png, icon.svg) instead of a highlight/ directory, and correct the symlink
note in apps/tauri/src/ to indicate symlinks point to individual files under
../../../shared/ (three levels up) rather than a directory at ../../shared/;
keep other entries (TCP port 7474, workflows, whisper files) unchanged.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5fdd730 and 438c503.

📒 Files selected for processing (1)
  • CLAUDE.md

Comment threadCLAUDE.md
Comment on lines +75 to +118
## Project Structure

```text
arandu/
├── .github/
│ └── workflows/
│ ├── auto-tag.yml # Auto-versioning from conventional commits
│ ├── release.yml # GitHub release creation
│ ├── release-tauri.yml # Multi-platform builds (macOS/Linux/Windows)
│ └── deploy-website.yml # Cloudflare Pages deployment
├── apps/
│ ├── macos/ # ⚠️ DEPRECATED - macOS native app (DO NOT USE)
│ └── tauri/ # ✓ Active development - Tauri app
│ ├── src/ # Frontend (vanilla JS + HTML)
│ │ ├── index.html # Full UI with modals, comment system
│ │ ├── main.js # Single entry point
│ │ └── shared/ # Symlink to ../../shared/
│ └── src-tauri/ # Rust backend
│ ├── Cargo.toml
│ ├── tauri.conf.json
│ └── src/
│ ├── lib.rs # Core logic, Tauri commands, app setup
│ ├── ipc_common.rs # Shared IPC types and command processing
│ ├── ipc.rs # Unix socket IPC server (Unix only)
│ ├── tcp_ipc.rs # TCP IPC server (all platforms)
│ ├── tray.rs # System tray integration
│ ├── cli_installer.rs # macOS CLI installation (macOS only)
│ ├── comments.rs # Plan review comments storage
│ └── whisper/ # Voice-to-text module
│ ├── mod.rs
│ ├── audio.rs
│ ├── commands.rs
│ ├── model_manager.rs
│ └── transcriber.rs
├── shared/ # Shared CSS and highlight.js files
│ ├── style.css
│ └── highlight/
├── scripts/
│ ├── set-version.sh # Version management across config files
│ └── build-dev.sh # Local dev builds with git hash
├── website/ # Static landing page (Cloudflare Pages)
├── examples/ # Sample markdown files
└── README.md
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash# Verify specific technical claims in CLAUDE.md project structure and architectureecho"=== TCP port in tcp_ipc.rs ==="
rg -n "7474|TcpListener|bind" apps/tauri/src-tauri/src/tcp_ipc.rs
echo""echo"=== Rust source files in src-tauri/src/ ==="
fd -t f -e rs --max-depth 1 apps/tauri/src-tauri/src | sort
echo""echo"=== Whisper submodule files ==="
fd -t f -e rs apps/tauri/src-tauri/src/whisper | sort
echo""echo"=== GitHub workflow filenames ==="
fd -t f -e yml .github/workflows | sort
echo""echo"=== shared/ top-level contents ==="
fd --max-depth 1 shared | sort
echo""echo"=== apps/tauri/src/shared symlink ==="
ls -la apps/tauri/src/shared 2>/dev/null ||echo"NOT FOUND"

Repository: devitools/arandu

Length of output: 1806


🏁 Script executed:

#!/bin/bashecho"=== Rust source files in src-tauri/src/ ==="
fd . apps/tauri/src-tauri/src --max-depth 1 -t f -e rs | sort
echo""echo"=== Whisper submodule files ==="
fd . apps/tauri/src-tauri/src/whisper -t f -e rs | sort
echo""echo"=== GitHub workflow filenames ==="
fd . .github/workflows -t f -e yml | sort
echo""echo"=== shared/ top-level directory listing ==="
ls -la shared/
echo""echo"=== Check if apps/tauri/src/ contains shared reference ==="
ls -la apps/tauri/src/ 2>/dev/null | grep -i shared ||echo"No 'shared' entry found"

Repository: devitools/arandu

Length of output: 1822


Fix inaccurate project structure claims: remove non-existent comments.rs, correct shared/ layout, and fix symlink documentation.

The following specific claims in the project structure (lines 75–118) conflict with the actual repository:

  1. comments.rs does not exist — This file is listed under apps/tauri/src-tauri/src/ in CLAUDE.md but is absent from the repository. Remove it from the documentation.

  2. shared/ structure is incorrect — CLAUDE.md claims shared/highlight/ as a subdirectory, but the actual structure contains individual files:

    • style.css
    • highlight-dark.min.css, highlight-light.min.css, highlight.min.js (not in a highlight/ subdirectory)
    • icon.png, icon.svg (not documented)
  3. Symlink path and nature are misrepresented — CLAUDE.md states Symlink to ../../shared/, but actual symlinks in apps/tauri/src/ point to individual files at ../../../shared/ (three levels up, not two). The symlinks target specific files, not a directory.

The TCP port 7474 (lines 127, 158) is correctly documented, and all workflow files and whisper submodule files match the project structure as written.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CLAUDE.md` around lines 75 - 118, Update the Project Structure section to
remove the non-existent comments.rs entry, replace the shared/ subtree to list
actual files (style.css, highlight-dark.min.css, highlight-light.min.css,
highlight.min.js, icon.png, icon.svg) instead of a highlight/ directory, and
correct the symlink note in apps/tauri/src/ to indicate symlinks point to
individual files under ../../../shared/ (three levels up) rather than a
directory at ../../shared/; keep other entries (TCP port 7474, workflows,
whisper files) unchanged.

@wilcorrea
wilcorrea merged commit 0f207f9 into mainFeb 24, 2026
1 check passed
@wilcorrea
wilcorrea deleted the docs/ipc-and-project-structure branch February 24, 2026 17:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@wilcorrea
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

docs: document IPC workflow and add project structure - #20

Merged
wilcorrea merged 3 commits into
mainfrom
docs/ipc-and-project-structure
Feb 24, 2026
Merged

docs: document IPC workflow and add project structure#20
wilcorrea merged 3 commits into
mainfrom
docs/ipc-and-project-structure

Conversation

@wilcorrea

@wilcorreawilcorrea commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Added comprehensive Unix domain socket IPC documentation to CLAUDE.md
    • Socket location (~/.arandu/arandu.sock), permissions, and protocol details
    • Complete CLI workflow: socket-first approach with automatic fallback to open command
    • Documented 3 IPC commands: open, ping, show
  • Created new "Project Structure" section in CLAUDE.md with visual folder tree
    • Shows all key directories and files with inline descriptions
    • Clear marking of deprecated apps/macos/ directory
    • Highlights critical backend files: ipc.rs, tray.rs, whisper/
  • Documented system tray functionality in README.md
    • Custom "A" glyph rendering, menu items, window hiding behavior
  • Added "Architecture Overview" section to README.md development guide
    • Backend/frontend structure with key files and communication patterns
  • Strengthened macOS native deprecation warning (Note → IMPORTANT)
  • Added new "Contributing" section to README.md linking to CLAUDE.md
  • Documented conditional compilation patterns (#[cfg(unix)], #[cfg(target_os = "macos")])

Test plan

  • Verify CLAUDE.md renders correctly on GitHub
    • Project structure tree displays properly
    • IPC section formatting is correct
    • Code blocks and inline code render properly
  • Verify README.md renders correctly on GitHub
    • System Tray section displays properly
    • Architecture Overview formatting is correct
    • Contributing section links work
  • Confirm documentation accurately reflects codebase
    • Socket path matches ipc.rs implementation
    • CLI script commands match cli_installer.rs
    • File paths in project structure are accurate

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added a system tray with Show Window and Quit options.
    • Fast CLI ↔ app communication via Unix-domain socket IPC with a TCP fallback and a macOS CLI installer flow.
  • Documentation

    • Detailed IPC, socket location/protocol, and graceful-fallback behavior.
    • Expanded architecture, build/contributing notes, and clear macOS native-deprecation guidance.

…ructure
- Add Unix domain socket IPC documentation (workflow, commands, fallback)
- Create comprehensive project structure section in CLAUDE.md
- Document system tray functionality in README.md
- Strengthen macOS native deprecation warning
- Add architecture overview to README development section
- Document conditional compilation patterns
- Clarify CLI socket-first approach with open fallback
@coderabbitai

coderabbitaiBot commented Feb 24, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Adds Unix-domain socket IPC (Unix-only) and TCP fallback, a macOS CLI installer fast-path, system tray integration notes, a Whisper subtree, public IPC modules in the Tauri backend, and related README/CLAUDE.md documentation including macOS-native deprecation and conditional compilation guidance.

Changes

Cohort / File(s)Summary
Tauri IPC core
apps/tauri/src-tauri/src/ipc_common.rs, apps/tauri/src-tauri/src/ipc.rs, apps/tauri/src-tauri/src/tcp_ipc.rs
Introduced shared IPC types and implementations: Unix domain socket server, TCP fallback server, and shared request/response types. Public API surface expanded for IPC.
Tauri CLI installer & integration
apps/tauri/src-tauri/src/cli_installer.rs, apps/tauri/src-tauri/src/lib.rs
Adds macOS CLI installer/fast-path logic and integrates socket setup/cleanup into Tauri app lifecycle (conditional macOS compilation notes).
Whisper subtree
apps/tauri/src-tauri/src/whisper/...
New directory for Whisper voice-to-text code; moved/organized related modules under a dedicated public subtree.
Documentation
CLAUDE.md, README.md
Added Architecture overview, IPC (Unix socket) protocol & location, CLI-to-app workflow, system tray notes, macOS native deprecation, conditional compilation, and build/dev guidance.
Misc (public API surface)
apps/tauri/src-tauri/src/...
Public-facing IPC transport implementations and CLI installer added to crate exports (visibility changes across new modules).

Sequence Diagram(s)

sequenceDiagram
autonumber
participant CLI as CLI (user)
participant Socket as Unix Domain Socket
participant Tauri as Tauri Backend (Rust)
participant Tray as System Tray / UI
CLI->>Socket: connect to /tmp/<app>.sock and send IpcCommand
Socket->>Tauri: accept connection, deliver IpcCommand
Tauri->>Tauri: parse command via ipc_common, execute handler
Tauri->>Tray: update tray state or notify frontend
Tauri-->>Socket: send IpcResponse
Socket-->>CLI: return response
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰
I nudged a socket, soft and neat,
The CLI whispered, quick and fleet,
The tray blinked back a tiny cheer,
Whisper hummed the words I hear,
Hop — the app and CLI now meet! 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title 'docs: document IPC workflow and add project structure' directly and specifically summarizes the main changes: adding documentation about IPC workflow and project structure in CLAUDE.md and README.md.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch docs/ipc-and-project-structure

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
CLAUDE.md (1)

150-151: Hard-coded line counts will go stale quickly.

Specific counts ("194 lines") and ranges ("lines 7–42") are maintenance liabilities — they'll be wrong after the first code edit.

♻️ Proposed fix
-**Key files:**-- `apps/tauri/src-tauri/src/ipc.rs` - Socket server implementation (194 lines)-- `apps/tauri/src-tauri/src/cli_installer.rs` - CLI script with socket logic (lines 7-42)+**Key files:**+- `apps/tauri/src-tauri/src/ipc.rs` - Socket server implementation+- `apps/tauri/src-tauri/src/cli_installer.rs` - CLI script with socket logic
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CLAUDE.md` around lines 150 - 151, Remove the hard-coded line counts and
explicit line ranges in the CLAUDE.md entries for
apps/tauri/src-tauri/src/ipc.rs and apps/tauri/src-tauri/src/cli_installer.rs;
instead describe the files generically (e.g., "Socket server implementation" and
"CLI script with socket logic") or use non-precise qualifiers like "≈194 lines"
or "initial lines" so the doc doesn't break when the source changes, and update
the two entries that currently contain "194 lines" and "lines 7-42" accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 101-103: Update the Architecture section reference that currently
says "whisper.rs" to match the new module directory layout shown in the tree:
replace the mention of "whisper.rs" with "whisper/" (or explicitly "whisper/
(module directory with mod.rs and model.rs)") so the docs consistently describe
the whisper module as a directory containing mod.rs and model.rs.
- Line 77: The fenced code block that begins before the directory tree (the
triple backticks surrounding the "arandu/" tree) lacks a language identifier and
triggers MD040; update the opening fence from ``` to a fenced code block with a
language such as ```text or ```plaintext so the directory tree (the "arandu/"
block) is marked as plain text.
---
Nitpick comments:
In `@CLAUDE.md`:
- Around line 150-151: Remove the hard-coded line counts and explicit line
ranges in the CLAUDE.md entries for apps/tauri/src-tauri/src/ipc.rs and
apps/tauri/src-tauri/src/cli_installer.rs; instead describe the files
generically (e.g., "Socket server implementation" and "CLI script with socket
logic") or use non-precise qualifiers like "≈194 lines" or "initial lines" so
the doc doesn't break when the source changes, and update the two entries that
currently contain "194 lines" and "lines 7-42" accordingly.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9cd04e9 and 00c3975.

📒 Files selected for processing (2)
  • CLAUDE.md
  • README.md

Comment threadCLAUDE.md Outdated
Comment threadCLAUDE.md Outdated
- Add language identifier to project structure code block (MD040)
- Update whisper.rs reference to whisper/ directory in Architecture
- Update whisper/ tree to reflect actual submodule files
- Remove hard-coded line counts from Key files section

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 136-154: The section heading and wording conflate two different
scopes: the Unix socket IPC implementation (apps/tauri/src-tauri/src/ipc.rs) is
enabled for all Unix targets (#[cfg(unix)]) while the CLI installer and fallback
flow (apps/tauri/src-tauri/src/cli_installer.rs and the macOS-only build gate in
lib.rs:11) are macOS-only (#[cfg(target_os = "macos")]). Update the
documentation to either rename the heading to something like "Inter-Process
Communication (macOS CLI installer; Unix socket infrastructure)" or split into
two subsections — one describing the Unix socket server and commands (ipc.rs)
and one describing the CLI installer and its macOS-only fallback behavior
(cli_installer.rs and lib.rs). Also clarify the `open` ambiguity by explicitly
distinguishing the IPC `open` command (handled by the socket server) from the
macOS system `open` fallback used by the CLI installer.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 00c3975 and 5fdd730.

📒 Files selected for processing (1)
  • CLAUDE.md

Comment threadCLAUDE.md Outdated
Split IPC documentation into three subsections:
- Socket Server (Unix: macOS + Linux) for ipc.rs
- TCP Server (All Platforms) for tcp_ipc.rs
- CLI Installer (macOS Only) for cli_installer.rs
Disambiguate IPC `open` command from macOS system `open` tool.
Add missing ipc_common.rs and tcp_ipc.rs to project tree and
Architecture section.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 75-118: Update the Project Structure section to remove the
non-existent comments.rs entry, replace the shared/ subtree to list actual files
(style.css, highlight-dark.min.css, highlight-light.min.css, highlight.min.js,
icon.png, icon.svg) instead of a highlight/ directory, and correct the symlink
note in apps/tauri/src/ to indicate symlinks point to individual files under
../../../shared/ (three levels up) rather than a directory at ../../shared/;
keep other entries (TCP port 7474, workflows, whisper files) unchanged.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5fdd730 and 438c503.

📒 Files selected for processing (1)
  • CLAUDE.md

Comment threadCLAUDE.md
Comment on lines +75 to +118
## Project Structure

```text
arandu/
├── .github/
│ └── workflows/
│ ├── auto-tag.yml # Auto-versioning from conventional commits
│ ├── release.yml # GitHub release creation
│ ├── release-tauri.yml # Multi-platform builds (macOS/Linux/Windows)
│ └── deploy-website.yml # Cloudflare Pages deployment
├── apps/
│ ├── macos/ # ⚠️ DEPRECATED - macOS native app (DO NOT USE)
│ └── tauri/ # ✓ Active development - Tauri app
│ ├── src/ # Frontend (vanilla JS + HTML)
│ │ ├── index.html # Full UI with modals, comment system
│ │ ├── main.js # Single entry point
│ │ └── shared/ # Symlink to ../../shared/
│ └── src-tauri/ # Rust backend
│ ├── Cargo.toml
│ ├── tauri.conf.json
│ └── src/
│ ├── lib.rs # Core logic, Tauri commands, app setup
│ ├── ipc_common.rs # Shared IPC types and command processing
│ ├── ipc.rs # Unix socket IPC server (Unix only)
│ ├── tcp_ipc.rs # TCP IPC server (all platforms)
│ ├── tray.rs # System tray integration
│ ├── cli_installer.rs # macOS CLI installation (macOS only)
│ ├── comments.rs # Plan review comments storage
│ └── whisper/ # Voice-to-text module
│ ├── mod.rs
│ ├── audio.rs
│ ├── commands.rs
│ ├── model_manager.rs
│ └── transcriber.rs
├── shared/ # Shared CSS and highlight.js files
│ ├── style.css
│ └── highlight/
├── scripts/
│ ├── set-version.sh # Version management across config files
│ └── build-dev.sh # Local dev builds with git hash
├── website/ # Static landing page (Cloudflare Pages)
├── examples/ # Sample markdown files
└── README.md
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash# Verify specific technical claims in CLAUDE.md project structure and architectureecho"=== TCP port in tcp_ipc.rs ==="
rg -n "7474|TcpListener|bind" apps/tauri/src-tauri/src/tcp_ipc.rs
echo""echo"=== Rust source files in src-tauri/src/ ==="
fd -t f -e rs --max-depth 1 apps/tauri/src-tauri/src | sort
echo""echo"=== Whisper submodule files ==="
fd -t f -e rs apps/tauri/src-tauri/src/whisper | sort
echo""echo"=== GitHub workflow filenames ==="
fd -t f -e yml .github/workflows | sort
echo""echo"=== shared/ top-level contents ==="
fd --max-depth 1 shared | sort
echo""echo"=== apps/tauri/src/shared symlink ==="
ls -la apps/tauri/src/shared 2>/dev/null ||echo"NOT FOUND"

Repository: devitools/arandu

Length of output: 1806


🏁 Script executed:

#!/bin/bashecho"=== Rust source files in src-tauri/src/ ==="
fd . apps/tauri/src-tauri/src --max-depth 1 -t f -e rs | sort
echo""echo"=== Whisper submodule files ==="
fd . apps/tauri/src-tauri/src/whisper -t f -e rs | sort
echo""echo"=== GitHub workflow filenames ==="
fd . .github/workflows -t f -e yml | sort
echo""echo"=== shared/ top-level directory listing ==="
ls -la shared/
echo""echo"=== Check if apps/tauri/src/ contains shared reference ==="
ls -la apps/tauri/src/ 2>/dev/null | grep -i shared ||echo"No 'shared' entry found"

Repository: devitools/arandu

Length of output: 1822


Fix inaccurate project structure claims: remove non-existent comments.rs, correct shared/ layout, and fix symlink documentation.

The following specific claims in the project structure (lines 75–118) conflict with the actual repository:

  1. comments.rs does not exist — This file is listed under apps/tauri/src-tauri/src/ in CLAUDE.md but is absent from the repository. Remove it from the documentation.

  2. shared/ structure is incorrect — CLAUDE.md claims shared/highlight/ as a subdirectory, but the actual structure contains individual files:

    • style.css
    • highlight-dark.min.css, highlight-light.min.css, highlight.min.js (not in a highlight/ subdirectory)
    • icon.png, icon.svg (not documented)
  3. Symlink path and nature are misrepresented — CLAUDE.md states Symlink to ../../shared/, but actual symlinks in apps/tauri/src/ point to individual files at ../../../shared/ (three levels up, not two). The symlinks target specific files, not a directory.

The TCP port 7474 (lines 127, 158) is correctly documented, and all workflow files and whisper submodule files match the project structure as written.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CLAUDE.md` around lines 75 - 118, Update the Project Structure section to
remove the non-existent comments.rs entry, replace the shared/ subtree to list
actual files (style.css, highlight-dark.min.css, highlight-light.min.css,
highlight.min.js, icon.png, icon.svg) instead of a highlight/ directory, and
correct the symlink note in apps/tauri/src/ to indicate symlinks point to
individual files under ../../../shared/ (three levels up) rather than a
directory at ../../shared/; keep other entries (TCP port 7474, workflows,
whisper files) unchanged.

@wilcorrea
wilcorrea merged commit 0f207f9 into mainFeb 24, 2026
1 check passed
@wilcorrea
wilcorrea deleted the docs/ipc-and-project-structure branch February 24, 2026 17:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@wilcorrea
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs: document IPC workflow and add project structure - #20

Merged
wilcorrea merged 3 commits into
mainfrom
docs/ipc-and-project-structure
Feb 24, 2026
Merged

docs: document IPC workflow and add project structure#20
wilcorrea merged 3 commits into
mainfrom
docs/ipc-and-project-structure

Conversation

@wilcorrea

@wilcorreawilcorrea commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Added comprehensive Unix domain socket IPC documentation to CLAUDE.md
    • Socket location (~/.arandu/arandu.sock), permissions, and protocol details
    • Complete CLI workflow: socket-first approach with automatic fallback to open command
    • Documented 3 IPC commands: open, ping, show
  • Created new "Project Structure" section in CLAUDE.md with visual folder tree
    • Shows all key directories and files with inline descriptions
    • Clear marking of deprecated apps/macos/ directory
    • Highlights critical backend files: ipc.rs, tray.rs, whisper/
  • Documented system tray functionality in README.md
    • Custom "A" glyph rendering, menu items, window hiding behavior
  • Added "Architecture Overview" section to README.md development guide
    • Backend/frontend structure with key files and communication patterns
  • Strengthened macOS native deprecation warning (Note → IMPORTANT)
  • Added new "Contributing" section to README.md linking to CLAUDE.md
  • Documented conditional compilation patterns (#[cfg(unix)], #[cfg(target_os = "macos")])

Test plan

  • Verify CLAUDE.md renders correctly on GitHub
    • Project structure tree displays properly
    • IPC section formatting is correct
    • Code blocks and inline code render properly
  • Verify README.md renders correctly on GitHub
    • System Tray section displays properly
    • Architecture Overview formatting is correct
    • Contributing section links work
  • Confirm documentation accurately reflects codebase
    • Socket path matches ipc.rs implementation
    • CLI script commands match cli_installer.rs
    • File paths in project structure are accurate

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added a system tray with Show Window and Quit options.
    • Fast CLI ↔ app communication via Unix-domain socket IPC with a TCP fallback and a macOS CLI installer flow.
  • Documentation

    • Detailed IPC, socket location/protocol, and graceful-fallback behavior.
    • Expanded architecture, build/contributing notes, and clear macOS native-deprecation guidance.

…ructure
- Add Unix domain socket IPC documentation (workflow, commands, fallback)
- Create comprehensive project structure section in CLAUDE.md
- Document system tray functionality in README.md
- Strengthen macOS native deprecation warning
- Add architecture overview to README development section
- Document conditional compilation patterns
- Clarify CLI socket-first approach with open fallback
@coderabbitai

coderabbitaiBot commented Feb 24, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Adds Unix-domain socket IPC (Unix-only) and TCP fallback, a macOS CLI installer fast-path, system tray integration notes, a Whisper subtree, public IPC modules in the Tauri backend, and related README/CLAUDE.md documentation including macOS-native deprecation and conditional compilation guidance.

Changes

Cohort / File(s)Summary
Tauri IPC core
apps/tauri/src-tauri/src/ipc_common.rs, apps/tauri/src-tauri/src/ipc.rs, apps/tauri/src-tauri/src/tcp_ipc.rs
Introduced shared IPC types and implementations: Unix domain socket server, TCP fallback server, and shared request/response types. Public API surface expanded for IPC.
Tauri CLI installer & integration
apps/tauri/src-tauri/src/cli_installer.rs, apps/tauri/src-tauri/src/lib.rs
Adds macOS CLI installer/fast-path logic and integrates socket setup/cleanup into Tauri app lifecycle (conditional macOS compilation notes).
Whisper subtree
apps/tauri/src-tauri/src/whisper/...
New directory for Whisper voice-to-text code; moved/organized related modules under a dedicated public subtree.
Documentation
CLAUDE.md, README.md
Added Architecture overview, IPC (Unix socket) protocol & location, CLI-to-app workflow, system tray notes, macOS native deprecation, conditional compilation, and build/dev guidance.
Misc (public API surface)
apps/tauri/src-tauri/src/...
Public-facing IPC transport implementations and CLI installer added to crate exports (visibility changes across new modules).

Sequence Diagram(s)

sequenceDiagram
autonumber
participant CLI as CLI (user)
participant Socket as Unix Domain Socket
participant Tauri as Tauri Backend (Rust)
participant Tray as System Tray / UI
CLI->>Socket: connect to /tmp/<app>.sock and send IpcCommand
Socket->>Tauri: accept connection, deliver IpcCommand
Tauri->>Tauri: parse command via ipc_common, execute handler
Tauri->>Tray: update tray state or notify frontend
Tauri-->>Socket: send IpcResponse
Socket-->>CLI: return response
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰
I nudged a socket, soft and neat,
The CLI whispered, quick and fleet,
The tray blinked back a tiny cheer,
Whisper hummed the words I hear,
Hop — the app and CLI now meet! 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title 'docs: document IPC workflow and add project structure' directly and specifically summarizes the main changes: adding documentation about IPC workflow and project structure in CLAUDE.md and README.md.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch docs/ipc-and-project-structure

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
CLAUDE.md (1)

150-151: Hard-coded line counts will go stale quickly.

Specific counts ("194 lines") and ranges ("lines 7–42") are maintenance liabilities — they'll be wrong after the first code edit.

♻️ Proposed fix
-**Key files:**-- `apps/tauri/src-tauri/src/ipc.rs` - Socket server implementation (194 lines)-- `apps/tauri/src-tauri/src/cli_installer.rs` - CLI script with socket logic (lines 7-42)+**Key files:**+- `apps/tauri/src-tauri/src/ipc.rs` - Socket server implementation+- `apps/tauri/src-tauri/src/cli_installer.rs` - CLI script with socket logic
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CLAUDE.md` around lines 150 - 151, Remove the hard-coded line counts and
explicit line ranges in the CLAUDE.md entries for
apps/tauri/src-tauri/src/ipc.rs and apps/tauri/src-tauri/src/cli_installer.rs;
instead describe the files generically (e.g., "Socket server implementation" and
"CLI script with socket logic") or use non-precise qualifiers like "≈194 lines"
or "initial lines" so the doc doesn't break when the source changes, and update
the two entries that currently contain "194 lines" and "lines 7-42" accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 101-103: Update the Architecture section reference that currently
says "whisper.rs" to match the new module directory layout shown in the tree:
replace the mention of "whisper.rs" with "whisper/" (or explicitly "whisper/
(module directory with mod.rs and model.rs)") so the docs consistently describe
the whisper module as a directory containing mod.rs and model.rs.
- Line 77: The fenced code block that begins before the directory tree (the
triple backticks surrounding the "arandu/" tree) lacks a language identifier and
triggers MD040; update the opening fence from ``` to a fenced code block with a
language such as ```text or ```plaintext so the directory tree (the "arandu/"
block) is marked as plain text.
---
Nitpick comments:
In `@CLAUDE.md`:
- Around line 150-151: Remove the hard-coded line counts and explicit line
ranges in the CLAUDE.md entries for apps/tauri/src-tauri/src/ipc.rs and
apps/tauri/src-tauri/src/cli_installer.rs; instead describe the files
generically (e.g., "Socket server implementation" and "CLI script with socket
logic") or use non-precise qualifiers like "≈194 lines" or "initial lines" so
the doc doesn't break when the source changes, and update the two entries that
currently contain "194 lines" and "lines 7-42" accordingly.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9cd04e9 and 00c3975.

📒 Files selected for processing (2)
  • CLAUDE.md
  • README.md

Comment threadCLAUDE.md Outdated
Comment threadCLAUDE.md Outdated
- Add language identifier to project structure code block (MD040)
- Update whisper.rs reference to whisper/ directory in Architecture
- Update whisper/ tree to reflect actual submodule files
- Remove hard-coded line counts from Key files section

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 136-154: The section heading and wording conflate two different
scopes: the Unix socket IPC implementation (apps/tauri/src-tauri/src/ipc.rs) is
enabled for all Unix targets (#[cfg(unix)]) while the CLI installer and fallback
flow (apps/tauri/src-tauri/src/cli_installer.rs and the macOS-only build gate in
lib.rs:11) are macOS-only (#[cfg(target_os = "macos")]). Update the
documentation to either rename the heading to something like "Inter-Process
Communication (macOS CLI installer; Unix socket infrastructure)" or split into
two subsections — one describing the Unix socket server and commands (ipc.rs)
and one describing the CLI installer and its macOS-only fallback behavior
(cli_installer.rs and lib.rs). Also clarify the `open` ambiguity by explicitly
distinguishing the IPC `open` command (handled by the socket server) from the
macOS system `open` fallback used by the CLI installer.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 00c3975 and 5fdd730.

📒 Files selected for processing (1)
  • CLAUDE.md

Comment threadCLAUDE.md Outdated
Split IPC documentation into three subsections:
- Socket Server (Unix: macOS + Linux) for ipc.rs
- TCP Server (All Platforms) for tcp_ipc.rs
- CLI Installer (macOS Only) for cli_installer.rs
Disambiguate IPC `open` command from macOS system `open` tool.
Add missing ipc_common.rs and tcp_ipc.rs to project tree and
Architecture section.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 75-118: Update the Project Structure section to remove the
non-existent comments.rs entry, replace the shared/ subtree to list actual files
(style.css, highlight-dark.min.css, highlight-light.min.css, highlight.min.js,
icon.png, icon.svg) instead of a highlight/ directory, and correct the symlink
note in apps/tauri/src/ to indicate symlinks point to individual files under
../../../shared/ (three levels up) rather than a directory at ../../shared/;
keep other entries (TCP port 7474, workflows, whisper files) unchanged.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5fdd730 and 438c503.

📒 Files selected for processing (1)
  • CLAUDE.md

Comment threadCLAUDE.md
Comment on lines +75 to +118
## Project Structure

```text
arandu/
├── .github/
│ └── workflows/
│ ├── auto-tag.yml # Auto-versioning from conventional commits
│ ├── release.yml # GitHub release creation
│ ├── release-tauri.yml # Multi-platform builds (macOS/Linux/Windows)
│ └── deploy-website.yml # Cloudflare Pages deployment
├── apps/
│ ├── macos/ # ⚠️ DEPRECATED - macOS native app (DO NOT USE)
│ └── tauri/ # ✓ Active development - Tauri app
│ ├── src/ # Frontend (vanilla JS + HTML)
│ │ ├── index.html # Full UI with modals, comment system
│ │ ├── main.js # Single entry point
│ │ └── shared/ # Symlink to ../../shared/
│ └── src-tauri/ # Rust backend
│ ├── Cargo.toml
│ ├── tauri.conf.json
│ └── src/
│ ├── lib.rs # Core logic, Tauri commands, app setup
│ ├── ipc_common.rs # Shared IPC types and command processing
│ ├── ipc.rs # Unix socket IPC server (Unix only)
│ ├── tcp_ipc.rs # TCP IPC server (all platforms)
│ ├── tray.rs # System tray integration
│ ├── cli_installer.rs # macOS CLI installation (macOS only)
│ ├── comments.rs # Plan review comments storage
│ └── whisper/ # Voice-to-text module
│ ├── mod.rs
│ ├── audio.rs
│ ├── commands.rs
│ ├── model_manager.rs
│ └── transcriber.rs
├── shared/ # Shared CSS and highlight.js files
│ ├── style.css
│ └── highlight/
├── scripts/
│ ├── set-version.sh # Version management across config files
│ └── build-dev.sh # Local dev builds with git hash
├── website/ # Static landing page (Cloudflare Pages)
├── examples/ # Sample markdown files
└── README.md
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash# Verify specific technical claims in CLAUDE.md project structure and architectureecho"=== TCP port in tcp_ipc.rs ==="
rg -n "7474|TcpListener|bind" apps/tauri/src-tauri/src/tcp_ipc.rs
echo""echo"=== Rust source files in src-tauri/src/ ==="
fd -t f -e rs --max-depth 1 apps/tauri/src-tauri/src | sort
echo""echo"=== Whisper submodule files ==="
fd -t f -e rs apps/tauri/src-tauri/src/whisper | sort
echo""echo"=== GitHub workflow filenames ==="
fd -t f -e yml .github/workflows | sort
echo""echo"=== shared/ top-level contents ==="
fd --max-depth 1 shared | sort
echo""echo"=== apps/tauri/src/shared symlink ==="
ls -la apps/tauri/src/shared 2>/dev/null ||echo"NOT FOUND"

Repository: devitools/arandu

Length of output: 1806


🏁 Script executed:

#!/bin/bashecho"=== Rust source files in src-tauri/src/ ==="
fd . apps/tauri/src-tauri/src --max-depth 1 -t f -e rs | sort
echo""echo"=== Whisper submodule files ==="
fd . apps/tauri/src-tauri/src/whisper -t f -e rs | sort
echo""echo"=== GitHub workflow filenames ==="
fd . .github/workflows -t f -e yml | sort
echo""echo"=== shared/ top-level directory listing ==="
ls -la shared/
echo""echo"=== Check if apps/tauri/src/ contains shared reference ==="
ls -la apps/tauri/src/ 2>/dev/null | grep -i shared ||echo"No 'shared' entry found"

Repository: devitools/arandu

Length of output: 1822


Fix inaccurate project structure claims: remove non-existent comments.rs, correct shared/ layout, and fix symlink documentation.

The following specific claims in the project structure (lines 75–118) conflict with the actual repository:

  1. comments.rs does not exist — This file is listed under apps/tauri/src-tauri/src/ in CLAUDE.md but is absent from the repository. Remove it from the documentation.

  2. shared/ structure is incorrect — CLAUDE.md claims shared/highlight/ as a subdirectory, but the actual structure contains individual files:

    • style.css
    • highlight-dark.min.css, highlight-light.min.css, highlight.min.js (not in a highlight/ subdirectory)
    • icon.png, icon.svg (not documented)
  3. Symlink path and nature are misrepresented — CLAUDE.md states Symlink to ../../shared/, but actual symlinks in apps/tauri/src/ point to individual files at ../../../shared/ (three levels up, not two). The symlinks target specific files, not a directory.

The TCP port 7474 (lines 127, 158) is correctly documented, and all workflow files and whisper submodule files match the project structure as written.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CLAUDE.md` around lines 75 - 118, Update the Project Structure section to
remove the non-existent comments.rs entry, replace the shared/ subtree to list
actual files (style.css, highlight-dark.min.css, highlight-light.min.css,
highlight.min.js, icon.png, icon.svg) instead of a highlight/ directory, and
correct the symlink note in apps/tauri/src/ to indicate symlinks point to
individual files under ../../../shared/ (three levels up) rather than a
directory at ../../shared/; keep other entries (TCP port 7474, workflows,
whisper files) unchanged.

@wilcorrea
wilcorrea merged commit 0f207f9 into mainFeb 24, 2026
1 check passed
@wilcorrea
wilcorrea deleted the docs/ipc-and-project-structure branch February 24, 2026 17:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@wilcorrea
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs: document IPC workflow and add project structure - #20

Merged
wilcorrea merged 3 commits into
mainfrom
docs/ipc-and-project-structure
Feb 24, 2026
Merged

docs: document IPC workflow and add project structure#20
wilcorrea merged 3 commits into
mainfrom
docs/ipc-and-project-structure

Conversation

@wilcorrea

@wilcorreawilcorrea commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Added comprehensive Unix domain socket IPC documentation to CLAUDE.md
    • Socket location (~/.arandu/arandu.sock), permissions, and protocol details
    • Complete CLI workflow: socket-first approach with automatic fallback to open command
    • Documented 3 IPC commands: open, ping, show
  • Created new "Project Structure" section in CLAUDE.md with visual folder tree
    • Shows all key directories and files with inline descriptions
    • Clear marking of deprecated apps/macos/ directory
    • Highlights critical backend files: ipc.rs, tray.rs, whisper/
  • Documented system tray functionality in README.md
    • Custom "A" glyph rendering, menu items, window hiding behavior
  • Added "Architecture Overview" section to README.md development guide
    • Backend/frontend structure with key files and communication patterns
  • Strengthened macOS native deprecation warning (Note → IMPORTANT)
  • Added new "Contributing" section to README.md linking to CLAUDE.md
  • Documented conditional compilation patterns (#[cfg(unix)], #[cfg(target_os = "macos")])

Test plan

  • Verify CLAUDE.md renders correctly on GitHub
    • Project structure tree displays properly
    • IPC section formatting is correct
    • Code blocks and inline code render properly
  • Verify README.md renders correctly on GitHub
    • System Tray section displays properly
    • Architecture Overview formatting is correct
    • Contributing section links work
  • Confirm documentation accurately reflects codebase
    • Socket path matches ipc.rs implementation
    • CLI script commands match cli_installer.rs
    • File paths in project structure are accurate

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added a system tray with Show Window and Quit options.
    • Fast CLI ↔ app communication via Unix-domain socket IPC with a TCP fallback and a macOS CLI installer flow.
  • Documentation

    • Detailed IPC, socket location/protocol, and graceful-fallback behavior.
    • Expanded architecture, build/contributing notes, and clear macOS native-deprecation guidance.

…ructure
- Add Unix domain socket IPC documentation (workflow, commands, fallback)
- Create comprehensive project structure section in CLAUDE.md
- Document system tray functionality in README.md
- Strengthen macOS native deprecation warning
- Add architecture overview to README development section
- Document conditional compilation patterns
- Clarify CLI socket-first approach with open fallback
@coderabbitai

coderabbitaiBot commented Feb 24, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Adds Unix-domain socket IPC (Unix-only) and TCP fallback, a macOS CLI installer fast-path, system tray integration notes, a Whisper subtree, public IPC modules in the Tauri backend, and related README/CLAUDE.md documentation including macOS-native deprecation and conditional compilation guidance.

Changes

Cohort / File(s)Summary
Tauri IPC core
apps/tauri/src-tauri/src/ipc_common.rs, apps/tauri/src-tauri/src/ipc.rs, apps/tauri/src-tauri/src/tcp_ipc.rs
Introduced shared IPC types and implementations: Unix domain socket server, TCP fallback server, and shared request/response types. Public API surface expanded for IPC.
Tauri CLI installer & integration
apps/tauri/src-tauri/src/cli_installer.rs, apps/tauri/src-tauri/src/lib.rs
Adds macOS CLI installer/fast-path logic and integrates socket setup/cleanup into Tauri app lifecycle (conditional macOS compilation notes).
Whisper subtree
apps/tauri/src-tauri/src/whisper/...
New directory for Whisper voice-to-text code; moved/organized related modules under a dedicated public subtree.
Documentation
CLAUDE.md, README.md
Added Architecture overview, IPC (Unix socket) protocol & location, CLI-to-app workflow, system tray notes, macOS native deprecation, conditional compilation, and build/dev guidance.
Misc (public API surface)
apps/tauri/src-tauri/src/...
Public-facing IPC transport implementations and CLI installer added to crate exports (visibility changes across new modules).

Sequence Diagram(s)

sequenceDiagram
autonumber
participant CLI as CLI (user)
participant Socket as Unix Domain Socket
participant Tauri as Tauri Backend (Rust)
participant Tray as System Tray / UI
CLI->>Socket: connect to /tmp/<app>.sock and send IpcCommand
Socket->>Tauri: accept connection, deliver IpcCommand
Tauri->>Tauri: parse command via ipc_common, execute handler
Tauri->>Tray: update tray state or notify frontend
Tauri-->>Socket: send IpcResponse
Socket-->>CLI: return response
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰
I nudged a socket, soft and neat,
The CLI whispered, quick and fleet,
The tray blinked back a tiny cheer,
Whisper hummed the words I hear,
Hop — the app and CLI now meet! 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title 'docs: document IPC workflow and add project structure' directly and specifically summarizes the main changes: adding documentation about IPC workflow and project structure in CLAUDE.md and README.md.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch docs/ipc-and-project-structure

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
CLAUDE.md (1)

150-151: Hard-coded line counts will go stale quickly.

Specific counts ("194 lines") and ranges ("lines 7–42") are maintenance liabilities — they'll be wrong after the first code edit.

♻️ Proposed fix
-**Key files:**-- `apps/tauri/src-tauri/src/ipc.rs` - Socket server implementation (194 lines)-- `apps/tauri/src-tauri/src/cli_installer.rs` - CLI script with socket logic (lines 7-42)+**Key files:**+- `apps/tauri/src-tauri/src/ipc.rs` - Socket server implementation+- `apps/tauri/src-tauri/src/cli_installer.rs` - CLI script with socket logic
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CLAUDE.md` around lines 150 - 151, Remove the hard-coded line counts and
explicit line ranges in the CLAUDE.md entries for
apps/tauri/src-tauri/src/ipc.rs and apps/tauri/src-tauri/src/cli_installer.rs;
instead describe the files generically (e.g., "Socket server implementation" and
"CLI script with socket logic") or use non-precise qualifiers like "≈194 lines"
or "initial lines" so the doc doesn't break when the source changes, and update
the two entries that currently contain "194 lines" and "lines 7-42" accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 101-103: Update the Architecture section reference that currently
says "whisper.rs" to match the new module directory layout shown in the tree:
replace the mention of "whisper.rs" with "whisper/" (or explicitly "whisper/
(module directory with mod.rs and model.rs)") so the docs consistently describe
the whisper module as a directory containing mod.rs and model.rs.
- Line 77: The fenced code block that begins before the directory tree (the
triple backticks surrounding the "arandu/" tree) lacks a language identifier and
triggers MD040; update the opening fence from ``` to a fenced code block with a
language such as ```text or ```plaintext so the directory tree (the "arandu/"
block) is marked as plain text.
---
Nitpick comments:
In `@CLAUDE.md`:
- Around line 150-151: Remove the hard-coded line counts and explicit line
ranges in the CLAUDE.md entries for apps/tauri/src-tauri/src/ipc.rs and
apps/tauri/src-tauri/src/cli_installer.rs; instead describe the files
generically (e.g., "Socket server implementation" and "CLI script with socket
logic") or use non-precise qualifiers like "≈194 lines" or "initial lines" so
the doc doesn't break when the source changes, and update the two entries that
currently contain "194 lines" and "lines 7-42" accordingly.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9cd04e9 and 00c3975.

📒 Files selected for processing (2)
  • CLAUDE.md
  • README.md

Comment threadCLAUDE.md Outdated
Comment threadCLAUDE.md Outdated
- Add language identifier to project structure code block (MD040)
- Update whisper.rs reference to whisper/ directory in Architecture
- Update whisper/ tree to reflect actual submodule files
- Remove hard-coded line counts from Key files section

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 136-154: The section heading and wording conflate two different
scopes: the Unix socket IPC implementation (apps/tauri/src-tauri/src/ipc.rs) is
enabled for all Unix targets (#[cfg(unix)]) while the CLI installer and fallback
flow (apps/tauri/src-tauri/src/cli_installer.rs and the macOS-only build gate in
lib.rs:11) are macOS-only (#[cfg(target_os = "macos")]). Update the
documentation to either rename the heading to something like "Inter-Process
Communication (macOS CLI installer; Unix socket infrastructure)" or split into
two subsections — one describing the Unix socket server and commands (ipc.rs)
and one describing the CLI installer and its macOS-only fallback behavior
(cli_installer.rs and lib.rs). Also clarify the `open` ambiguity by explicitly
distinguishing the IPC `open` command (handled by the socket server) from the
macOS system `open` fallback used by the CLI installer.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 00c3975 and 5fdd730.

📒 Files selected for processing (1)
  • CLAUDE.md

Comment threadCLAUDE.md Outdated
Split IPC documentation into three subsections:
- Socket Server (Unix: macOS + Linux) for ipc.rs
- TCP Server (All Platforms) for tcp_ipc.rs
- CLI Installer (macOS Only) for cli_installer.rs
Disambiguate IPC `open` command from macOS system `open` tool.
Add missing ipc_common.rs and tcp_ipc.rs to project tree and
Architecture section.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 75-118: Update the Project Structure section to remove the
non-existent comments.rs entry, replace the shared/ subtree to list actual files
(style.css, highlight-dark.min.css, highlight-light.min.css, highlight.min.js,
icon.png, icon.svg) instead of a highlight/ directory, and correct the symlink
note in apps/tauri/src/ to indicate symlinks point to individual files under
../../../shared/ (three levels up) rather than a directory at ../../shared/;
keep other entries (TCP port 7474, workflows, whisper files) unchanged.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5fdd730 and 438c503.

📒 Files selected for processing (1)
  • CLAUDE.md

Comment threadCLAUDE.md
Comment on lines +75 to +118
## Project Structure

```text
arandu/
├── .github/
│ └── workflows/
│ ├── auto-tag.yml # Auto-versioning from conventional commits
│ ├── release.yml # GitHub release creation
│ ├── release-tauri.yml # Multi-platform builds (macOS/Linux/Windows)
│ └── deploy-website.yml # Cloudflare Pages deployment
├── apps/
│ ├── macos/ # ⚠️ DEPRECATED - macOS native app (DO NOT USE)
│ └── tauri/ # ✓ Active development - Tauri app
│ ├── src/ # Frontend (vanilla JS + HTML)
│ │ ├── index.html # Full UI with modals, comment system
│ │ ├── main.js # Single entry point
│ │ └── shared/ # Symlink to ../../shared/
│ └── src-tauri/ # Rust backend
│ ├── Cargo.toml
│ ├── tauri.conf.json
│ └── src/
│ ├── lib.rs # Core logic, Tauri commands, app setup
│ ├── ipc_common.rs # Shared IPC types and command processing
│ ├── ipc.rs # Unix socket IPC server (Unix only)
│ ├── tcp_ipc.rs # TCP IPC server (all platforms)
│ ├── tray.rs # System tray integration
│ ├── cli_installer.rs # macOS CLI installation (macOS only)
│ ├── comments.rs # Plan review comments storage
│ └── whisper/ # Voice-to-text module
│ ├── mod.rs
│ ├── audio.rs
│ ├── commands.rs
│ ├── model_manager.rs
│ └── transcriber.rs
├── shared/ # Shared CSS and highlight.js files
│ ├── style.css
│ └── highlight/
├── scripts/
│ ├── set-version.sh # Version management across config files
│ └── build-dev.sh # Local dev builds with git hash
├── website/ # Static landing page (Cloudflare Pages)
├── examples/ # Sample markdown files
└── README.md
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash# Verify specific technical claims in CLAUDE.md project structure and architectureecho"=== TCP port in tcp_ipc.rs ==="
rg -n "7474|TcpListener|bind" apps/tauri/src-tauri/src/tcp_ipc.rs
echo""echo"=== Rust source files in src-tauri/src/ ==="
fd -t f -e rs --max-depth 1 apps/tauri/src-tauri/src | sort
echo""echo"=== Whisper submodule files ==="
fd -t f -e rs apps/tauri/src-tauri/src/whisper | sort
echo""echo"=== GitHub workflow filenames ==="
fd -t f -e yml .github/workflows | sort
echo""echo"=== shared/ top-level contents ==="
fd --max-depth 1 shared | sort
echo""echo"=== apps/tauri/src/shared symlink ==="
ls -la apps/tauri/src/shared 2>/dev/null ||echo"NOT FOUND"

Repository: devitools/arandu

Length of output: 1806


🏁 Script executed:

#!/bin/bashecho"=== Rust source files in src-tauri/src/ ==="
fd . apps/tauri/src-tauri/src --max-depth 1 -t f -e rs | sort
echo""echo"=== Whisper submodule files ==="
fd . apps/tauri/src-tauri/src/whisper -t f -e rs | sort
echo""echo"=== GitHub workflow filenames ==="
fd . .github/workflows -t f -e yml | sort
echo""echo"=== shared/ top-level directory listing ==="
ls -la shared/
echo""echo"=== Check if apps/tauri/src/ contains shared reference ==="
ls -la apps/tauri/src/ 2>/dev/null | grep -i shared ||echo"No 'shared' entry found"

Repository: devitools/arandu

Length of output: 1822


Fix inaccurate project structure claims: remove non-existent comments.rs, correct shared/ layout, and fix symlink documentation.

The following specific claims in the project structure (lines 75–118) conflict with the actual repository:

  1. comments.rs does not exist — This file is listed under apps/tauri/src-tauri/src/ in CLAUDE.md but is absent from the repository. Remove it from the documentation.

  2. shared/ structure is incorrect — CLAUDE.md claims shared/highlight/ as a subdirectory, but the actual structure contains individual files:

    • style.css
    • highlight-dark.min.css, highlight-light.min.css, highlight.min.js (not in a highlight/ subdirectory)
    • icon.png, icon.svg (not documented)
  3. Symlink path and nature are misrepresented — CLAUDE.md states Symlink to ../../shared/, but actual symlinks in apps/tauri/src/ point to individual files at ../../../shared/ (three levels up, not two). The symlinks target specific files, not a directory.

The TCP port 7474 (lines 127, 158) is correctly documented, and all workflow files and whisper submodule files match the project structure as written.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CLAUDE.md` around lines 75 - 118, Update the Project Structure section to
remove the non-existent comments.rs entry, replace the shared/ subtree to list
actual files (style.css, highlight-dark.min.css, highlight-light.min.css,
highlight.min.js, icon.png, icon.svg) instead of a highlight/ directory, and
correct the symlink note in apps/tauri/src/ to indicate symlinks point to
individual files under ../../../shared/ (three levels up) rather than a
directory at ../../shared/; keep other entries (TCP port 7474, workflows,
whisper files) unchanged.

@wilcorrea
wilcorrea merged commit 0f207f9 into mainFeb 24, 2026
1 check passed
@wilcorrea
wilcorrea deleted the docs/ipc-and-project-structure branch February 24, 2026 17:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@wilcorrea
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

docs: document IPC workflow and add project structure - #20

Merged
wilcorrea merged 3 commits into
mainfrom
docs/ipc-and-project-structure
Feb 24, 2026
Merged

docs: document IPC workflow and add project structure#20
wilcorrea merged 3 commits into
mainfrom
docs/ipc-and-project-structure

Conversation

@wilcorrea

@wilcorreawilcorrea commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Added comprehensive Unix domain socket IPC documentation to CLAUDE.md
    • Socket location (~/.arandu/arandu.sock), permissions, and protocol details
    • Complete CLI workflow: socket-first approach with automatic fallback to open command
    • Documented 3 IPC commands: open, ping, show
  • Created new "Project Structure" section in CLAUDE.md with visual folder tree
    • Shows all key directories and files with inline descriptions
    • Clear marking of deprecated apps/macos/ directory
    • Highlights critical backend files: ipc.rs, tray.rs, whisper/
  • Documented system tray functionality in README.md
    • Custom "A" glyph rendering, menu items, window hiding behavior
  • Added "Architecture Overview" section to README.md development guide
    • Backend/frontend structure with key files and communication patterns
  • Strengthened macOS native deprecation warning (Note → IMPORTANT)
  • Added new "Contributing" section to README.md linking to CLAUDE.md
  • Documented conditional compilation patterns (#[cfg(unix)], #[cfg(target_os = "macos")])

Test plan

  • Verify CLAUDE.md renders correctly on GitHub
    • Project structure tree displays properly
    • IPC section formatting is correct
    • Code blocks and inline code render properly
  • Verify README.md renders correctly on GitHub
    • System Tray section displays properly
    • Architecture Overview formatting is correct
    • Contributing section links work
  • Confirm documentation accurately reflects codebase
    • Socket path matches ipc.rs implementation
    • CLI script commands match cli_installer.rs
    • File paths in project structure are accurate

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added a system tray with Show Window and Quit options.
    • Fast CLI ↔ app communication via Unix-domain socket IPC with a TCP fallback and a macOS CLI installer flow.
  • Documentation

    • Detailed IPC, socket location/protocol, and graceful-fallback behavior.
    • Expanded architecture, build/contributing notes, and clear macOS native-deprecation guidance.

…ructure
- Add Unix domain socket IPC documentation (workflow, commands, fallback)
- Create comprehensive project structure section in CLAUDE.md
- Document system tray functionality in README.md
- Strengthen macOS native deprecation warning
- Add architecture overview to README development section
- Document conditional compilation patterns
- Clarify CLI socket-first approach with open fallback
@coderabbitai

coderabbitaiBot commented Feb 24, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Adds Unix-domain socket IPC (Unix-only) and TCP fallback, a macOS CLI installer fast-path, system tray integration notes, a Whisper subtree, public IPC modules in the Tauri backend, and related README/CLAUDE.md documentation including macOS-native deprecation and conditional compilation guidance.

Changes

Cohort / File(s)Summary
Tauri IPC core
apps/tauri/src-tauri/src/ipc_common.rs, apps/tauri/src-tauri/src/ipc.rs, apps/tauri/src-tauri/src/tcp_ipc.rs
Introduced shared IPC types and implementations: Unix domain socket server, TCP fallback server, and shared request/response types. Public API surface expanded for IPC.
Tauri CLI installer & integration
apps/tauri/src-tauri/src/cli_installer.rs, apps/tauri/src-tauri/src/lib.rs
Adds macOS CLI installer/fast-path logic and integrates socket setup/cleanup into Tauri app lifecycle (conditional macOS compilation notes).
Whisper subtree
apps/tauri/src-tauri/src/whisper/...
New directory for Whisper voice-to-text code; moved/organized related modules under a dedicated public subtree.
Documentation
CLAUDE.md, README.md
Added Architecture overview, IPC (Unix socket) protocol & location, CLI-to-app workflow, system tray notes, macOS native deprecation, conditional compilation, and build/dev guidance.
Misc (public API surface)
apps/tauri/src-tauri/src/...
Public-facing IPC transport implementations and CLI installer added to crate exports (visibility changes across new modules).

Sequence Diagram(s)

sequenceDiagram
autonumber
participant CLI as CLI (user)
participant Socket as Unix Domain Socket
participant Tauri as Tauri Backend (Rust)
participant Tray as System Tray / UI
CLI->>Socket: connect to /tmp/<app>.sock and send IpcCommand
Socket->>Tauri: accept connection, deliver IpcCommand
Tauri->>Tauri: parse command via ipc_common, execute handler
Tauri->>Tray: update tray state or notify frontend
Tauri-->>Socket: send IpcResponse
Socket-->>CLI: return response
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰
I nudged a socket, soft and neat,
The CLI whispered, quick and fleet,
The tray blinked back a tiny cheer,
Whisper hummed the words I hear,
Hop — the app and CLI now meet! 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title 'docs: document IPC workflow and add project structure' directly and specifically summarizes the main changes: adding documentation about IPC workflow and project structure in CLAUDE.md and README.md.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch docs/ipc-and-project-structure

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
CLAUDE.md (1)

150-151: Hard-coded line counts will go stale quickly.

Specific counts ("194 lines") and ranges ("lines 7–42") are maintenance liabilities — they'll be wrong after the first code edit.

♻️ Proposed fix
-**Key files:**-- `apps/tauri/src-tauri/src/ipc.rs` - Socket server implementation (194 lines)-- `apps/tauri/src-tauri/src/cli_installer.rs` - CLI script with socket logic (lines 7-42)+**Key files:**+- `apps/tauri/src-tauri/src/ipc.rs` - Socket server implementation+- `apps/tauri/src-tauri/src/cli_installer.rs` - CLI script with socket logic
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CLAUDE.md` around lines 150 - 151, Remove the hard-coded line counts and
explicit line ranges in the CLAUDE.md entries for
apps/tauri/src-tauri/src/ipc.rs and apps/tauri/src-tauri/src/cli_installer.rs;
instead describe the files generically (e.g., "Socket server implementation" and
"CLI script with socket logic") or use non-precise qualifiers like "≈194 lines"
or "initial lines" so the doc doesn't break when the source changes, and update
the two entries that currently contain "194 lines" and "lines 7-42" accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 101-103: Update the Architecture section reference that currently
says "whisper.rs" to match the new module directory layout shown in the tree:
replace the mention of "whisper.rs" with "whisper/" (or explicitly "whisper/
(module directory with mod.rs and model.rs)") so the docs consistently describe
the whisper module as a directory containing mod.rs and model.rs.
- Line 77: The fenced code block that begins before the directory tree (the
triple backticks surrounding the "arandu/" tree) lacks a language identifier and
triggers MD040; update the opening fence from ``` to a fenced code block with a
language such as ```text or ```plaintext so the directory tree (the "arandu/"
block) is marked as plain text.
---
Nitpick comments:
In `@CLAUDE.md`:
- Around line 150-151: Remove the hard-coded line counts and explicit line
ranges in the CLAUDE.md entries for apps/tauri/src-tauri/src/ipc.rs and
apps/tauri/src-tauri/src/cli_installer.rs; instead describe the files
generically (e.g., "Socket server implementation" and "CLI script with socket
logic") or use non-precise qualifiers like "≈194 lines" or "initial lines" so
the doc doesn't break when the source changes, and update the two entries that
currently contain "194 lines" and "lines 7-42" accordingly.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9cd04e9 and 00c3975.

📒 Files selected for processing (2)
  • CLAUDE.md
  • README.md

Comment threadCLAUDE.md Outdated
Comment threadCLAUDE.md Outdated
- Add language identifier to project structure code block (MD040)
- Update whisper.rs reference to whisper/ directory in Architecture
- Update whisper/ tree to reflect actual submodule files
- Remove hard-coded line counts from Key files section

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 136-154: The section heading and wording conflate two different
scopes: the Unix socket IPC implementation (apps/tauri/src-tauri/src/ipc.rs) is
enabled for all Unix targets (#[cfg(unix)]) while the CLI installer and fallback
flow (apps/tauri/src-tauri/src/cli_installer.rs and the macOS-only build gate in
lib.rs:11) are macOS-only (#[cfg(target_os = "macos")]). Update the
documentation to either rename the heading to something like "Inter-Process
Communication (macOS CLI installer; Unix socket infrastructure)" or split into
two subsections — one describing the Unix socket server and commands (ipc.rs)
and one describing the CLI installer and its macOS-only fallback behavior
(cli_installer.rs and lib.rs). Also clarify the `open` ambiguity by explicitly
distinguishing the IPC `open` command (handled by the socket server) from the
macOS system `open` fallback used by the CLI installer.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 00c3975 and 5fdd730.

📒 Files selected for processing (1)
  • CLAUDE.md

Comment threadCLAUDE.md Outdated
Split IPC documentation into three subsections:
- Socket Server (Unix: macOS + Linux) for ipc.rs
- TCP Server (All Platforms) for tcp_ipc.rs
- CLI Installer (macOS Only) for cli_installer.rs
Disambiguate IPC `open` command from macOS system `open` tool.
Add missing ipc_common.rs and tcp_ipc.rs to project tree and
Architecture section.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 75-118: Update the Project Structure section to remove the
non-existent comments.rs entry, replace the shared/ subtree to list actual files
(style.css, highlight-dark.min.css, highlight-light.min.css, highlight.min.js,
icon.png, icon.svg) instead of a highlight/ directory, and correct the symlink
note in apps/tauri/src/ to indicate symlinks point to individual files under
../../../shared/ (three levels up) rather than a directory at ../../shared/;
keep other entries (TCP port 7474, workflows, whisper files) unchanged.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5fdd730 and 438c503.

📒 Files selected for processing (1)
  • CLAUDE.md

Comment threadCLAUDE.md
Comment on lines +75 to +118
## Project Structure

```text
arandu/
├── .github/
│ └── workflows/
│ ├── auto-tag.yml # Auto-versioning from conventional commits
│ ├── release.yml # GitHub release creation
│ ├── release-tauri.yml # Multi-platform builds (macOS/Linux/Windows)
│ └── deploy-website.yml # Cloudflare Pages deployment
├── apps/
│ ├── macos/ # ⚠️ DEPRECATED - macOS native app (DO NOT USE)
│ └── tauri/ # ✓ Active development - Tauri app
│ ├── src/ # Frontend (vanilla JS + HTML)
│ │ ├── index.html # Full UI with modals, comment system
│ │ ├── main.js # Single entry point
│ │ └── shared/ # Symlink to ../../shared/
│ └── src-tauri/ # Rust backend
│ ├── Cargo.toml
│ ├── tauri.conf.json
│ └── src/
│ ├── lib.rs # Core logic, Tauri commands, app setup
│ ├── ipc_common.rs # Shared IPC types and command processing
│ ├── ipc.rs # Unix socket IPC server (Unix only)
│ ├── tcp_ipc.rs # TCP IPC server (all platforms)
│ ├── tray.rs # System tray integration
│ ├── cli_installer.rs # macOS CLI installation (macOS only)
│ ├── comments.rs # Plan review comments storage
│ └── whisper/ # Voice-to-text module
│ ├── mod.rs
│ ├── audio.rs
│ ├── commands.rs
│ ├── model_manager.rs
│ └── transcriber.rs
├── shared/ # Shared CSS and highlight.js files
│ ├── style.css
│ └── highlight/
├── scripts/
│ ├── set-version.sh # Version management across config files
│ └── build-dev.sh # Local dev builds with git hash
├── website/ # Static landing page (Cloudflare Pages)
├── examples/ # Sample markdown files
└── README.md
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash# Verify specific technical claims in CLAUDE.md project structure and architectureecho"=== TCP port in tcp_ipc.rs ==="
rg -n "7474|TcpListener|bind" apps/tauri/src-tauri/src/tcp_ipc.rs
echo""echo"=== Rust source files in src-tauri/src/ ==="
fd -t f -e rs --max-depth 1 apps/tauri/src-tauri/src | sort
echo""echo"=== Whisper submodule files ==="
fd -t f -e rs apps/tauri/src-tauri/src/whisper | sort
echo""echo"=== GitHub workflow filenames ==="
fd -t f -e yml .github/workflows | sort
echo""echo"=== shared/ top-level contents ==="
fd --max-depth 1 shared | sort
echo""echo"=== apps/tauri/src/shared symlink ==="
ls -la apps/tauri/src/shared 2>/dev/null ||echo"NOT FOUND"

Repository: devitools/arandu

Length of output: 1806


🏁 Script executed:

#!/bin/bashecho"=== Rust source files in src-tauri/src/ ==="
fd . apps/tauri/src-tauri/src --max-depth 1 -t f -e rs | sort
echo""echo"=== Whisper submodule files ==="
fd . apps/tauri/src-tauri/src/whisper -t f -e rs | sort
echo""echo"=== GitHub workflow filenames ==="
fd . .github/workflows -t f -e yml | sort
echo""echo"=== shared/ top-level directory listing ==="
ls -la shared/
echo""echo"=== Check if apps/tauri/src/ contains shared reference ==="
ls -la apps/tauri/src/ 2>/dev/null | grep -i shared ||echo"No 'shared' entry found"

Repository: devitools/arandu

Length of output: 1822


Fix inaccurate project structure claims: remove non-existent comments.rs, correct shared/ layout, and fix symlink documentation.

The following specific claims in the project structure (lines 75–118) conflict with the actual repository:

  1. comments.rs does not exist — This file is listed under apps/tauri/src-tauri/src/ in CLAUDE.md but is absent from the repository. Remove it from the documentation.

  2. shared/ structure is incorrect — CLAUDE.md claims shared/highlight/ as a subdirectory, but the actual structure contains individual files:

    • style.css
    • highlight-dark.min.css, highlight-light.min.css, highlight.min.js (not in a highlight/ subdirectory)
    • icon.png, icon.svg (not documented)
  3. Symlink path and nature are misrepresented — CLAUDE.md states Symlink to ../../shared/, but actual symlinks in apps/tauri/src/ point to individual files at ../../../shared/ (three levels up, not two). The symlinks target specific files, not a directory.

The TCP port 7474 (lines 127, 158) is correctly documented, and all workflow files and whisper submodule files match the project structure as written.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CLAUDE.md` around lines 75 - 118, Update the Project Structure section to
remove the non-existent comments.rs entry, replace the shared/ subtree to list
actual files (style.css, highlight-dark.min.css, highlight-light.min.css,
highlight.min.js, icon.png, icon.svg) instead of a highlight/ directory, and
correct the symlink note in apps/tauri/src/ to indicate symlinks point to
individual files under ../../../shared/ (three levels up) rather than a
directory at ../../shared/; keep other entries (TCP port 7474, workflows,
whisper files) unchanged.

@wilcorrea
wilcorrea merged commit 0f207f9 into mainFeb 24, 2026
1 check passed
@wilcorrea
wilcorrea deleted the docs/ipc-and-project-structure branch February 24, 2026 17:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@wilcorrea
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs: document IPC workflow and add project structure - #20

Merged
wilcorrea merged 3 commits into
mainfrom
docs/ipc-and-project-structure
Feb 24, 2026
Merged

docs: document IPC workflow and add project structure#20
wilcorrea merged 3 commits into
mainfrom
docs/ipc-and-project-structure

Conversation

@wilcorrea

@wilcorreawilcorrea commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Added comprehensive Unix domain socket IPC documentation to CLAUDE.md
    • Socket location (~/.arandu/arandu.sock), permissions, and protocol details
    • Complete CLI workflow: socket-first approach with automatic fallback to open command
    • Documented 3 IPC commands: open, ping, show
  • Created new "Project Structure" section in CLAUDE.md with visual folder tree
    • Shows all key directories and files with inline descriptions
    • Clear marking of deprecated apps/macos/ directory
    • Highlights critical backend files: ipc.rs, tray.rs, whisper/
  • Documented system tray functionality in README.md
    • Custom "A" glyph rendering, menu items, window hiding behavior
  • Added "Architecture Overview" section to README.md development guide
    • Backend/frontend structure with key files and communication patterns
  • Strengthened macOS native deprecation warning (Note → IMPORTANT)
  • Added new "Contributing" section to README.md linking to CLAUDE.md
  • Documented conditional compilation patterns (#[cfg(unix)], #[cfg(target_os = "macos")])

Test plan

  • Verify CLAUDE.md renders correctly on GitHub
    • Project structure tree displays properly
    • IPC section formatting is correct
    • Code blocks and inline code render properly
  • Verify README.md renders correctly on GitHub
    • System Tray section displays properly
    • Architecture Overview formatting is correct
    • Contributing section links work
  • Confirm documentation accurately reflects codebase
    • Socket path matches ipc.rs implementation
    • CLI script commands match cli_installer.rs
    • File paths in project structure are accurate

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added a system tray with Show Window and Quit options.
    • Fast CLI ↔ app communication via Unix-domain socket IPC with a TCP fallback and a macOS CLI installer flow.
  • Documentation

    • Detailed IPC, socket location/protocol, and graceful-fallback behavior.
    • Expanded architecture, build/contributing notes, and clear macOS native-deprecation guidance.

…ructure
- Add Unix domain socket IPC documentation (workflow, commands, fallback)
- Create comprehensive project structure section in CLAUDE.md
- Document system tray functionality in README.md
- Strengthen macOS native deprecation warning
- Add architecture overview to README development section
- Document conditional compilation patterns
- Clarify CLI socket-first approach with open fallback
@coderabbitai

coderabbitaiBot commented Feb 24, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Adds Unix-domain socket IPC (Unix-only) and TCP fallback, a macOS CLI installer fast-path, system tray integration notes, a Whisper subtree, public IPC modules in the Tauri backend, and related README/CLAUDE.md documentation including macOS-native deprecation and conditional compilation guidance.

Changes

Cohort / File(s)Summary
Tauri IPC core
apps/tauri/src-tauri/src/ipc_common.rs, apps/tauri/src-tauri/src/ipc.rs, apps/tauri/src-tauri/src/tcp_ipc.rs
Introduced shared IPC types and implementations: Unix domain socket server, TCP fallback server, and shared request/response types. Public API surface expanded for IPC.
Tauri CLI installer & integration
apps/tauri/src-tauri/src/cli_installer.rs, apps/tauri/src-tauri/src/lib.rs
Adds macOS CLI installer/fast-path logic and integrates socket setup/cleanup into Tauri app lifecycle (conditional macOS compilation notes).
Whisper subtree
apps/tauri/src-tauri/src/whisper/...
New directory for Whisper voice-to-text code; moved/organized related modules under a dedicated public subtree.
Documentation
CLAUDE.md, README.md
Added Architecture overview, IPC (Unix socket) protocol & location, CLI-to-app workflow, system tray notes, macOS native deprecation, conditional compilation, and build/dev guidance.
Misc (public API surface)
apps/tauri/src-tauri/src/...
Public-facing IPC transport implementations and CLI installer added to crate exports (visibility changes across new modules).

Sequence Diagram(s)

sequenceDiagram
autonumber
participant CLI as CLI (user)
participant Socket as Unix Domain Socket
participant Tauri as Tauri Backend (Rust)
participant Tray as System Tray / UI
CLI->>Socket: connect to /tmp/<app>.sock and send IpcCommand
Socket->>Tauri: accept connection, deliver IpcCommand
Tauri->>Tauri: parse command via ipc_common, execute handler
Tauri->>Tray: update tray state or notify frontend
Tauri-->>Socket: send IpcResponse
Socket-->>CLI: return response
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰
I nudged a socket, soft and neat,
The CLI whispered, quick and fleet,
The tray blinked back a tiny cheer,
Whisper hummed the words I hear,
Hop — the app and CLI now meet! 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title 'docs: document IPC workflow and add project structure' directly and specifically summarizes the main changes: adding documentation about IPC workflow and project structure in CLAUDE.md and README.md.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch docs/ipc-and-project-structure

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
CLAUDE.md (1)

150-151: Hard-coded line counts will go stale quickly.

Specific counts ("194 lines") and ranges ("lines 7–42") are maintenance liabilities — they'll be wrong after the first code edit.

♻️ Proposed fix
-**Key files:**-- `apps/tauri/src-tauri/src/ipc.rs` - Socket server implementation (194 lines)-- `apps/tauri/src-tauri/src/cli_installer.rs` - CLI script with socket logic (lines 7-42)+**Key files:**+- `apps/tauri/src-tauri/src/ipc.rs` - Socket server implementation+- `apps/tauri/src-tauri/src/cli_installer.rs` - CLI script with socket logic
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CLAUDE.md` around lines 150 - 151, Remove the hard-coded line counts and
explicit line ranges in the CLAUDE.md entries for
apps/tauri/src-tauri/src/ipc.rs and apps/tauri/src-tauri/src/cli_installer.rs;
instead describe the files generically (e.g., "Socket server implementation" and
"CLI script with socket logic") or use non-precise qualifiers like "≈194 lines"
or "initial lines" so the doc doesn't break when the source changes, and update
the two entries that currently contain "194 lines" and "lines 7-42" accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 101-103: Update the Architecture section reference that currently
says "whisper.rs" to match the new module directory layout shown in the tree:
replace the mention of "whisper.rs" with "whisper/" (or explicitly "whisper/
(module directory with mod.rs and model.rs)") so the docs consistently describe
the whisper module as a directory containing mod.rs and model.rs.
- Line 77: The fenced code block that begins before the directory tree (the
triple backticks surrounding the "arandu/" tree) lacks a language identifier and
triggers MD040; update the opening fence from ``` to a fenced code block with a
language such as ```text or ```plaintext so the directory tree (the "arandu/"
block) is marked as plain text.
---
Nitpick comments:
In `@CLAUDE.md`:
- Around line 150-151: Remove the hard-coded line counts and explicit line
ranges in the CLAUDE.md entries for apps/tauri/src-tauri/src/ipc.rs and
apps/tauri/src-tauri/src/cli_installer.rs; instead describe the files
generically (e.g., "Socket server implementation" and "CLI script with socket
logic") or use non-precise qualifiers like "≈194 lines" or "initial lines" so
the doc doesn't break when the source changes, and update the two entries that
currently contain "194 lines" and "lines 7-42" accordingly.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9cd04e9 and 00c3975.

📒 Files selected for processing (2)
  • CLAUDE.md
  • README.md

Comment threadCLAUDE.md Outdated
Comment threadCLAUDE.md Outdated
- Add language identifier to project structure code block (MD040)
- Update whisper.rs reference to whisper/ directory in Architecture
- Update whisper/ tree to reflect actual submodule files
- Remove hard-coded line counts from Key files section

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 136-154: The section heading and wording conflate two different
scopes: the Unix socket IPC implementation (apps/tauri/src-tauri/src/ipc.rs) is
enabled for all Unix targets (#[cfg(unix)]) while the CLI installer and fallback
flow (apps/tauri/src-tauri/src/cli_installer.rs and the macOS-only build gate in
lib.rs:11) are macOS-only (#[cfg(target_os = "macos")]). Update the
documentation to either rename the heading to something like "Inter-Process
Communication (macOS CLI installer; Unix socket infrastructure)" or split into
two subsections — one describing the Unix socket server and commands (ipc.rs)
and one describing the CLI installer and its macOS-only fallback behavior
(cli_installer.rs and lib.rs). Also clarify the `open` ambiguity by explicitly
distinguishing the IPC `open` command (handled by the socket server) from the
macOS system `open` fallback used by the CLI installer.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 00c3975 and 5fdd730.

📒 Files selected for processing (1)
  • CLAUDE.md

Comment threadCLAUDE.md Outdated
Split IPC documentation into three subsections:
- Socket Server (Unix: macOS + Linux) for ipc.rs
- TCP Server (All Platforms) for tcp_ipc.rs
- CLI Installer (macOS Only) for cli_installer.rs
Disambiguate IPC `open` command from macOS system `open` tool.
Add missing ipc_common.rs and tcp_ipc.rs to project tree and
Architecture section.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 75-118: Update the Project Structure section to remove the
non-existent comments.rs entry, replace the shared/ subtree to list actual files
(style.css, highlight-dark.min.css, highlight-light.min.css, highlight.min.js,
icon.png, icon.svg) instead of a highlight/ directory, and correct the symlink
note in apps/tauri/src/ to indicate symlinks point to individual files under
../../../shared/ (three levels up) rather than a directory at ../../shared/;
keep other entries (TCP port 7474, workflows, whisper files) unchanged.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5fdd730 and 438c503.

📒 Files selected for processing (1)
  • CLAUDE.md

Comment threadCLAUDE.md
Comment on lines +75 to +118
## Project Structure

```text
arandu/
├── .github/
│ └── workflows/
│ ├── auto-tag.yml # Auto-versioning from conventional commits
│ ├── release.yml # GitHub release creation
│ ├── release-tauri.yml # Multi-platform builds (macOS/Linux/Windows)
│ └── deploy-website.yml # Cloudflare Pages deployment
├── apps/
│ ├── macos/ # ⚠️ DEPRECATED - macOS native app (DO NOT USE)
│ └── tauri/ # ✓ Active development - Tauri app
│ ├── src/ # Frontend (vanilla JS + HTML)
│ │ ├── index.html # Full UI with modals, comment system
│ │ ├── main.js # Single entry point
│ │ └── shared/ # Symlink to ../../shared/
│ └── src-tauri/ # Rust backend
│ ├── Cargo.toml
│ ├── tauri.conf.json
│ └── src/
│ ├── lib.rs # Core logic, Tauri commands, app setup
│ ├── ipc_common.rs # Shared IPC types and command processing
│ ├── ipc.rs # Unix socket IPC server (Unix only)
│ ├── tcp_ipc.rs # TCP IPC server (all platforms)
│ ├── tray.rs # System tray integration
│ ├── cli_installer.rs # macOS CLI installation (macOS only)
│ ├── comments.rs # Plan review comments storage
│ └── whisper/ # Voice-to-text module
│ ├── mod.rs
│ ├── audio.rs
│ ├── commands.rs
│ ├── model_manager.rs
│ └── transcriber.rs
├── shared/ # Shared CSS and highlight.js files
│ ├── style.css
│ └── highlight/
├── scripts/
│ ├── set-version.sh # Version management across config files
│ └── build-dev.sh # Local dev builds with git hash
├── website/ # Static landing page (Cloudflare Pages)
├── examples/ # Sample markdown files
└── README.md
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash# Verify specific technical claims in CLAUDE.md project structure and architectureecho"=== TCP port in tcp_ipc.rs ==="
rg -n "7474|TcpListener|bind" apps/tauri/src-tauri/src/tcp_ipc.rs
echo""echo"=== Rust source files in src-tauri/src/ ==="
fd -t f -e rs --max-depth 1 apps/tauri/src-tauri/src | sort
echo""echo"=== Whisper submodule files ==="
fd -t f -e rs apps/tauri/src-tauri/src/whisper | sort
echo""echo"=== GitHub workflow filenames ==="
fd -t f -e yml .github/workflows | sort
echo""echo"=== shared/ top-level contents ==="
fd --max-depth 1 shared | sort
echo""echo"=== apps/tauri/src/shared symlink ==="
ls -la apps/tauri/src/shared 2>/dev/null ||echo"NOT FOUND"

Repository: devitools/arandu

Length of output: 1806


🏁 Script executed:

#!/bin/bashecho"=== Rust source files in src-tauri/src/ ==="
fd . apps/tauri/src-tauri/src --max-depth 1 -t f -e rs | sort
echo""echo"=== Whisper submodule files ==="
fd . apps/tauri/src-tauri/src/whisper -t f -e rs | sort
echo""echo"=== GitHub workflow filenames ==="
fd . .github/workflows -t f -e yml | sort
echo""echo"=== shared/ top-level directory listing ==="
ls -la shared/
echo""echo"=== Check if apps/tauri/src/ contains shared reference ==="
ls -la apps/tauri/src/ 2>/dev/null | grep -i shared ||echo"No 'shared' entry found"

Repository: devitools/arandu

Length of output: 1822


Fix inaccurate project structure claims: remove non-existent comments.rs, correct shared/ layout, and fix symlink documentation.

The following specific claims in the project structure (lines 75–118) conflict with the actual repository:

  1. comments.rs does not exist — This file is listed under apps/tauri/src-tauri/src/ in CLAUDE.md but is absent from the repository. Remove it from the documentation.

  2. shared/ structure is incorrect — CLAUDE.md claims shared/highlight/ as a subdirectory, but the actual structure contains individual files:

    • style.css
    • highlight-dark.min.css, highlight-light.min.css, highlight.min.js (not in a highlight/ subdirectory)
    • icon.png, icon.svg (not documented)
  3. Symlink path and nature are misrepresented — CLAUDE.md states Symlink to ../../shared/, but actual symlinks in apps/tauri/src/ point to individual files at ../../../shared/ (three levels up, not two). The symlinks target specific files, not a directory.

The TCP port 7474 (lines 127, 158) is correctly documented, and all workflow files and whisper submodule files match the project structure as written.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CLAUDE.md` around lines 75 - 118, Update the Project Structure section to
remove the non-existent comments.rs entry, replace the shared/ subtree to list
actual files (style.css, highlight-dark.min.css, highlight-light.min.css,
highlight.min.js, icon.png, icon.svg) instead of a highlight/ directory, and
correct the symlink note in apps/tauri/src/ to indicate symlinks point to
individual files under ../../../shared/ (three levels up) rather than a
directory at ../../shared/; keep other entries (TCP port 7474, workflows,
whisper files) unchanged.

@wilcorrea
wilcorrea merged commit 0f207f9 into mainFeb 24, 2026
1 check passed
@wilcorrea
wilcorrea deleted the docs/ipc-and-project-structure branch February 24, 2026 17:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@wilcorrea
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

docs: document IPC workflow and add project structure - #20

Merged
wilcorrea merged 3 commits into
mainfrom
docs/ipc-and-project-structure
Feb 24, 2026
Merged

docs: document IPC workflow and add project structure#20
wilcorrea merged 3 commits into
mainfrom
docs/ipc-and-project-structure

Conversation

@wilcorrea

@wilcorreawilcorrea commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Added comprehensive Unix domain socket IPC documentation to CLAUDE.md
    • Socket location (~/.arandu/arandu.sock), permissions, and protocol details
    • Complete CLI workflow: socket-first approach with automatic fallback to open command
    • Documented 3 IPC commands: open, ping, show
  • Created new "Project Structure" section in CLAUDE.md with visual folder tree
    • Shows all key directories and files with inline descriptions
    • Clear marking of deprecated apps/macos/ directory
    • Highlights critical backend files: ipc.rs, tray.rs, whisper/
  • Documented system tray functionality in README.md
    • Custom "A" glyph rendering, menu items, window hiding behavior
  • Added "Architecture Overview" section to README.md development guide
    • Backend/frontend structure with key files and communication patterns
  • Strengthened macOS native deprecation warning (Note → IMPORTANT)
  • Added new "Contributing" section to README.md linking to CLAUDE.md
  • Documented conditional compilation patterns (#[cfg(unix)], #[cfg(target_os = "macos")])

Test plan

  • Verify CLAUDE.md renders correctly on GitHub
    • Project structure tree displays properly
    • IPC section formatting is correct
    • Code blocks and inline code render properly
  • Verify README.md renders correctly on GitHub
    • System Tray section displays properly
    • Architecture Overview formatting is correct
    • Contributing section links work
  • Confirm documentation accurately reflects codebase
    • Socket path matches ipc.rs implementation
    • CLI script commands match cli_installer.rs
    • File paths in project structure are accurate

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added a system tray with Show Window and Quit options.
    • Fast CLI ↔ app communication via Unix-domain socket IPC with a TCP fallback and a macOS CLI installer flow.
  • Documentation

    • Detailed IPC, socket location/protocol, and graceful-fallback behavior.
    • Expanded architecture, build/contributing notes, and clear macOS native-deprecation guidance.

…ructure
- Add Unix domain socket IPC documentation (workflow, commands, fallback)
- Create comprehensive project structure section in CLAUDE.md
- Document system tray functionality in README.md
- Strengthen macOS native deprecation warning
- Add architecture overview to README development section
- Document conditional compilation patterns
- Clarify CLI socket-first approach with open fallback
@coderabbitai

coderabbitaiBot commented Feb 24, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Adds Unix-domain socket IPC (Unix-only) and TCP fallback, a macOS CLI installer fast-path, system tray integration notes, a Whisper subtree, public IPC modules in the Tauri backend, and related README/CLAUDE.md documentation including macOS-native deprecation and conditional compilation guidance.

Changes

Cohort / File(s)Summary
Tauri IPC core
apps/tauri/src-tauri/src/ipc_common.rs, apps/tauri/src-tauri/src/ipc.rs, apps/tauri/src-tauri/src/tcp_ipc.rs
Introduced shared IPC types and implementations: Unix domain socket server, TCP fallback server, and shared request/response types. Public API surface expanded for IPC.
Tauri CLI installer & integration
apps/tauri/src-tauri/src/cli_installer.rs, apps/tauri/src-tauri/src/lib.rs
Adds macOS CLI installer/fast-path logic and integrates socket setup/cleanup into Tauri app lifecycle (conditional macOS compilation notes).
Whisper subtree
apps/tauri/src-tauri/src/whisper/...
New directory for Whisper voice-to-text code; moved/organized related modules under a dedicated public subtree.
Documentation
CLAUDE.md, README.md
Added Architecture overview, IPC (Unix socket) protocol & location, CLI-to-app workflow, system tray notes, macOS native deprecation, conditional compilation, and build/dev guidance.
Misc (public API surface)
apps/tauri/src-tauri/src/...
Public-facing IPC transport implementations and CLI installer added to crate exports (visibility changes across new modules).

Sequence Diagram(s)

sequenceDiagram
autonumber
participant CLI as CLI (user)
participant Socket as Unix Domain Socket
participant Tauri as Tauri Backend (Rust)
participant Tray as System Tray / UI
CLI->>Socket: connect to /tmp/<app>.sock and send IpcCommand
Socket->>Tauri: accept connection, deliver IpcCommand
Tauri->>Tauri: parse command via ipc_common, execute handler
Tauri->>Tray: update tray state or notify frontend
Tauri-->>Socket: send IpcResponse
Socket-->>CLI: return response
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰
I nudged a socket, soft and neat,
The CLI whispered, quick and fleet,
The tray blinked back a tiny cheer,
Whisper hummed the words I hear,
Hop — the app and CLI now meet! 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title 'docs: document IPC workflow and add project structure' directly and specifically summarizes the main changes: adding documentation about IPC workflow and project structure in CLAUDE.md and README.md.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch docs/ipc-and-project-structure

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
CLAUDE.md (1)

150-151: Hard-coded line counts will go stale quickly.

Specific counts ("194 lines") and ranges ("lines 7–42") are maintenance liabilities — they'll be wrong after the first code edit.

♻️ Proposed fix
-**Key files:**-- `apps/tauri/src-tauri/src/ipc.rs` - Socket server implementation (194 lines)-- `apps/tauri/src-tauri/src/cli_installer.rs` - CLI script with socket logic (lines 7-42)+**Key files:**+- `apps/tauri/src-tauri/src/ipc.rs` - Socket server implementation+- `apps/tauri/src-tauri/src/cli_installer.rs` - CLI script with socket logic
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CLAUDE.md` around lines 150 - 151, Remove the hard-coded line counts and
explicit line ranges in the CLAUDE.md entries for
apps/tauri/src-tauri/src/ipc.rs and apps/tauri/src-tauri/src/cli_installer.rs;
instead describe the files generically (e.g., "Socket server implementation" and
"CLI script with socket logic") or use non-precise qualifiers like "≈194 lines"
or "initial lines" so the doc doesn't break when the source changes, and update
the two entries that currently contain "194 lines" and "lines 7-42" accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 101-103: Update the Architecture section reference that currently
says "whisper.rs" to match the new module directory layout shown in the tree:
replace the mention of "whisper.rs" with "whisper/" (or explicitly "whisper/
(module directory with mod.rs and model.rs)") so the docs consistently describe
the whisper module as a directory containing mod.rs and model.rs.
- Line 77: The fenced code block that begins before the directory tree (the
triple backticks surrounding the "arandu/" tree) lacks a language identifier and
triggers MD040; update the opening fence from ``` to a fenced code block with a
language such as ```text or ```plaintext so the directory tree (the "arandu/"
block) is marked as plain text.
---
Nitpick comments:
In `@CLAUDE.md`:
- Around line 150-151: Remove the hard-coded line counts and explicit line
ranges in the CLAUDE.md entries for apps/tauri/src-tauri/src/ipc.rs and
apps/tauri/src-tauri/src/cli_installer.rs; instead describe the files
generically (e.g., "Socket server implementation" and "CLI script with socket
logic") or use non-precise qualifiers like "≈194 lines" or "initial lines" so
the doc doesn't break when the source changes, and update the two entries that
currently contain "194 lines" and "lines 7-42" accordingly.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9cd04e9 and 00c3975.

📒 Files selected for processing (2)
  • CLAUDE.md
  • README.md

Comment threadCLAUDE.md Outdated
Comment threadCLAUDE.md Outdated
- Add language identifier to project structure code block (MD040)
- Update whisper.rs reference to whisper/ directory in Architecture
- Update whisper/ tree to reflect actual submodule files
- Remove hard-coded line counts from Key files section

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 136-154: The section heading and wording conflate two different
scopes: the Unix socket IPC implementation (apps/tauri/src-tauri/src/ipc.rs) is
enabled for all Unix targets (#[cfg(unix)]) while the CLI installer and fallback
flow (apps/tauri/src-tauri/src/cli_installer.rs and the macOS-only build gate in
lib.rs:11) are macOS-only (#[cfg(target_os = "macos")]). Update the
documentation to either rename the heading to something like "Inter-Process
Communication (macOS CLI installer; Unix socket infrastructure)" or split into
two subsections — one describing the Unix socket server and commands (ipc.rs)
and one describing the CLI installer and its macOS-only fallback behavior
(cli_installer.rs and lib.rs). Also clarify the `open` ambiguity by explicitly
distinguishing the IPC `open` command (handled by the socket server) from the
macOS system `open` fallback used by the CLI installer.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 00c3975 and 5fdd730.

📒 Files selected for processing (1)
  • CLAUDE.md

Comment threadCLAUDE.md Outdated
Split IPC documentation into three subsections:
- Socket Server (Unix: macOS + Linux) for ipc.rs
- TCP Server (All Platforms) for tcp_ipc.rs
- CLI Installer (macOS Only) for cli_installer.rs
Disambiguate IPC `open` command from macOS system `open` tool.
Add missing ipc_common.rs and tcp_ipc.rs to project tree and
Architecture section.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 75-118: Update the Project Structure section to remove the
non-existent comments.rs entry, replace the shared/ subtree to list actual files
(style.css, highlight-dark.min.css, highlight-light.min.css, highlight.min.js,
icon.png, icon.svg) instead of a highlight/ directory, and correct the symlink
note in apps/tauri/src/ to indicate symlinks point to individual files under
../../../shared/ (three levels up) rather than a directory at ../../shared/;
keep other entries (TCP port 7474, workflows, whisper files) unchanged.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5fdd730 and 438c503.

📒 Files selected for processing (1)
  • CLAUDE.md

Comment threadCLAUDE.md
Comment on lines +75 to +118
## Project Structure

```text
arandu/
├── .github/
│ └── workflows/
│ ├── auto-tag.yml # Auto-versioning from conventional commits
│ ├── release.yml # GitHub release creation
│ ├── release-tauri.yml # Multi-platform builds (macOS/Linux/Windows)
│ └── deploy-website.yml # Cloudflare Pages deployment
├── apps/
│ ├── macos/ # ⚠️ DEPRECATED - macOS native app (DO NOT USE)
│ └── tauri/ # ✓ Active development - Tauri app
│ ├── src/ # Frontend (vanilla JS + HTML)
│ │ ├── index.html # Full UI with modals, comment system
│ │ ├── main.js # Single entry point
│ │ └── shared/ # Symlink to ../../shared/
│ └── src-tauri/ # Rust backend
│ ├── Cargo.toml
│ ├── tauri.conf.json
│ └── src/
│ ├── lib.rs # Core logic, Tauri commands, app setup
│ ├── ipc_common.rs # Shared IPC types and command processing
│ ├── ipc.rs # Unix socket IPC server (Unix only)
│ ├── tcp_ipc.rs # TCP IPC server (all platforms)
│ ├── tray.rs # System tray integration
│ ├── cli_installer.rs # macOS CLI installation (macOS only)
│ ├── comments.rs # Plan review comments storage
│ └── whisper/ # Voice-to-text module
│ ├── mod.rs
│ ├── audio.rs
│ ├── commands.rs
│ ├── model_manager.rs
│ └── transcriber.rs
├── shared/ # Shared CSS and highlight.js files
│ ├── style.css
│ └── highlight/
├── scripts/
│ ├── set-version.sh # Version management across config files
│ └── build-dev.sh # Local dev builds with git hash
├── website/ # Static landing page (Cloudflare Pages)
├── examples/ # Sample markdown files
└── README.md
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash# Verify specific technical claims in CLAUDE.md project structure and architectureecho"=== TCP port in tcp_ipc.rs ==="
rg -n "7474|TcpListener|bind" apps/tauri/src-tauri/src/tcp_ipc.rs
echo""echo"=== Rust source files in src-tauri/src/ ==="
fd -t f -e rs --max-depth 1 apps/tauri/src-tauri/src | sort
echo""echo"=== Whisper submodule files ==="
fd -t f -e rs apps/tauri/src-tauri/src/whisper | sort
echo""echo"=== GitHub workflow filenames ==="
fd -t f -e yml .github/workflows | sort
echo""echo"=== shared/ top-level contents ==="
fd --max-depth 1 shared | sort
echo""echo"=== apps/tauri/src/shared symlink ==="
ls -la apps/tauri/src/shared 2>/dev/null ||echo"NOT FOUND"

Repository: devitools/arandu

Length of output: 1806


🏁 Script executed:

#!/bin/bashecho"=== Rust source files in src-tauri/src/ ==="
fd . apps/tauri/src-tauri/src --max-depth 1 -t f -e rs | sort
echo""echo"=== Whisper submodule files ==="
fd . apps/tauri/src-tauri/src/whisper -t f -e rs | sort
echo""echo"=== GitHub workflow filenames ==="
fd . .github/workflows -t f -e yml | sort
echo""echo"=== shared/ top-level directory listing ==="
ls -la shared/
echo""echo"=== Check if apps/tauri/src/ contains shared reference ==="
ls -la apps/tauri/src/ 2>/dev/null | grep -i shared ||echo"No 'shared' entry found"

Repository: devitools/arandu

Length of output: 1822


Fix inaccurate project structure claims: remove non-existent comments.rs, correct shared/ layout, and fix symlink documentation.

The following specific claims in the project structure (lines 75–118) conflict with the actual repository:

  1. comments.rs does not exist — This file is listed under apps/tauri/src-tauri/src/ in CLAUDE.md but is absent from the repository. Remove it from the documentation.

  2. shared/ structure is incorrect — CLAUDE.md claims shared/highlight/ as a subdirectory, but the actual structure contains individual files:

    • style.css
    • highlight-dark.min.css, highlight-light.min.css, highlight.min.js (not in a highlight/ subdirectory)
    • icon.png, icon.svg (not documented)
  3. Symlink path and nature are misrepresented — CLAUDE.md states Symlink to ../../shared/, but actual symlinks in apps/tauri/src/ point to individual files at ../../../shared/ (three levels up, not two). The symlinks target specific files, not a directory.

The TCP port 7474 (lines 127, 158) is correctly documented, and all workflow files and whisper submodule files match the project structure as written.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CLAUDE.md` around lines 75 - 118, Update the Project Structure section to
remove the non-existent comments.rs entry, replace the shared/ subtree to list
actual files (style.css, highlight-dark.min.css, highlight-light.min.css,
highlight.min.js, icon.png, icon.svg) instead of a highlight/ directory, and
correct the symlink note in apps/tauri/src/ to indicate symlinks point to
individual files under ../../../shared/ (three levels up) rather than a
directory at ../../shared/; keep other entries (TCP port 7474, workflows,
whisper files) unchanged.

@wilcorrea
wilcorrea merged commit 0f207f9 into mainFeb 24, 2026
1 check passed
@wilcorrea
wilcorrea deleted the docs/ipc-and-project-structure branch February 24, 2026 17:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@wilcorrea
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

docs: document IPC workflow and add project structure - #20

Merged
wilcorrea merged 3 commits into
mainfrom
docs/ipc-and-project-structure
Feb 24, 2026
Merged

docs: document IPC workflow and add project structure#20
wilcorrea merged 3 commits into
mainfrom
docs/ipc-and-project-structure

Conversation

@wilcorrea

@wilcorreawilcorrea commented Feb 24, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Added comprehensive Unix domain socket IPC documentation to CLAUDE.md
    • Socket location (~/.arandu/arandu.sock), permissions, and protocol details
    • Complete CLI workflow: socket-first approach with automatic fallback to open command
    • Documented 3 IPC commands: open, ping, show
  • Created new "Project Structure" section in CLAUDE.md with visual folder tree
    • Shows all key directories and files with inline descriptions
    • Clear marking of deprecated apps/macos/ directory
    • Highlights critical backend files: ipc.rs, tray.rs, whisper/
  • Documented system tray functionality in README.md
    • Custom "A" glyph rendering, menu items, window hiding behavior
  • Added "Architecture Overview" section to README.md development guide
    • Backend/frontend structure with key files and communication patterns
  • Strengthened macOS native deprecation warning (Note → IMPORTANT)
  • Added new "Contributing" section to README.md linking to CLAUDE.md
  • Documented conditional compilation patterns (#[cfg(unix)], #[cfg(target_os = "macos")])

Test plan

  • Verify CLAUDE.md renders correctly on GitHub
    • Project structure tree displays properly
    • IPC section formatting is correct
    • Code blocks and inline code render properly
  • Verify README.md renders correctly on GitHub
    • System Tray section displays properly
    • Architecture Overview formatting is correct
    • Contributing section links work
  • Confirm documentation accurately reflects codebase
    • Socket path matches ipc.rs implementation
    • CLI script commands match cli_installer.rs
    • File paths in project structure are accurate

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features

    • Added a system tray with Show Window and Quit options.
    • Fast CLI ↔ app communication via Unix-domain socket IPC with a TCP fallback and a macOS CLI installer flow.
  • Documentation

    • Detailed IPC, socket location/protocol, and graceful-fallback behavior.
    • Expanded architecture, build/contributing notes, and clear macOS native-deprecation guidance.

…ructure
- Add Unix domain socket IPC documentation (workflow, commands, fallback)
- Create comprehensive project structure section in CLAUDE.md
- Document system tray functionality in README.md
- Strengthen macOS native deprecation warning
- Add architecture overview to README development section
- Document conditional compilation patterns
- Clarify CLI socket-first approach with open fallback
@coderabbitai

coderabbitaiBot commented Feb 24, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Adds Unix-domain socket IPC (Unix-only) and TCP fallback, a macOS CLI installer fast-path, system tray integration notes, a Whisper subtree, public IPC modules in the Tauri backend, and related README/CLAUDE.md documentation including macOS-native deprecation and conditional compilation guidance.

Changes

Cohort / File(s)Summary
Tauri IPC core
apps/tauri/src-tauri/src/ipc_common.rs, apps/tauri/src-tauri/src/ipc.rs, apps/tauri/src-tauri/src/tcp_ipc.rs
Introduced shared IPC types and implementations: Unix domain socket server, TCP fallback server, and shared request/response types. Public API surface expanded for IPC.
Tauri CLI installer & integration
apps/tauri/src-tauri/src/cli_installer.rs, apps/tauri/src-tauri/src/lib.rs
Adds macOS CLI installer/fast-path logic and integrates socket setup/cleanup into Tauri app lifecycle (conditional macOS compilation notes).
Whisper subtree
apps/tauri/src-tauri/src/whisper/...
New directory for Whisper voice-to-text code; moved/organized related modules under a dedicated public subtree.
Documentation
CLAUDE.md, README.md
Added Architecture overview, IPC (Unix socket) protocol & location, CLI-to-app workflow, system tray notes, macOS native deprecation, conditional compilation, and build/dev guidance.
Misc (public API surface)
apps/tauri/src-tauri/src/...
Public-facing IPC transport implementations and CLI installer added to crate exports (visibility changes across new modules).

Sequence Diagram(s)

sequenceDiagram
autonumber
participant CLI as CLI (user)
participant Socket as Unix Domain Socket
participant Tauri as Tauri Backend (Rust)
participant Tray as System Tray / UI
CLI->>Socket: connect to /tmp/<app>.sock and send IpcCommand
Socket->>Tauri: accept connection, deliver IpcCommand
Tauri->>Tauri: parse command via ipc_common, execute handler
Tauri->>Tray: update tray state or notify frontend
Tauri-->>Socket: send IpcResponse
Socket-->>CLI: return response
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰
I nudged a socket, soft and neat,
The CLI whispered, quick and fleet,
The tray blinked back a tiny cheer,
Whisper hummed the words I hear,
Hop — the app and CLI now meet! 🥕

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title 'docs: document IPC workflow and add project structure' directly and specifically summarizes the main changes: adding documentation about IPC workflow and project structure in CLAUDE.md and README.md.
Docstring Coverage✅ PassedNo functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch docs/ipc-and-project-structure

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (1)
CLAUDE.md (1)

150-151: Hard-coded line counts will go stale quickly.

Specific counts ("194 lines") and ranges ("lines 7–42") are maintenance liabilities — they'll be wrong after the first code edit.

♻️ Proposed fix
-**Key files:**-- `apps/tauri/src-tauri/src/ipc.rs` - Socket server implementation (194 lines)-- `apps/tauri/src-tauri/src/cli_installer.rs` - CLI script with socket logic (lines 7-42)+**Key files:**+- `apps/tauri/src-tauri/src/ipc.rs` - Socket server implementation+- `apps/tauri/src-tauri/src/cli_installer.rs` - CLI script with socket logic
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CLAUDE.md` around lines 150 - 151, Remove the hard-coded line counts and
explicit line ranges in the CLAUDE.md entries for
apps/tauri/src-tauri/src/ipc.rs and apps/tauri/src-tauri/src/cli_installer.rs;
instead describe the files generically (e.g., "Socket server implementation" and
"CLI script with socket logic") or use non-precise qualifiers like "≈194 lines"
or "initial lines" so the doc doesn't break when the source changes, and update
the two entries that currently contain "194 lines" and "lines 7-42" accordingly.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 101-103: Update the Architecture section reference that currently
says "whisper.rs" to match the new module directory layout shown in the tree:
replace the mention of "whisper.rs" with "whisper/" (or explicitly "whisper/
(module directory with mod.rs and model.rs)") so the docs consistently describe
the whisper module as a directory containing mod.rs and model.rs.
- Line 77: The fenced code block that begins before the directory tree (the
triple backticks surrounding the "arandu/" tree) lacks a language identifier and
triggers MD040; update the opening fence from ``` to a fenced code block with a
language such as ```text or ```plaintext so the directory tree (the "arandu/"
block) is marked as plain text.
---
Nitpick comments:
In `@CLAUDE.md`:
- Around line 150-151: Remove the hard-coded line counts and explicit line
ranges in the CLAUDE.md entries for apps/tauri/src-tauri/src/ipc.rs and
apps/tauri/src-tauri/src/cli_installer.rs; instead describe the files
generically (e.g., "Socket server implementation" and "CLI script with socket
logic") or use non-precise qualifiers like "≈194 lines" or "initial lines" so
the doc doesn't break when the source changes, and update the two entries that
currently contain "194 lines" and "lines 7-42" accordingly.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9cd04e9 and 00c3975.

📒 Files selected for processing (2)
  • CLAUDE.md
  • README.md

Comment threadCLAUDE.md Outdated
Comment threadCLAUDE.md Outdated
- Add language identifier to project structure code block (MD040)
- Update whisper.rs reference to whisper/ directory in Architecture
- Update whisper/ tree to reflect actual submodule files
- Remove hard-coded line counts from Key files section

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 136-154: The section heading and wording conflate two different
scopes: the Unix socket IPC implementation (apps/tauri/src-tauri/src/ipc.rs) is
enabled for all Unix targets (#[cfg(unix)]) while the CLI installer and fallback
flow (apps/tauri/src-tauri/src/cli_installer.rs and the macOS-only build gate in
lib.rs:11) are macOS-only (#[cfg(target_os = "macos")]). Update the
documentation to either rename the heading to something like "Inter-Process
Communication (macOS CLI installer; Unix socket infrastructure)" or split into
two subsections — one describing the Unix socket server and commands (ipc.rs)
and one describing the CLI installer and its macOS-only fallback behavior
(cli_installer.rs and lib.rs). Also clarify the `open` ambiguity by explicitly
distinguishing the IPC `open` command (handled by the socket server) from the
macOS system `open` fallback used by the CLI installer.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 00c3975 and 5fdd730.

📒 Files selected for processing (1)
  • CLAUDE.md

Comment threadCLAUDE.md Outdated
Split IPC documentation into three subsections:
- Socket Server (Unix: macOS + Linux) for ipc.rs
- TCP Server (All Platforms) for tcp_ipc.rs
- CLI Installer (macOS Only) for cli_installer.rs
Disambiguate IPC `open` command from macOS system `open` tool.
Add missing ipc_common.rs and tcp_ipc.rs to project tree and
Architecture section.

@coderabbitaicoderabbitaiBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 75-118: Update the Project Structure section to remove the
non-existent comments.rs entry, replace the shared/ subtree to list actual files
(style.css, highlight-dark.min.css, highlight-light.min.css, highlight.min.js,
icon.png, icon.svg) instead of a highlight/ directory, and correct the symlink
note in apps/tauri/src/ to indicate symlinks point to individual files under
../../../shared/ (three levels up) rather than a directory at ../../shared/;
keep other entries (TCP port 7474, workflows, whisper files) unchanged.

ℹ️ Review info

Configuration used: defaults

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5fdd730 and 438c503.

📒 Files selected for processing (1)
  • CLAUDE.md

Comment threadCLAUDE.md
Comment on lines +75 to +118
## Project Structure

```text
arandu/
├── .github/
│ └── workflows/
│ ├── auto-tag.yml # Auto-versioning from conventional commits
│ ├── release.yml # GitHub release creation
│ ├── release-tauri.yml # Multi-platform builds (macOS/Linux/Windows)
│ └── deploy-website.yml # Cloudflare Pages deployment
├── apps/
│ ├── macos/ # ⚠️ DEPRECATED - macOS native app (DO NOT USE)
│ └── tauri/ # ✓ Active development - Tauri app
│ ├── src/ # Frontend (vanilla JS + HTML)
│ │ ├── index.html # Full UI with modals, comment system
│ │ ├── main.js # Single entry point
│ │ └── shared/ # Symlink to ../../shared/
│ └── src-tauri/ # Rust backend
│ ├── Cargo.toml
│ ├── tauri.conf.json
│ └── src/
│ ├── lib.rs # Core logic, Tauri commands, app setup
│ ├── ipc_common.rs # Shared IPC types and command processing
│ ├── ipc.rs # Unix socket IPC server (Unix only)
│ ├── tcp_ipc.rs # TCP IPC server (all platforms)
│ ├── tray.rs # System tray integration
│ ├── cli_installer.rs # macOS CLI installation (macOS only)
│ ├── comments.rs # Plan review comments storage
│ └── whisper/ # Voice-to-text module
│ ├── mod.rs
│ ├── audio.rs
│ ├── commands.rs
│ ├── model_manager.rs
│ └── transcriber.rs
├── shared/ # Shared CSS and highlight.js files
│ ├── style.css
│ └── highlight/
├── scripts/
│ ├── set-version.sh # Version management across config files
│ └── build-dev.sh # Local dev builds with git hash
├── website/ # Static landing page (Cloudflare Pages)
├── examples/ # Sample markdown files
└── README.md
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash# Verify specific technical claims in CLAUDE.md project structure and architectureecho"=== TCP port in tcp_ipc.rs ==="
rg -n "7474|TcpListener|bind" apps/tauri/src-tauri/src/tcp_ipc.rs
echo""echo"=== Rust source files in src-tauri/src/ ==="
fd -t f -e rs --max-depth 1 apps/tauri/src-tauri/src | sort
echo""echo"=== Whisper submodule files ==="
fd -t f -e rs apps/tauri/src-tauri/src/whisper | sort
echo""echo"=== GitHub workflow filenames ==="
fd -t f -e yml .github/workflows | sort
echo""echo"=== shared/ top-level contents ==="
fd --max-depth 1 shared | sort
echo""echo"=== apps/tauri/src/shared symlink ==="
ls -la apps/tauri/src/shared 2>/dev/null ||echo"NOT FOUND"

Repository: devitools/arandu

Length of output: 1806


🏁 Script executed:

#!/bin/bashecho"=== Rust source files in src-tauri/src/ ==="
fd . apps/tauri/src-tauri/src --max-depth 1 -t f -e rs | sort
echo""echo"=== Whisper submodule files ==="
fd . apps/tauri/src-tauri/src/whisper -t f -e rs | sort
echo""echo"=== GitHub workflow filenames ==="
fd . .github/workflows -t f -e yml | sort
echo""echo"=== shared/ top-level directory listing ==="
ls -la shared/
echo""echo"=== Check if apps/tauri/src/ contains shared reference ==="
ls -la apps/tauri/src/ 2>/dev/null | grep -i shared ||echo"No 'shared' entry found"

Repository: devitools/arandu

Length of output: 1822


Fix inaccurate project structure claims: remove non-existent comments.rs, correct shared/ layout, and fix symlink documentation.

The following specific claims in the project structure (lines 75–118) conflict with the actual repository:

  1. comments.rs does not exist — This file is listed under apps/tauri/src-tauri/src/ in CLAUDE.md but is absent from the repository. Remove it from the documentation.

  2. shared/ structure is incorrect — CLAUDE.md claims shared/highlight/ as a subdirectory, but the actual structure contains individual files:

    • style.css
    • highlight-dark.min.css, highlight-light.min.css, highlight.min.js (not in a highlight/ subdirectory)
    • icon.png, icon.svg (not documented)
  3. Symlink path and nature are misrepresented — CLAUDE.md states Symlink to ../../shared/, but actual symlinks in apps/tauri/src/ point to individual files at ../../../shared/ (three levels up, not two). The symlinks target specific files, not a directory.

The TCP port 7474 (lines 127, 158) is correctly documented, and all workflow files and whisper submodule files match the project structure as written.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CLAUDE.md` around lines 75 - 118, Update the Project Structure section to
remove the non-existent comments.rs entry, replace the shared/ subtree to list
actual files (style.css, highlight-dark.min.css, highlight-light.min.css,
highlight.min.js, icon.png, icon.svg) instead of a highlight/ directory, and
correct the symlink note in apps/tauri/src/ to indicate symlinks point to
individual files under ../../../shared/ (three levels up) rather than a
directory at ../../shared/; keep other entries (TCP port 7474, workflows,
whisper files) unchanged.

@wilcorrea
wilcorrea merged commit 0f207f9 into mainFeb 24, 2026
1 check passed
@wilcorrea
wilcorrea deleted the docs/ipc-and-project-structure branch February 24, 2026 17:05
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@wilcorrea