Conversation
A GPUI window over herdr sessions, with a two-tier plugin system.
4,333 lines across five crates; cargo test --workspace is 68 green,
clippy and fmt clean, live smoke test passes against a real herdr daemon.
crates/zeddy-herdr/ the only code that knows herdr exists
crates/zeddy/ the window
crates/zeddy-plugin/ the contract a plugin is written against
crates/zeddy-plugin-host/ the only code that loads foreign code
crates/zeddy-vt/ the only code that knows a VT parser exists
Verified working: private daemon in its own namespace
(~/.local/state/zeddy/herdr); workspace adoption per directory; frames
stream and paint; PTY resizes to the measured grid; sidebar and tab
chromes render; both plugin tiers load (Hello is a real cdylib whose
activate() ran across the ABI boundary).
Decisions recorded in docs/adr/:
0001 a private herdr daemon
0002 gpui + ui + theme rather than Zed's workspace crate (makes
zeddy GPL-3.0-or-later; native plugins inherit it)
0003 two plugin tiers (native cdylib, web)
0004 alacritty's VT core rather than libghostty
Known gaps:
- web plugin panes render a placeholder; the OS webview is not hosted yet
- typing not tested end-to-end (no assistive access for synthetic keys);
keys.rs is unit-tested per keystroke and the transport is live-tested
Claude-Session: https://claude.ai/code/session_01Va1ZF7ko3JMvYWF2nxvewx
Replace the custom VT renderer with Zed's terminal model and view, preserve Chartr-specific hosting behavior, and pin Herdr's semantic mouse forwarding with live daemon handoff.
Preserve the Wayfinder interface and icon refinements captured by the original chartr repository transplant, as a separate commit above the complete rewrite history. These changes were uncommitted in chartr-zeddy at the time of import. Recovered-From: 887eae44047d3b91fdf13a3dc7294e869b7fb2e9 Source-Commit: b31e997
Join the legacy Chartr history at v0.2.4 with all 85 original chartr-zeddy commits, retaining their original commit IDs, authors, dates, and ancestry. The rewrite replaces the legacy working tree. A separate commit on the rewrite line preserves the Wayfinder refinements captured by the earlier transplant. Resolve the integration to the exact tree of the previous snapshot import, including the chartr repository metadata and migration documentation. No application source or working-tree content changes in this history repair. Preserve the former snapshot at backup/rewrite-rust-snapshot-20260907, the legacy release at legacy/v0.2.4, and both original source branch tips under archive/chartr-zeddy/. The source repository and its uncommitted edits remain untouched. Source-Repository: chartr-zeddy Source-Commit: b31e997 Legacy-Commit: be8073f Replaces-Snapshot: 887eae44047d3b91fdf13a3dc7294e869b7fb2e9
Give workspace bindings terminal-level precedence at startup and during live rebinding. Keep Linux Ctrl+K passthrough, test the platform-specific upstream word bindings, and cover restoring terminal input after a shortcut is rebound or cleared.
Unlock the launch guard on drop so a descriptor inherited by a concurrent fork cannot briefly retain the lock after a claim or release completes. Cover mutual exclusion and reacquisition while a duplicate descriptor remains open.
Use lowercase chartr throughout branding, crates, plugin manifests, packaging, and runtime namespaces. Rename internal view types and rebuild the private backend with the matching version identity. Refresh the README, app icon, and workspace reference. Shorten Wayfinder fog labels to fit their available width without condensing glyphs. Validated with 279 Rust tests, 9 JavaScript tests, the native plugin example, the theme playground build and lint, formatting, and shell syntax checks.
Removed duplicate screenshot from README.md.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I rewrote chartr as a lean agent multiplexer in Rust. The focus was to make it a solid core that remains flexible to extension, in the shape of a plugin system.
Core chartr's features:
Bundled plugins:
Old go/svelte chartr code will be archived and remain in
legacy/v0.2.4branch for reference.The product's functionality itself is quite complete with possible bugs. Will merge this when chores like the README, release pipeline, iconsets, and other minor stuff are sorted out.