- Switch transcript font to Literata with improved typography
- Fix audio icon hover visibility in file list
- Implement CSS Highlight API for high-performance karaoke word highlighting
- Update text colors for better contrast
- **Resizer**: Increased hit area for easier grabbing; added visual hover state.
- **Split View**: Removed shadow causing visual gap; reduced to single pixel border.
- **Chat Button**: Consolidated into single responsive button (hidden text on mobile).
- Updated ChatInterface:
- Replaced 'Bot' icon with 'Sparkles' to better represent AI service.
- Removed 'Scriberr AI' text label for cleaner look.
- Applied 'lifted' style (shadow-sm) to message bubbles.
- Refined input area and Send button with brand colors.
- Updated ChatSessionsSidebar:
- Implemented 'lifted' card style as default state.
- Simplified hover effects to maintain position (no translation).
- Enhanced active state visibility.
- Integrated chat into AudioDetailView as a resizable split-screen side panel.
- Added ChatSidePanel for managing chat sessions and mobile overlay.
- Removed standalone ChatPage and associated routes.
- Removed 'Open Chat' action from Dashboard; added 'Chat' button to Audio Detail header.
- Refactored ScriberrLogo to export ScriberrIcon for use in the chat header.
- Adjusted global Header to align with main content in split view.
- Updated AudioDetailView layout validation and cleanup.
- Switch primary interface font to 'Outfit' for a premium aesthetic
- Increase font sizes in AudioFilesTable (headers text-sm, cells text-base) to compensate for Outfit's x-height
- Restore bold font weights globally for clearer visual hierarchy
- Update index.html and index.css for optimal font loading and variable definitions
- Fix checkbox padding in audio files table
- Improve bulk actions toolbar responsiveness on mobile
- Update tooltip font sizes for better readability
- Dashboard: restored spacing between header and table, updated margins
- ExecutionDialog: implemented curated parameter display based on model
- ExecutionDialog: optimized metric cards and timestamp layout for mobile
- implemented backwards search to find the LATEST started segment
- prevents highlighter from getting stuck on the first segment's last word
- ensures robust highlighting when switching views or seeking
- replaced O(N) linear search with O(logN) binary search for highlight sync
- reduced gap filling threshold from 1.5s to 0.7s to avoid visual lag/stickiness
- updated TranscriptSelectionMenu to use glassmorphism with better contrast
- updated computeWordOffsets to fill small gaps (<1.5s) between words to prevent playback stuttering
- implemented hit-testing using caretRangeFromPoint for Click-to-Seek
- rewrote useTranscriptSelection to work with character offsets instead of DOM nodes
- extracted computeWordOffsets to share text mapping logic
- updated TranscriptView to handle Cmd+Click seeking
- updated TranscriptSelectionMenu to use design system tokens
- Created useKaraokeHighlight hook for performant text highlighting
- Refactored TranscriptView to use single text node + CSS Custom Highlights
- Removed overhead of thousands of span elements in Compact view
- Updated AudioDetailView to prop-drill isPlaying and currentTime
- Replace custom RouterProvider with BrowserRouter.
- Update consumers to use useNavigate, useParams, and useLocation.
- Fix authentication persistence bug by unifying localStorage keys.
- Derive isAuthenticated state in useAuth to ensure correct hydration.
- Organize components into features/settings and features/transcription.
- Clean up unused components and contexts.
Fix for enhancement issue #194
Added option to use custom OpenAI API base URL.
If not configured the default OpenAI API base URL (https://api.openai.com/v1) will be used.
Does not change current behavior of apiKey, i.e if apiKey is already configured it will not have to be re-entered when modifying base URL.