Show session transcript in menu bar panel#82
Conversation
Adds a scrollable THIS SESSION section to the companion panel that displays each voice exchange as it happens. User transcript appears in dim text with a timestamp; Claude's response appears below with a copy-to-clipboard button. Auto-scrolls to the latest entry. History is in-memory only — nothing is written to disk.
Moves ConversationEntry into its own file so it can be imported by both CompanionManager and CompanionPanelView. Makes conversationHistory @published so the panel can observe and display it in real time. Adds a timestamp to each entry for the session transcript UI.
Covers field storage, UUID uniqueness across instances, and ID stability on repeated access — following the existing Swift Testing pattern.
|
Hey @farzaa, I noticed there seems to be a gap between the current state of the repo and the latest downloadable release, particularly around the menu bar panel UI. My changes here are based on what's in the repo, so they may not align with where the UI is heading in the release version. I'm totally happy to adjust this feature to match the latest release UI, or rethink the approach entirely if you have a different direction in mind for the transcript/history experience. Just let me know what would be most useful. I'm open to iterating on this however works best for the project. |
|
Hi, Severity: action required | Category: correctness How to fix: Observe latest entry id Agent prompt to fix - you can give this to your LLM of choice:
Found by Qodo code review. FYI, Qodo is free for open-source. |
Watching .count stops triggering onChange once history stabilizes at 10 entries; switching to .last?.id fires on every append since each new ConversationEntry gets a fresh UUID. Also adds unit tests covering ConversationEntry field storage, UUID uniqueness, ID stability, and the append+truncate scroll trigger contract.
Problem
Once Clicky responds, the conversation is gone — there's no way to
review what was said or copy Claude's response without catching it
in the moment.
Fix
Adds a scrollable THIS SESSION section to the companion panel that
appears after the first voice exchange. Each entry shows:
The panel auto-scrolls to the latest entry as new exchanges come in.
Privacy
History is in-memory only — nothing is written to disk, no external
services are involved. The transcript disappears when the app quits.
Changes
ConversationEntry.swift: new model type (id, userTranscript, assistantResponse, timestamp)CompanionManager.swift: conversationHistory changed to @published so the panel can observe itCompanionPanelView.swift: sessionTranscriptSection and conversationEntryRow views added