a1e7c4128b
Add the 0.2.0 changelog entry (--detail dial, frame dedup, Whisper auto-chunking, --timestamps/--no-whisper, self-contained skill restructure). README: drop the "Why this exists" section, trim two speculative use cases, and condense the frame-dedup and detail-modes sections to state the facts. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
5.0 KiB
5.0 KiB
Changelog
All notable changes to /watch are documented here.
[0.2.0] — 2026-06-29
Added
--detaildial with four modes —transcript(captions only, no frames),efficient(fast keyframe pass, cap 50),balanced(scene-aware, cap 100, default), andtoken-burner(scene-aware, uncapped). Set the default withWATCH_DETAILin~/.config/watch/.env.- Frame deduplication (default on;
--no-dedupto disable). Before the budget cap, a pass downscales each frame to a 16×16 grayscale thumbnail and drops frames whose mean per-pixel difference from the last kept frame is within threshold — so the budget goes to distinct content instead of held slides and static recordings. The Frames report line shows how many near-duplicates were dropped. - Whisper auto-chunking. Audio over the 25 MB upload cap is split into evenly sized chunks, transcribed per chunk, with segment timestamps shifted back into source time. Partial failures are tolerated — transcription only fails if every chunk fails, so length alone no longer breaks it.
--timestamps T1,T2,…— grab a frame at each absolute timestamp; reserved against the cap, and the only frames produced under--detail transcript.--no-whisper— disable transcription entirely (frames only).- pytest suite covering config, dedup, download, fixtures, frames, setup, timestamps, watch, and whisper (no network; ffmpeg-synthesized clips).
Changed
- Restructured into a self-contained
skills/watch/package soSKILL.mdand itsscripts/runtime are siblings in one folder. This fixes installs on Codex, Cursor, Copilot, and other Agent Skills hosts:npx skills addnow copies the skill as a working unit instead of grabbing the rootSKILL.mdwithout its scripts. - Harness-agnostic path resolution —
SKILL.mdresolves$SKILL_DIRfrom where it was Read instead of the Claude-Code-only${CLAUDE_SKILL_DIR}, so script calls work on every host. /watchis now derived fromSKILL.mdfrontmatter; the separatecommands/watch.mdwrapper was dropped to avoid a duplicate slash command.balancednow full-decodes to detect every scene cut across the whole video. The previous early-exit was faster but kept only the first cuts and dropped the tail of long videos.token-burneris exempt from the long-video "sparse scan" warning, since it keeps every scene-change frame.--max-framesis now an override on top of each mode's default cap, rather than a fixed default of 80.
Fixed
- Non-Claude installs (
npx skills add) were dead on arrival — the installer copiedSKILL.mdwithout thescripts/it shells out to. The self-contained package layout resolves this.
Removed
V2_PLAN.mdandV2_CONCERNS.mdplanning docs.
[0.1.3] — 2026-05-09
Fixed
- Windows:
video.info.jsonis read as UTF-8 (#4). PreviouslyPath.read_text()defaulted to cp1252 on Windows and crashed on yt-dlp's UTF-8 output, silently dropping Title/Uploader from the report. Same fix applied to.envreads/writes inwhisper.pyandsetup.py. download.pynow logs info.json parse failures to stderr instead of swallowing them.
Security
- Hardened subprocess argv against option injection (#2): inserted
--before the URL in the yt-dlp argv, and tightenedis_urlto reject--prefixed sources and require a non-empty netloc. Resolved video/audio paths to absolute viaPath.resolve()before passing toffmpeg/ffprobe, so a relative path starting with-can't be misinterpreted as a flag.
[0.1.2] — 2026-04-24
Fixed
- Windows console crash: removed the emoji from the long-video warning in
watch.py; cp1252 consoles couldn't encode it. setup.pynow printswinget/pipinstall commands on Windows instead of "unsupported platform" — matches what the README already promised.
Changed
SKILL.mdnotes that on Windows the scripts must be invoked withpython, notpython3(the latter is the Microsoft Store stub on Windows).
[0.1.1] — 2026-04-24
Fixed
- Added
commands/watch.mdshim so/watchis callable when installed as a Claude Code plugin. Without it, the plugin loaded but the skill wasn't exposed as a slash command. scripts/build-skill.shnow stripscommands/from the claude.ai.skillbundle alongsidehooks/and.claude-plugin/.
[0.1.0] — 2026-04-24
Initial marketplace release.
Added
/watch <url-or-path> [question]slash command.- yt-dlp download with native caption extraction (manual + auto-subs).
- ffmpeg frame extraction with auto-scaled fps (≤2 fps, ≤100 frames, duration-aware budget).
--start/--endfocused mode with denser frame budget and transcript range filtering.- Whisper fallback (Groq preferred, OpenAI secondary) for videos without captions.
setup.pypreflight: silent--check, structured--json, and installer that auto-runsbrew installon macOS.- Session-start hook that prints a one-line status on first run / partial config.
.skillbundle packaging for claude.ai upload viascripts/build-skill.sh.