Repository navigation
Conversation
Full plan for splitting the UI from the backend behind one serializable protocol pipeline (in-app only; remote tcode-to-tcode is future work the pipeline enables, sketched as design guardrails). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Serde on RuntimeEvent and boundary DTOs, accent colors as plain 0xRRGGBB integers instead of gpui::Rgba, and the plan-copy clipboard write moved behind a CopyToClipboard effect handled by the app shell. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Route, palette, sidebar collapse, quit-confirm state and every debug/ screenshot seed now live in a UI-owned WindowState entity; the runtime keeps only the persisted sidebar preference behind set_sidebar_collapsed and relaunch continuity returns its Settings section for the UI to apply. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The composer no longer reaches into ActiveSession's terminal workspace; clear_terminal_contexts is the last direct backend-field write from UI. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The four send commands (send_turn, steer, orchestrate_turn, confirm_relay_and_send) now take the user's typed text plus attachment paths; terminal contexts, review comments, attachment encoding and post-send draft clearing all happen runtime-side. Deferred and queued paths reuse private *_assembled routes so nothing assembles twice. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Command (76 variants) / Query / Event planes with a seq-numbered subscription envelope, NDJSON wire framing, forward-tolerant tagged enums, protocol-side mirrors for not-yet-serde runtime/services DTOs, and round-trip + unknown-variant tests. Purely additive; the two workspace-inventory guard tests register the new crate. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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.
Summary
Decouples tcode's interface from its underlying state: every interaction between views and the backend crosses one typed, serde-serializable contract, with the desktop app acting as the first client of its own backend. This prepares the architecture for future remote use (one tcode driving another), which itself stays out of scope here — the full design lives in
docs/ui-host-decoupling.md.Scope of the change, landed as incremental commits:
gpui-typed colors and clipboard access no longer leak through the runtime's public surface.WindowState; the UI performs no direct backend-field writes.tcode-protocolcrate: the single contract — command/query/event planes, seq-numbered subscriptions, NDJSON framing, forward-tolerant enums, round-trip tests.Merge criteria: backend compiles with no gpui dependency;
crates/uihas zeroEntity<AppState>references; the app runs fully through the serialized in-process pipe; fmt/clippy/tests/smoke green on all three platforms.🤖 Generated with Claude Code