Design: capture every TUI-only harness slash command properly instead of leaking the CLI's raw "isn't available in this environment" error, and grow the Claude sidebar into an interactive control panel. Grounded in the version-keyed initialize probes (~/.config/clide/claude): the advertised slash_commands list is the authoritative "forwards safely" set; TUI-only builtins are absent from it. Three layers: a declarative routing table (forward/owned/unavailable) replacing kClideOwnedCommands, a reactive catch-all that renders unknown TUI-command errors as hint cards, and D-6 parity controls in the sidebar Config/Activity tabs (model/effort/permission pickers, session controls, usage block). T-411 routing+capture, T-412 /effort spike, T-413 open-in-clide family, T-414 Config-tab controls, T-415 Activity controls + usage (revisits T-158). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
clide
An IDE for Claude Code CLI. Native rendering, terminal-first interaction, pql-powered queries, canvas and graph surfaces. Linux and macOS.
Architecture
Single Flutter package at the repo root. The app hosts everything in-process: IPC server, subsystem handlers (pane, files, editor, git, pql), and the extension framework. tmux owns Claude session persistence (D-41).
lib/— all Dart code. Core subsystems (lib/src/), kernel services (lib/kernel/), UI widgets (lib/widgets/), built-in extensions (lib/builtin/), the extension framework (lib/extension/).- PTY —
lib/src/pty/spawns child processes via Dart FFIposix_openpt()+posix_spawn()directly; no external helper binary. native/— vendored native libraries (libtree-sitter.sowith wasmtime embedded). Linux only today.- pql — external supporter tool. Clide wraps it for every query surface; never re-implements it.
Claude drives the UI through a clide CLI surface (Bash, not MCP). Every CLI subcommand has a UI affordance and every UI action has a CLI equivalent (D-6).
Built-in extensions
canvas, claude, claude_control, decisions, diff, editor, extensions_ui, files, git, graph, grammars_core, ipc_status, keybindings_ui, markdown, pql, problems, settings_ui, terminal, theme_picker, tickets, todos, welcome.
Building
Requires Flutter (stable channel) and pql
on the host. pql is a hard dependency — the pre-push gate runs pql decisions validate and the governance + ticket workflow is built on it (see its repo for
install). One-time setup:
make hooks && flutter pub get
pql init # once, in the repo root — wires up the pql skill + perms
Then:
make run # launch the desktop app
make test # fast suite: analyze + format + unit + widget + golden
make test-core # core subsystem tests (IPC, PTY, git, pane registry)
make test-a11y # accessibility contract tests
make test-integration # real app boot integration tests
make build-linux # flutter build linux
make build-macos # flutter build macos
make push-check # pre-push gate: decisions + core + fast + a11y + coverage + changelog
Status
Pre-v2.0 (2.0.0-dev). Interaction model and panel system landed. The Python Textual v1.2.0 predecessor is archived under legacy/.
Documentation
docs/architecture.md— current architecture (read this first).CONTRIBUTING.md— how to clone, build, test, file tickets, and write D-records.docs/initial-plan.md— historical design doc; preserved as a snapshot of the 2026-04 plan, much of it now superseded.governance/decisions/— confirmed decisions (D-NNN), open questions (Q-NNN), rejected alternatives (R-NNN).CLAUDE.md— Claude-addressed working notes (guardrails, repo layout).
License
MIT. See LICENSE.