fix(recording): give the Recording tab its own screens and a settings panel - #295
Merged
Conversation
… panel The tab nested an HSplitView inside ContentView's NavigationSplitView, in a window pinned to 950pt. Two sidebars competed for the same width and the detail column was left too narrow to read. On top of that, six capture switches sat between the transport and the transcript — set-once configuration occupying the screen you watch while a meeting runs. Split it into two dedicated screens behind a segmented control: - Record is only live state: transport card with the timer and level meters, banners, transcript, summary. A read-only row of chips says what the next recording will capture, so the settings are still legible without being editable here. - Library is only past recordings: a full-width searchable card list, with the recording detail replacing it and a back button in the top bar. No second sidebar, so nothing is competing for width. Every switch moves into MeetingRecordingSettingsPanel, opened by a Settings button in the top bar through the same slidingPanel that Enhancement, Dictionary and Models already use. Capture toggles lock while a recording is in progress and say why. Because the toggles are no longer on the Record screen, the transport card now explains inline when no source is on, rather than leaving a disabled Start button with no reason given. Closes #294
…g highlight Two things the rebuilt Recording tab made visible on screen. Speaker tints came from `label.hashValue`. Swift seeds string hashing per process, so the same voice came back a different colour on every launch, and adjacent labels could collide — "Speaker 1", "Speaker 2" and "Speaker 3" all rendered pink in the same transcript, which is the one case the colours exist to tell apart. Folding the bytes instead is stable across launches and puts labels differing only in their last character on consecutive palette entries. The transcript also lit its first line as the active one before anything had been played, because the active line was derived from a player sitting at zero. It now stays unlit until playback actually starts or the user seeks.
Merged
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.
Closes #294
What was wrong
MeetingRecordingViewnested anHSplitViewinsideContentView'sNavigationSplitView, in a window pinned to.frame(width: 950). Two sidebars competed for the same width and the detail column was left too narrow to read.What changed
MeetingRecordingView— top bar with a segmented Record / Library control, a live recording pill (red dot plus elapsed time, click to jump back to Record), Import on the Library screen, and agear + Settingsbutton matching the pattern inEnhancementSettingsView.MeetingLibraryView, or the selected recording'sMeetingDetailViewwith a back button in the top bar.MeetingLibraryView(new) — full-width card list: waveform tile, title, duration / speakers / size / recovered flag, a transcript preview line, a Summary chip and a chevron. Search across titles and transcripts, recording count, context menu for Finder and Trash with a confirmation, and a hero empty state with an Import call to action.MeetingRecordingSettingsPanel(new) — the app's standard sliding panel,Formwith.groupedstyle like every other settings panel. Sections: Capture (microphone, system audio, warning when both are off), Transcript (live, speakers, summarise, with dependency-based disabling), Automatic (call-app detection), Library (Import, Show Recordings Folder). Capture toggles lock mid-recording and say why.Since the toggles left the Record screen, the transport card now explains inline when no capture source is on and links to the settings panel, instead of showing a disabled Start button with no explanation.
Verification
make build— BUILD SUCCEEDEDxcodebuild test -only-testing:ZermTests/MeetingRecordingTests— all passNot visually checked in a running app yet; the changes are view-layer only and the build is the gate that ran.