Ethanfel
b57131a3d9
feat: keyboard navigation for timeline
...
Arrow keys / J / L: step one frame; Shift = 1 second jump
Space / P: toggle play/pause
K: pause and return to cursor
E: trigger export
M: jump to next export marker (wraps)
Keys are suppressed when a text field has focus.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-06 17:35:46 +02:00
Ethanfel
9652b249ba
feat: extract audio alongside WebP image sequence
...
Adds build_audio_extract_command and runs it in ExportWorker after the
frame sequence completes. Audio written to <sequence_dir>.wav (lossless
pcm_s16le). Extraction failure (no audio stream) is silently ignored.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-06 17:20:40 +02:00
Ethanfel
fe3e642dfa
fix: guard mask generation against WebP sequence export path
2026-04-06 17:19:03 +02:00
Ethanfel
855797a1b3
docs: clarify _last_export_path holds dir path for WebP sequence
2026-04-06 16:07:44 +02:00
Ethanfel
f9649f7584
feat: wire WebP sequence format into export flow
2026-04-06 16:05:26 +02:00
Ethanfel
13c8a8aeab
style: rename fmt_idx to idx in _cmb_format setup
2026-04-06 16:04:30 +02:00
Ethanfel
c163b298c4
feat: add format combo (MP4 / WebP sequence) to export row
2026-04-06 16:02:26 +02:00
Ethanfel
d3c4dea597
fix: guard makedirs in ExportWorker.run inside try/except
2026-04-06 16:01:16 +02:00
Ethanfel
f86442322f
feat: ExportWorker supports image_sequence mode
2026-04-06 15:59:17 +02:00
Ethanfel
1ab18e6ab5
fix: use -c:v and explicit -an in image_sequence ffmpeg command
2026-04-06 15:58:33 +02:00
Ethanfel
93028d9ac7
feat: build_sequence_dir and image_sequence flag for build_ffmpeg_command
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-06 15:56:16 +02:00
Ethanfel
c57ab4df77
docs: image sequence export implementation plan
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-06 15:54:31 +02:00
Ethanfel
4f2feb1907
docs: image sequence export design
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-06 15:53:13 +02:00
Ethanfel
eca49caee9
fix: sam_masks — correct SAM2 API and mask logit threshold
...
Use SAM2VideoPredictor.from_pretrained() instead of the checkpoint-based
build_sam2_video_predictor() which doesn't accept HuggingFace model IDs.
Threshold out_mask_logits at 0.0 and squeeze shape before converting to
binary PNG.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-06 15:45:53 +02:00
Ethanfel
3c6f83de5a
feat: wire mask generation and settings into MainWindow
2026-04-06 15:39:07 +02:00
Ethanfel
ccc1e04acb
feat: MaskWorker, SetupWorker, SettingsDialog
2026-04-06 15:37:12 +02:00
Ethanfel
44bcb285ac
feat: sam_masks.py script using SAM2 video predictor
2026-04-06 15:35:29 +02:00
Ethanfel
de6f48b508
feat: depth_masks.py script using Depth Anything V2
2026-04-06 15:34:55 +02:00
Ethanfel
9bc65a2b25
feat: add build_mask_output_dir utility
2026-04-06 15:34:08 +02:00
Ethanfel
8fe3dc1c1b
docs: mask generation implementation plan
2026-04-06 15:32:36 +02:00
Ethanfel
da5d903286
docs: mask generation design
2026-04-06 15:26:03 +02:00
Ethanfel
29b404ec23
feat: wire portrait crop into MainWindow
2026-04-06 13:53:55 +02:00
Ethanfel
d8c7642f15
feat: CropBarWidget for portrait crop positioning
2026-04-06 13:51:56 +02:00
Ethanfel
1a43c4725d
feat: portrait crop filter in build_ffmpeg_command
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-06 13:51:02 +02:00
Ethanfel
d7b704efc3
docs: portrait crop implementation plan
2026-04-06 13:48:40 +02:00
Ethanfel
87be0d2408
docs: portrait crop design
2026-04-06 13:44:24 +02:00
Ethanfel
625ca2d21c
feat: resize short-side field with QSettings persistence
2026-04-06 13:33:13 +02:00
Ethanfel
798c5ff4f4
feat: add short_side resize to build_ffmpeg_command
2026-04-06 13:31:58 +02:00
Ethanfel
ce7e808249
docs: resize output implementation plan
2026-04-06 13:17:35 +02:00
Ethanfel
b8f9d6541b
docs: resize output design
2026-04-06 13:16:28 +02:00
Ethanfel
207518902f
feat: wire timeline markers into MainWindow
2026-04-06 13:11:05 +02:00
Ethanfel
5960a2fe78
feat: timeline markers with hover tooltip
2026-04-06 13:10:12 +02:00
Ethanfel
63d48a968c
feat: DB schema v2 — store start_time and output_path, add get_markers
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-06 13:08:49 +02:00
Ethanfel
c34f3b4039
docs: timeline markers design
2026-04-06 13:03:07 +02:00
Ethanfel
bcde41c4fc
fix: list item selection styling, advance() guard against no selection
2026-04-06 12:59:18 +02:00
Ethanfel
f93fea2a22
fix: clear stale DB warning, allow playlist panel to resize
2026-04-06 12:55:58 +02:00
Ethanfel
ccdb50c6a4
feat: wire playlist and DB into MainWindow
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-06 12:53:41 +02:00
Ethanfel
75fd43577e
feat: PlaylistWidget with drop support and auto-advance
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-06 12:51:46 +02:00
Ethanfel
dab4b26ce1
fix: utcnow deprecation, DB unique constraint and index, regex comment
2026-04-06 12:50:53 +02:00
Ethanfel
558fa23da4
feat: ProcessedDB and _normalize_filename with tests
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-06 12:42:03 +02:00
Ethanfel
3124b64c29
docs: playlist and processed-files DB design
2026-04-06 12:37:58 +02:00
Ethanfel
c5f508ffb9
fix: remove redundant _reset_counter call in _pick_folder
2026-04-06 12:27:51 +02:00
Ethanfel
1fb69b10fb
fix: Wayland XCB force, AB-loop clamp, folder textChanged, drop validation
2026-04-06 12:26:08 +02:00
Ethanfel
73abd5429a
feat: dark theme, complete 8-cut tool
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-06 12:22:49 +02:00
Ethanfel
9981cc84c1
docs: clarify format_time truncation and counter reset behavior
2026-04-06 12:22:17 +02:00
Ethanfel
322d89b688
feat: complete MainWindow UI with playback and export
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-06 12:19:54 +02:00
Ethanfel
ad1a4283e8
feat: MpvWidget with seek and AB-loop
...
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-06 12:12:53 +02:00
Ethanfel
ba736fe532
fix: end QPainter in finally block to prevent resource leak
2026-04-06 12:11:39 +02:00
Ethanfel
f0313b10a8
feat: TimelineWidget with cursor and 8s highlight
2026-04-06 12:09:35 +02:00
Ethanfel
8a97c3c7c2
fix: ffmpeg command type hint, -ss comment, FileNotFoundError handler
2026-04-06 12:08:42 +02:00