mask_canvas.py:
- Redo stack: new strokes clear it, undo pushes onto it, redo pops from it.
- undo10(): undoes up to 10 steps in one call with a single redraw.
- Brush circle preview: white Circle patch tracks mouse position and shows
current brush radius; hidden when cursor leaves the axes.
- toggle_mask() / btn_mask: hides or shows the green mask overlay without
affecting the underlying mask data.
annotator.py:
- Removed Reload Saved button and reload_saved() — clip already loads its
saved state on navigation, making the button redundant.
- Added Undo×10 and Redo buttons wired to mc.undo10 / mc.redo.
- Added Hide Mask button (mc.btn_mask) to the toolbar row.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Previous: saves current clip and navigates back through session history;
disabled on the first clip, re-enabled automatically as you advance.
- Next: shows a dialog when a saved annotation already exists, letting the
annotator choose to replace it or keep the existing save before advancing.
- Removed the standalone Save button; Next auto-saves on every advance.
- Skip already wrote nothing to disk; clarified in README.
- Refactored _advance_clip into _switch_ui_to_clip (shared with prev/next).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Show a modal dialog when all clips have been processed and quit cleanly.
Add --no-skip CLI flag to include already-annotated clips (default remains to skip them).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- config.py constants -> config/config.yaml (user-editable, git-ignored)
- Questions and defaults now defined in the YAML, including per-question defaults
- ClipSelector no longer scans the data dir; reads a user-provided clips.txt instead
- Removed --daily / --time / --skip-existing-day args
- video_loader now samples frames evenly across the full clip
- pyyaml added as a dependency
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>