feat(AUD-69/73/74/75): app shell, recording view, idle screen, session detail#14
Merged
Merged
Conversation
…n detail - RecorderContext: share recorder state across AppShell without route changes - AppShell: sidebar (265px) with session list + "New Recording" button; main area swaps between RecordingPage (while recording) and Outlet (idle) - SessionList/SessionListItem: real-time reload on transcription/summary events - SessionListPage: refactored to idle-only screen with template dropdown and mic button - RecordingPage: elapsed timer, stop button, live waveform - SessionDetail: session header, status badges, Summary/Transcript tab bar, react-markdown summary, timestamped transcript; reloads on IPC events - router: replace MainLayout with AppShell; add /sessions/:id child route - IPC: add audist:transcript:read handler; expose via preload Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…le screen - Remove TemplateDropdown from SessionListPage until AUD-52 backend is ready - New Recording button navigates to / instead of starting recording directly Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- AppLogo: match Figma SVG exactly (5 centred bars, flat accent fill, no gradient) - RecordingPage: replace animate-pulse dot with animate-ping RecordingPulse pattern - AppShell: resizable sidebar (180–380px drag handle), updated logo area with border-b, recording indicator uses animate-ping, New Recording button changed to ghost/accent outline style, toolbar uses lucide Settings icon with border-b - SessionListItem: rewritten to Figma sidebar style — name + time on row 1, monospace duration on row 2, accent left-bar active indicator, transcribing progress bar - SessionList: recording in-progress item updated to animate-ping dot pattern - SessionDetail: add audio player bar (play/pause, scrubber, speed selector), inline meta badges for transcription/summarisation status, tabs use bottom-border active indicator, transcript renders speaker names with accent colour - Fix session detail bug: component was keeping stale session state when navigating between sessions; now resets and reloads whenever route id changes - tokens.css: add --color-text-tertiary, --color-accent-secondary - main.css: add --color-surface / --color-surface-raised aliases + new token mappings - Add lucide-react dependency Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add data-testid="session-item" to SessionListItem for reliable test selection - session-history: update empty state text, swap li→[data-testid] locators, update duration format (1m 30s → 01:30), replace status badge assertions with dot/progress-bar checks; error message now verified via SessionDetail navigation - summarisation: rewrite 4 inline-expand tests to use the new SessionDetail flow (click session → verify summary/buttons in detail view) - permissions/prefs-window/save-directory: replace broken <header> locator with sidebar complementary role selector for the audist wordmark Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds a centralised keybinding system so shortcuts can be registered and changed in one place, then wires up ArrowUp/ArrowDown to cycle through complete sessions with wraparound. E2E tests cover next, prev, wrap, and input-focus guard. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Removes the simulated timer-based player UI from SessionDetail. Real playback will be wired up in AUD-80 once the custom protocol and preload API are in place. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Type KEYBINDINGS as Record<string, KeyBinding> (satisfies was narrowing optional modifier fields away, causing TS2339 errors) - Remove stale setCurrentTime/setIsPlaying reset calls left over from the playback bar removal Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add Tooltip component (CSS group-hover, no lib dependency) - Wrap Reveal in Finder and Copy summary buttons with hover labels - Copy button icon swaps to Check (green) on copy - "Summary copied to clipboard" popover appears above the button on copy Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces the inline CSS group-hover tooltip with a createPortal implementation that renders at document.body, escaping overflow-hidden parents and toolbar stacking contexts. The copy button drives the "Summary copied to clipboard" confirmation via Tooltip's open prop. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ary buttons title attributes were removed when switching to the portal Tooltip component. Added aria-label to both buttons and updated the e2e test to match. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Rename tooltip from "Summary copied to clipboard" to "Copy summary to clipboard" - Remove MoreHorizontal button with no action from session detail header - Clamp tooltip x-position to viewport edges so it doesn't overflow on the right Co-Authored-By: Claude Sonnet 4.6 <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.
Summary
AppShellwith 265px sidebar (session list + "New Recording" button),RecorderContextto share recorder state,SessionList/SessionListItemwith real-time reload on IPC eventsSessionListPagerefactored to idle-only screen (mic button, template dropdown, static waveform)RecordingPagewith elapsed timer, stop button, live waveform; conditionally rendered by AppShell during recordingSessionDetailwith session header, status badges, Summary/Transcript tab bar, react-markdown summary, timestamped transcript with accent-coloured timestampsArchitecture notes
AppShellinstead ofMainLayout;/sessions/:idadded as child routeRecorderContextwrapsAppShellso recorder state persists across content swaps without navigationaudist:transcript:readIPC handler added (readstranscript.txtfrom session dir); exposed via preloadTest plan
SessionDetailloads with correct header/badges🤖 Generated with Claude Code