Originally created by: Akarsh-Hegde
Summary
v1.64.0 shipped the fold to main, but all developer-facing docs and dev scripts still described the old multi-process topology (screenpipe agent, Node UI server, 4-terminal dev setup). This PR brings them up to date so a new contributor following CONTRIBUTING.md gets a working environment on the first try.
What changed
dev-start.sh — 85 lines → 3 windows
- Removed the ~20-line screenpipe launchd bootstrap block (capture is in-process; the agent is unneeded and conflicts)
- Removed the separate "Next.js UI" Terminal window —
npm run tauri dev starts the Next.js dev server automatically via beforeDevCommand in tauri.conf.json; opening a second npm run dev ran two servers on port 3939
- Now opens 3 windows: daemon, MLX, tray
install-dev.sh
- Removed
install-screenpipe-daemon.sh and install-a11y-helper-daemon.sh registration (both are stale since v1.64.0 in-process capture)
- Added an upgrade note for contributors with an older dev setup (how to
bootout the old agents)
- Updated the "what dev-start.sh opens" summary to 3 windows
CONTRIBUTING.md
- Project layout table: added
meridian-core/, updated ui/ and tray/ descriptions
- Dev setup: updated to 3-window model; added upgrade note for old setups; documented the
tauri dev ↔ beforeDevCommand connection; added the popover known limitation
- Installed-vs-dev table: removed screenpipe/a11y-helper rows; updated UI row
- TypeScript convention: replaced "keep UI API routes thin" with the bridge.ts invoke pattern (the
/api routes are gone)
tray/README.md — complete rewrite
- Previous version described HTTP polling of
/api/health, /api/active, curl http://127.0.0.1:3939 checks — all retired at the fold
- Now documents the real architecture: in-process capture, embedded dashboard, poll loop, commands by domain, MLX supervision, dev workflow, troubleshooting
README.md
- Updated "Built on": screenpipe is now a forked capture crate (pinned at last MIT release), not a separate process; added Tauri
SETUP.md
- Grant permissions to Meridian (not screenpipe)
- Services table: removed screenpipe row; tray is now the capture owner
- Log targets: removed
screenpipe / screenpipe-error, added tray / tray-error
- Setup flow: added MLX runtime download step
Tests
5 new regression guards added to tests/tray_assets.rs (all pass):
| Test |
Guards against |
dev_start_no_screenpipe_launchd_bootstrap |
screenpipe launchd block creeping back into dev-start.sh |
dev_start_no_separate_nextjs_window |
separate npm run dev window being re-added (double-starts the dev server) |
dev_start_opens_three_terminal_windows |
window count drifting from 3 |
install_dev_skips_screenpipe_agents |
screenpipe/a11y-helper agent registration returning to install-dev.sh |
tauri_before_dev_command_starts_nextjs |
beforeDevCommand being removed from tauri.conf.json (would break devURL without an explicit Next.js terminal) |
Test plan
- [ ] Fresh
bash install-dev.sh on a clean machine produces no screenpipe/a11y-helper agents
- [ ]
bash dev-start.sh opens exactly 3 Terminal windows; dashboard loads in the Tauri webview
- [ ]
cargo test --test tray_assets — all 11 tests pass ✅ (pre-push verified)
- [ ] CI green
🤖 Generated with Claude Code
https://claude.ai/code/session_01SKdh3tKWLZhtQ9FCfA5RYH
Summary by CodeRabbit
- Documentation
- Refreshed contribution/setup and tray architecture docs to match the current workflow: three-terminal dev, in-process capture owned by the tray, and tray-driven Next.js dashboard startup.
- Updated macOS permission guidance, install/dev messaging, README “Built on” items, and CLI log target naming.
- Tests
- Added regression tests that validate the updated dev/setup topology (no retired launch agents or standalone Next.js window) and
beforeDevCommand popover copying/Next.js startup behavior.
- Chores
- Tweaked CI log/validation scope and updated git ignore for generated popover dev assets.
Originally posted by: coderabbitai[bot]
📝 Walkthrough
## Walkthrough The PR updates the local development workflow to a 3-terminal setup, removes dev-mode launchd registration for screenpipe-related services, rewrites setup and architecture documentation, updates `meridian logs` targets, and adds regression tests for the new dev script topology. ## Changes **Tray-centered dev workflow and service naming** |Layer / File(s)|Summary| |---|---| |**Install and permission flow**`install.sh`, `install-dev.sh`, `SETUP.md`, `CONTRIBUTING.md`|`install.sh` stops installing screenpipe and a11y-helper launch agents, shortens the permission walkthrough to Screen Recording and Accessibility, and skips that walkthrough in dev mode. `install-dev.sh`, `SETUP.md`, and `CONTRIBUTING.md` update the documented setup and runtime flow around that install behavior.| |**3-terminal dev startup**
`dev-start.sh`, `tray/src-tauri/tauri.conf.json`, `ui/.gitignore`, `tests/tray_assets.rs`, `tray/README.md`, `CONTRIBUTING.md`|`dev-start.sh` is updated for a 3-terminal local workflow, and `tray/src-tauri/tauri.conf.json` changes the tray dev command to copy popover assets before starting the UI server. `ui/.gitignore` ignores the generated popover output. `tests/tray_assets.rs` adds regression coverage for the new startup shape, and `tray/README.md` and `CONTRIBUTING.md` update the documented dev path and build behavior.| |**Tray docs and bridge**
`README.md`, `CONTRIBUTING.md`, `SETUP.md`, `tray/README.md`|`README.md`, `SETUP.md`, `CONTRIBUTING.md`, and `tray/README.md` update the documented project layout, setup steps, runtime roles, command bridge path, build flow, and troubleshooting notes.| |**Updated log targets**
`scripts/meridian-cli.sh`, `.github/workflows/ci.yml`|`meridian logs` help text and dispatch are updated to use daemon, MLX server, and tray targets, and the CI guard narrows the `screenpipe` version pin check to the legacy bundle path.| ## Estimated code review effort 🎯 3 (Moderate) | ⏱️ ~20 minutes ## Poem > 🐇 Hop, hop—three terminals align, > Tray, daemon, MLX all run fine. > Popover copied, logs now true, > The rabbit drums a tidy review.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
| Check name | Status | Explanation | | :------------------------: | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------------- | | Title check | ✅ Passed | The title is concise and accurately summarizes the docs-focused dev setup and architecture update for the v1.64.0 fold. | | Description check | ✅ Passed | The description covers the PR purpose, major changes, and testing/test plan, with only minor template-format differences and an incomplete checklist. | | Docstring Coverage | ✅ Passed | Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. | | Linked Issues check | ✅ Passed | Check skipped because no linked issues were found for this pull request. | | Out of Scope Changes check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |✨ Finishing Touches
🧪 Generate unit tests (beta)
- [ ] Create PR with unit tests - [ ] Commit unit tests in branch `docs/post-v1.64.0`Comment
@coderabbitai helpto get the list of available commands.Ticket changed by: Akarsh-Hegde