Canopydocs v0.4.7

Limitations

One list, so nothing else in this documentation has to be read twice to work out whether it's real.

Platform#

LimitationDetail
macOS arm64 is the only validated platformLinux and Windows builds compile in CI and are published, but haven't been validated on a desktop.
No Intel or universal macOS buildIt would need x86_64-apple-darwin and --target universal-apple-darwin.
Not notarizedAd-hoc signed only, so installing from the DMG needs one xattr -dr com.apple.quarantine.
No Mac App Store buildCanopy can't be sandboxed: arbitrary process trees, arbitrary paths, private window APIs.
Linux tray has no click eventsLinux and Windows get a tray menu instead of the macOS click-to-toggle panel.

Assumptions#

AssumptionConsequence
Postgres for the database toolingSwitch, snapshot, export, restore and reset are Postgres-only. Other databases work as services; those actions don't apply.
Postgres client binaries matching the server's major versionA mismatch fails the dump and restore actions. Canopy picks the best available; it can't install one.
Node for auto-detectionService and command detection reads package.json. Other stacks are detected but configured by hand.
A login shell that sets up your PATHCommands inherit your $SHELL as a login shell, so setup that only lives in an interactive rc file won't be there.

Screens that are not wired yet#

These render, and say so, instead of pretending:

WhereWhat isn't wired
Settings → GeneralAutomatic updates, crash reporting.
Settings → TerminalEmbedded shell program, font, size, scrollback.
Settings → NotificationsEvery toggle: crash alerts, agent-blocked alerts, setup-finished. The in-app attention queue works regardless.
Settings → AdvancedCopy diagnostics, open logs, experiments (parallel setup, predictive warmup), clear caches, reset all settings.
Settings → SecuritySecret masking, keeping secrets out of exports, SSH key selection.
Settings → RepositoryDefault base branch, and the "defaults for new worktrees" toggles.
Settings → ServicesPer-service health check.
Settings → FilesOn-conflict policy, apply-on trigger, file mode, and an independent strategy (it's derived from the format).
Settings → SetupPer-task enable toggle, per-task working directory, on-failure and timeout policy, dry run.
Settings → Repository"Reveal in Finder" for the repo path.
Settings → AgentsPer-agent context toggles and a concurrency limit.
Settings, repo pagesThe "Learn more" documentation link.
ShortcutsRemapping.

Known gaps#

GapEffectIssue
Agent "waiting" is never detectedLaneSession only knows whether the process runs, so the Answer agent action and the waiting badge can't be reached. Every render path exists.#54
No provisioning record per worktree"Setup never run" is always false, so that next-action state and attention row can't be reached.#53
No disk-usage measurementThe overview's Size column always reads .#55
No parsed per-step resultsThe setup runner shows each step but not a result ("1,842 packages", "37 migrations").#60
No resolved-environment IPCService detail can't show the computed PORT or DATABASE_URL for a service.#59
Ports and database not previewed at create timeThe New worktree dialog says "assigned at creation" instead of duplicating backend logic that could drift.#58
IPC bridge not covered by the CSP checkThe check runs without a Tauri runtime, so connect-src ipc: is unverified. It needs tauri-driver and WebdriverIO.#93

Additional limitations#

No stash list. Stashing works; restoring is git stash pop in a terminal. Name your stash if you'll keep more than one.

No snapshot list. Snapshots are databases on the server, named by you.

Service logs are memory-only, a 160-line ring buffer per service rather than a file.

Teardown and migrate aren't editable in Settings' structured editor. They round-trip through the JSON preview, export and import, and you can edit them in the file directly.

Layout and sidebar visibility aren't persisted across launches.

Context is per machine. Worktree context lives in localStorage, not in the repo. Whether it should become a committed file that travels with the branch is still an open question.

No in-app updater. Download a new build, or brew upgrade --cask canopy.

No telemetry. Canopy makes no network requests of its own.

Reading "coming soon"#

Each one is a surface that already exists with its real layout and copy, disabled, behind a banner. That keeps the wiring purely additive, and it means this documentation can be specific about what a build does instead of describing an intention.

Documentation for Canopy 0.4.7. Controls marked coming soon are present in the interface but have no implementation behind them yet.