- Added python-dotenv to requirements.txt
- Config now automatically loads .env file if present
- Allows local development without manually exporting env vars
- Gracefully falls back if python-dotenv not installed
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add "Most referenced" sort option to sort by backlink count
- Backend now supports sorting by referenced_by_count field
- Search results now display reference counts as badges:
- Shows number of backlinks (videos linking to this one)
- Shows number of internal references (outbound links)
- Reference badges appear alongside transcript source badges
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Both primary and secondary transcripts use 'timestamp' field
with string format "HH:MM:SS.mmm" instead of numeric seconds.
Changes:
- Add parseTimestampToSeconds() to handle string timestamps
- Parse "HH:MM:SS.mmm" format (e.g., "00:00:39.480")
- Also handle "MM:SS" format
- Still support numeric timestamps (seconds or milliseconds)
- Check 'timestamp' field first (primary format in data)
This fixes the NaN issue and displays correct timestamps
for both primary and secondary transcripts.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Previous || chain could pass through invalid values causing NaN.
Now explicitly checks each possible timestamp field with:
- null check (field != null)
- NaN check (!isNaN(parseFloat(field)))
- Takes first valid numeric value found
This ensures timestamps always have a valid number, defaulting
to 0 if no valid timestamp field is found.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Secondary transcripts may use different field names than primary
transcripts. Updated renderTranscriptSegment to check for:
- start_seconds (primary format)
- start (alternate format)
- offset (common in media APIs)
- time, timestamp, startTime (other variations)
Also handles millisecond timestamps automatically by detecting
values > 10000 and converting to seconds.
Added console logging of secondary segment structure for debugging.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Previously, secondary transcript parts were not being indexed
into Elasticsearch, causing the frontend to receive empty arrays
and display zero timestamps.
Changes:
- Add transcript_secondary_parts to Elasticsearch mapping
- Include secondary parts in bulk indexing actions
- Build secondary_full text from parts if not provided
- Match primary transcript structure (nested with start/duration/text)
Note: Existing data needs to be re-indexed for this fix to apply
to videos that already have secondary transcripts.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Minimize button now toggles a comfortable viewing filter
- Applies brightness(0.5) contrast(1.25) sepia(0.6)
- Smooth 0.3s transition between modes
- Persists choice in localStorage
- Creates warm, dimmed aesthetic while keeping XP theme
Click minimize to toggle between bright and dimmed modes.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Make window full width on mobile (<=768px)
- Stack form controls vertically on small screens
- Fix query input overflow by making it full width
- Stack labels above inputs on mobile
- Make summary sections full width and stack vertically
- Remove side margins on mobile for full screen usage
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Change input fields to soft gray (#f5f5f5)
- Dim window body background to #f0f0f0
- Soften transcript backgrounds
- Maintains XP aesthetic while reducing eye strain
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create CSS variables for theme customization
- Define light and dark XP color schemes
- Dark mode uses darker backgrounds, lighter text
- Maintain classic XP beveled borders and shadows
- Add moon/sun toggle button in title bar
- Implement theme switching with localStorage
- Support system color scheme preference
- Smooth transitions between themes
The dark mode keeps the Windows XP look with:
- Dark teal/navy desktop background
- Dark gray window and button faces
- Lighter text colors
- Darker gradient title bars
- All original XP styling preserved
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Disable font smoothing completely with 'none'
- Use optimizeSpeed text rendering for crispness
- Force Tahoma font (classic Windows XP UI font)
- Remove all transforms and 3D perspective
- Use integer pixel font sizes
This should make all buttons, especially dynamically created
ones like transcript toggles, render consistently crisp
across all browsers.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add subpixel antialiasing for form controls
- Remove CSS filters that cause text blur
- Use native browser font smoothing
- Disable font ligatures for consistency
This fixes the issue where some button text appears blurry
in certain browsers (especially transcript toggle buttons).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add XP.css framework via CDN
- Restructure HTML with XP window components
- Use fieldsets for grouped controls
- Add classic window with title bar and status bar
- Replace dark mode with XP theme
- Update custom CSS to complement XP.css styling
- Use system colors (ButtonFace, Window, etc.)
- Add classic teal background
- Maintain all existing functionality
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Implement CSS custom properties for theming
- Add comprehensive light and dark color schemes
- Create theme toggle button in header
- Add theme persistence with localStorage
- Support system color scheme preference
- Smooth transitions between themes
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>