[twarp 07] specs: Claude Code panel#66
Merged
Merged
Conversation
Adds PRODUCT.md + TECH.md for feature 07 (resurrect Warp's Agent Mode rendering layer to host the local claude CLI; no service layer). Resolves the 7a detangle gate as per-component port-and-adapt from fea2f7e. Reconciles 06 -> merged and sets active -> 07. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
timomak
added a commit
that referenced
this pull request
May 27, 2026
Reconcile STATUS to git (spec #66 merged) and record the 7b impl PR. Tick the 7b sub-phase, flip the feature phase to impl-in-review, and note the resolved decisions: ⌘⌥K conflict-free (cmd-alt-k/ctrl-alt-k unbound), FeatureFlag::ClaudeCodePanel dogfood-only, launch-verified no startup panic, and the 7c–7h deferrals. Co-Authored-By: Claude Opus 4.7 (1M context) <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.
What
Spec PR for feature 07 — Claude Code panel. Adds
roadmap/07-claude-code-panel/PRODUCT.mdandTECH.md, and reconciles the roadmap now that feature 06 is fully merged.The feature brings back the rendering layer of Warp's Agent Mode — streaming assistant text, collapsible thinking blocks, structured tool-call cards, inline diff cards, todo list — as a panel that hosts only the local
claudeCLI (spawned with--output-format stream-json). No Warp AI account, no LLM client, no billing, no cloud sync — feature 02's removals stay removed; only the renderer comes back, driven by an external CLI the user already pays for.Key finding: detangle gate resolved — port-and-adapt, not
git restore7a's audit (folded into this spec PR) found the deleted renderer is fully recoverable from commit
fea2f7ea(the feature-02 spec commit, which predates every deletion PR #6–#18). But every rendering file stilluses deleted service types (crate::ai::skills::…, theRequests/LLMResponselifecycle, agent-profile context), so a wholesale restore would drag back exactly what feature 02 removed.Resolution: per-component port-and-adapt — port the leaf rendering primitives onto a new thin twarp-side
Transcript/TranscriptEventmodel, drop the service-coupled pieces (requests.rs,controller.rs,agent_input_footer/), and rewrite any component whose port costs more coupling than rebuilding. The subprocess driver lives in a new headless cratecrates/claude_code(unit-testable against golden transcripts); the UI inapp/src/claude_code_panel/.Panel integration is fully mapped to verified anchors:
ToolPanelView(left_panel.rs:193),compute_left_panel_views(view.rs:18083, beside the existing flag gate), the subprocess precedent (util/git.rs:26/91—command::r#async::Command+kill_on_drop),UniformListstreaming (global_search/view.rs:314), and the feature-05 diff renderer (code_review_view.rs:5984).Notable spec decisions
custom_tag_to_keystroke(notwith_key_binding) — applying the feature-06 lesson that the latter clobbersTrigger::Customand panics the menu at startup. Stays a remappableEditableBinding. Conflict-check deferred to impl per the 06 discipline.--permission-modeselector +--allowedTools. The stdin permission control-protocol is undocumented/unstable, so interactive in-transcript prompts are a version-gated enhancement that degrades gracefully (PRODUCT §42, TECH §Risks).claude -psubscription usage to a separate Agent-SDK credit. The panel meters nothing; it surfacesclaude's own auth/limit errors verbatim (PRODUCT §55). Worth a dogfood release note.Roadmap reconciliation (also in this PR)
merged(PR [twarp 06] tab rename: bind ⌘⌥R to rename the active tab #65 merged 2026-05-26; single sub-phase shipped).07-claude-code-panel.Validation
PRODUCT.md ends with a Smoke test organized per sub-phase (7b–7h) to run against a built twarp binary with
claudeinstalled. TECH.md maps each Behavior invariant to a concrete unit / integration / manual check, with the defensive-parser tests incrates/claude_codecalled out as critical and a version-pin + golden-fixture strategy for schema drift. Docs-only PR — nocargo fmt/clippy/presubmit required.🤖 Generated with Claude Code