feat(claude-terminal): available on finished meetings + state-aware prompt - #28
Merged
Merged
Conversation
…rompt The embedded Claude Code terminal was only reachable during a live recording: when recording stopped, the route swapped LiveMeetingView for SummaryView, which had no Claude tab. And the bootstrap prompt was hardcoded as a "LIVE, in-progress meeting" that steered Claude away from get_summary — wrong once the meeting is over. - Add the Claude Code tab to the post-meeting summary view (same claudeCodeEnabled opt-in), mounting TerminalPanel primed for that meeting with live=false. - Thread a `live` flag through ptySpawn → pty_spawn → spawn_inner → bootstrap_script and branch the prompt: live reads the transcript; finished prefers the saved summary, falling back to the transcript. - Bump version to 1.0.1 + CHANGELOG. Co-Authored-By: Claude Opus 4.8 (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
The embedded Claude Code terminal (opt-in) is now reachable on the post-meeting summary view, not just during a live recording — and its priming prompt is now state-aware.
Why
Two gaps for using Claude Code after a recording finishes:
/meeting/$id/summaryswapsLiveMeetingView(which has the Claude tab) forSummaryView(which only had Summary + Copilot). So Claude Code was gone the moment a meeting ended.get_summary. Once the meeting is over, the saved summary exists and is the right starting point.Changes
SummaryView(meeting.$id.summary.tsx): adds a Claude Code tab gated by the sameclaudeCodeEnabledpref as the live view. When active, mountsTerminalPanelprimed for that meeting withlive={false}.pty.rs: adds aliveflag, threadedptySpawn → pty_spawn → spawn_inner → bootstrap_script, and branches the prompt — live recordings read the transcript; finished meetings start fromget_summaryand fall back to the transcript.tauri.ts/TerminalPanel.tsx: carry theliveparam (defaults totrue, so the existing live call site is unchanged).tauri.conf.json,Cargo.toml,package.json,desktop/package.json,backend/pyproject.toml, lockfiles, andCHANGELOG.md.Design note
Unlike the live view's persistent app-level
ClaudeTerminalHost(re-parented across routes so the session survives navigation mid-recording), the finished-meeting terminal is a plain mount: switching tabs kills the PTY and reopening respawns a freshclaude. That's intentional and fine post-recording. Persisting scrollback across tab switches on the summary page would be a larger change (binding the app-level host to an arbitrary viewed meeting) — deferred.Verification
pnpm typecheck✅ ·pnpm lint(--max-warnings=0) ✅cargo fmt --check✅ ·cargo clippy --workspace --all-targets -- -D warnings✅ ·cargo test --workspace✅ (26 passed)tauri:dev.RELEASING.md, the new prompt wording requires a Rust rebuild (Tauri doesn't HMR Rust), and the release will go through av1.0.1-rc.1signed/notarized draft DMG for on-hardware QA before the realv1.0.1tag.🤖 Generated with Claude Code