Skip to content

feat(claude-terminal): available on finished meetings + state-aware prompt - #28

Merged
emretheus merged 1 commit into
mainfrom
feat/claude-code-finished-meetings
May 29, 2026
Merged

feat(claude-terminal): available on finished meetings + state-aware prompt#28
emretheus merged 1 commit into
mainfrom
feat/claude-code-finished-meetings

Conversation

@emretheus

Copy link
Copy Markdown
Owner

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:

  1. It disappeared entirely. When recording stops, the route /meeting/$id/summary swaps LiveMeetingView (which has the Claude tab) for SummaryView (which only had Summary + Copilot). So Claude Code was gone the moment a meeting ended.
  2. Wrong priming. The bootstrap prompt was hardcoded as a "LIVE, in-progress meeting" and explicitly told Claude not to call 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 same claudeCodeEnabled pref as the live view. When active, mounts TerminalPanel primed for that meeting with live={false}.
  • pty.rs: adds a live flag, threaded ptySpawn → pty_spawn → spawn_inner → bootstrap_script, and branches the prompt — live recordings read the transcript; finished meetings start from get_summary and fall back to the transcript.
  • tauri.ts / TerminalPanel.tsx: carry the live param (defaults to true, so the existing live call site is unchanged).
  • Version bump to 1.0.1 across tauri.conf.json, Cargo.toml, package.json, desktop/package.json, backend/pyproject.toml, lockfiles, and CHANGELOG.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 fresh claude. 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)
  • Frontend wiring verified live via Vite HMR in tauri:dev.

⚠️ Not yet QA'd on-device. Per RELEASING.md, the new prompt wording requires a Rust rebuild (Tauri doesn't HMR Rust), and the release will go through a v1.0.1-rc.1 signed/notarized draft DMG for on-hardware QA before the real v1.0.1 tag.

🤖 Generated with Claude Code

…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>
@emretheus
emretheus merged commit b2bb176 into main May 29, 2026
4 checks passed
@emretheus
emretheus deleted the feat/claude-code-finished-meetings branch May 29, 2026 23:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant