Simplified to just load OBS recordings:
- Removed all FFmpeg screen capture code
- Single 'Load OBS Recording' button
- Cleaner UI with progress indicator
- Handles videos without audio gracefully
- Remembers last project and video folder
Flow: Select Project → Load Video → Transcribe → Done
OBS handles recording, this tool handles processing.
UI Feedback:
- Show what's being captured (screen + mic) during recording
- Design/Analysis toggle now shows target KB path
- Color-coded status messages (red=error, green=success)
Multi-Screen Support:
- Added screen selector dropdown
- Enumerate displays using Windows API
- Pass screen geometry to FFmpeg for specific monitor capture
Button State Fixes:
- Disable Record button immediately on click (prevent double-click)
- Properly enable Pause button when recording starts
- All inputs disabled during recording
Error Recovery:
- Reset UI properly after recording failure
- Added 'Reset' button that appears on errors
- force_reset() method for emergency recovery
- Can always get back to idle state
Other:
- Better error messages
- Capture info label shows screen + mic being used
- recorder.py: Fixed Windows FFmpeg handling
- Use CTRL_BREAK_EVENT instead of stdin 'q' to stop recording
- Use NtSuspendProcess/NtResumeProcess for pause/resume
- Add stderr reader thread to prevent blocking
- Better error handling and status messages
- Check if recording actually started before returning success
- gui_capture.py: Added Load Video feature
- New 'Load' button in header to import existing videos
- Copies video to session folder and runs transcription
- Supports mp4, mkv, avi, mov, webm formats
Fixes:
- Record button now properly enables Pause button
- Recording stops cleanly on Windows
- Can load pre-recorded videos (from OBS, etc.)
- Added Browse... button to select projects folder
- Saves selected folder to config file (persistent)
- Works with SeaDrive paths
- Graceful handling when no folder selected
- Auto-detects common paths on startup
- Sessions now live inside project folders: <Project>/_capture/<session>/
- Project picker dropdown (scans projects folder)
- Auto-discovers projects with KB/ folder or _context.md
- Windows: D:/ATODrive/Projects
- Linux: ~/obsidian-vault/2-Projects
This aligns with the KB structure where Mario updates:
- KB/dev/gen-XXX.md (session captures)
- Images/screenshot-sessions/ (frames)
New features:
- Clip-based workflow: record short clips, keep or delete
- Toggle recording with Ctrl+Shift+R
- Session management (start, clips, end)
- Modern CustomTkinter GUI with dark theme
- Global hotkeys for hands-free control
- Whisper transcription (local, no API)
- FFmpeg screen + audio capture
- Export to clawdbot_export/ for Mario processing
Files added:
- recorder.py: FFmpeg screen recording
- session.py: Session/clip management
- hotkeys.py: Global hotkey registration
- kb_capture.py: Main application logic
- gui_capture.py: Modern GUI
- export.py: Merge clips, transcribe, export
Docs:
- docs/KB-CAPTURE.md: Full documentation
Entry point: uv run kb-capture
Fixes:
- Single 'Select Project Folder' button replaces confusing New/Open
- Auto-creates project if folder is empty or has no project.json
- Auto-opens project if project.json exists
- Removed editable project name field (was confusing)
- Fixed 'directory not empty' error - now handles existing folders gracefully
- Better error messages and confirmations
- Project path shown as read-only label
The flow is now:
1. Click 'Select Project Folder'
2. Pick any folder
3. If new: project created automatically
If existing: project opened automatically
TODO: Multilingual transcription support (Whisper handles mixed FR/EN poorly)
- Added AddVideoDialog for entering session topic when adding videos
- Videos now renamed to: gen-{num}_{topic}_{timestamp}.ext
- Shows next generation number in UI
- Shows project info (total videos, pending, processed)
- Better error handling and user feedback
- Cleaner layout with sections
When adding a video, user can enter a topic like 'lateral-support-detail'
and the video is automatically renamed to a standardized format.
- New flag: cad-doc project process --export-only
- Extracts frames and transcribes locally (no API calls)
- Exports to clawdbot_export/ folder for Clawdbot processing
- New 'exported' status for videos awaiting Clawdbot
- Updated CLI status display to show exported count