Tier-0 stub flipped to the real Claude pane. Primary-per-repo semantics: session name is `clide-claude-<hash>` where <hash> is FNV-1a over the workspace root path, so reopening clide attaches to the same `claude` process through `tmux new-session -A`. Primary has no close button — closing the tab disposes the widget but deliberately does NOT call pane.close, so the tmux session survives until the user actually exits claude or clide is shut down. Secondary sessions (spawned via the claude.new-secondary command registered here, UI wiring lands next) close normally and the pane.close cascades into tmux kill-session. Graceful fallback when tmux isn't on PATH: retries the spawn with argv=['claude'], surfaces "no-tmux · fresh every launch" in the header subtitle so the user knows persistence is off. Session-naming unit tests cover determinism + uniqueness per repo. Full app suite: 174 tests passing. Co-Authored-By: Claude <noreply@anthropic.com>
clide
A Flutter desktop IDE for Claude Code. Markdown-first content, pql-powered queries, canvas and graph surfaces, a Go sidecar handling PTYs / subprocesses / git / pql. Claude drives the UI through a clide CLI.
Currently pre-v2.0, scaffolding. The north-star design lives in docs/initial-plan.md; architectural decisions are captured in docs/ADRs/. The Python Textual v1.2.0 implementation is archived under legacy/ for reference.
Three surfaces, one tool
app/— Flutter desktop application (Linux / macOS; Windows is a stretch).sidecar/— Go sidecar/CLI, single binary with two modes:clide <subcommand>(one-shot for Claude) andclide --daemon(long-running sidecar for the app). Owns PTYs, subprocesses, file watchers, git, pql invocations.pql— external supporter tool. clide wraps it for every query surface; never re-implements it.
Why the rebuild?
The Python Textual implementation (legacy/) proved the pane model but capped at terminal-only rendering. A short-lived experiment (claudian, April 2026) explored an Obsidian-plugin approach and was abandoned because Obsidian is Electron, and the user's history with terminal-in-Electron ruled that host out.
Flutter desktop resolves both constraints: native Skia rendering avoids Electron's failure modes, xterm.dart gives us a solid terminal surface, and the pane model can be rebuilt natively. The Obsidian ideas worth keeping (canvas, graph) fold in; everything else (vault concept, inline query tables, plugin ecosystem inheritance) doesn't.
Status
No build yet beyond the repo scaffold. Tier 0 acceptance: sidecar daemon runs, Flutter app connects, empty IDE shell appears with placeholders.
License
MIT. See LICENSE.