A Rust replatform experiment for a Claude Code session workspace. Native, terminal-multiplexer-style (tabs + splits + keyboard driven), with the quality bar the predecessor lacked.
Inspired by doctly/switchboard, the
Electron app it replatforms; see docs/background/ for
the full reasoning archive.
This is an early scaffold. Status, scope, and design live in:
docs/PRD.md— Product Requirements Documentdocs/ARCHITECTURE.md— ArchitectureROADMAP.md— feature buckets (MoSCoW)CHANGELOG.md
cargo run -p termherd-appcargo test --workspacecargo fmt --all --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
cargo deny check # if cargo-deny installedPinned to rust 1.95.0 via rust-toolchain.toml. Edition 2024.
crates/core — domain, headless App, workspace (pane tree), keymap, ports
crates/claude — Claude CLI format codec (path encode/derive, JSONL) [pure]
crates/app — iced GUI shell (M3+); currently a tracing+single-instance stub
The hexagonal dependency rule: app → core ← adapters (and core →
claude). core depends on nothing concrete.