Commit Graph

18 Commits

Author SHA1 Message Date
bradautomates
03ceb42f7f chore: release 0.3.2
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 11:25:42 +10:00
bradautomates
7948897be8 docs: point Claude users to Claude Code and offer to open the config for keys
The README now says Watch runs in Claude Code (Desktop's Code tab, VS
Code, or a terminal) and does not work in Claude Chat or Cowork. Cowork's
cloud environment drops the Gemini key between tasks and most sites block
yt-dlp from it. The standalone Chat upload instructions are removed.

Setup lets the user choose how to add an API key: paste it in chat, or
have the agent open ~/.config/watch/.env in their editor.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 11:25:31 +10:00
bradautomates
457627318c fix: keep SKILL.md frontmatter within the Agent Skills spec
Claude's skill upload rejects frontmatter keys outside the spec. SKILL.md now
uses only spec keys, with the version under metadata.version.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 10:59:01 +10:00
bradautomates
285d7f46eb fix: prefer English captions when the source language is unknown
Without a reported language, selection fell back to alphabetical order,
so an English video with de + en manual tracks got a German transcript.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 09:37:07 +10:00
bradautomates
fdbffd1c2e feat: support only the latest yt-dlp and update it on HTTP 403
A 403 now carries an update-and-retry-once hint, the skill contract tells
the agent how to update yt-dlp through its owning package manager, and CI
installs the latest yt-dlp instead of a pinned baseline.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 09:34:38 +10:00
bradautomates
c1975ef3b1 fix: detect -fps_mode in FFmpeg 9 help output
FFmpeg 9 lists the option as "-fps_mode[:<stream_spec>]", so the
whitespace-anchored probe missed it and every local run lost its frames.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 09:14:15 +10:00
bradautomates
07a1560b6e fix: Gemini acceptance findings — auth on HTTP 400, honest source line, work-dir cleanup
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-17 13:54:10 +10:00
bradautomates
bb1738b7bd docs: Gemini engine in the skill contract, README, and changelog
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-17 13:48:42 +10:00
bradautomates
afbc483356 feat: setup wizard engine choice and Gemini-aware readiness
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-17 13:47:35 +10:00
bradautomates
6dcc18a859 feat: route watch through the Gemini engine when a key is present
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-17 13:47:04 +10:00
bradautomates
2bbb265d5b feat: stream uploads to the Gemini Files API with polling and cleanup
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-17 13:46:37 +10:00
bradautomates
65d8dd1194 feat: Gemini interaction adapter with categorized, key-safe failures
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-17 13:46:22 +10:00
bradautomates
ccf43c5718 feat: resolve watch engine and Gemini key in shared config
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-17 13:46:00 +10:00
bradautomates
e90ef44c32 Implement v0.3.0 reliability fixes and managed WhisperX transcription
Add opt-in local transcription with managed installation, cache warm-up,
and a one-time backend choice while preserving native-caption priority.

Correct frame timing and coverage, caption provenance and download
ownership, configuration parsing, provider pairing, and partial reports.
Update cross-host instructions, packaging, and test-gated release CI.

Validate 198 isolated tests, real local English and Spanish inference,
network-denied warm-cache inference, live captions/media, and packaging.
Record platform and account-dependent acceptance limits separately.
2026-09-12 22:09:43 +10:00
bradautomates
83da59fa78 Fix WATCH_DETAIL silently falling back to default
An inline comment on the WATCH_DETAIL value line (e.g.
`WATCH_DETAIL=balanced  # ...`) parsed as the literal "balanced  # ..."
value, failed validation, and silently reverted to the default mode.

- setup.py: move the allowed-values list off the value line in the env
  template so the wizard no longer models a trailing inline comment.
- config.py: strip a whitespace-preceded inline comment from unquoted
  values so a stray comment can't silently break selection again
  (preserves '#' inside quotes / API keys).
- SKILL.md: note to write the bare key with no trailing comment.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-30 17:20:07 +10:00
bradautomates
242ba568ed Bump version to 0.2.0
Frame dedup and Whisper auto-chunking are user-facing feature additions, so
bump the minor version across the three in-sync version files (SKILL.md
frontmatter, .claude-plugin/plugin.json, .codex-plugin/plugin.json).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 23:19:16 +10:00
bradautomates
304b639b4d Add frame dedup and Whisper auto-chunking
Frame extraction now runs a perceptual dedup pass (default on, --no-dedup
to disable) that drops near-identical frames before the budget cap, so the
budget goes to distinct content instead of held slides/static recordings.
The Frames report line notes how many near-duplicates were dropped.

Whisper transcription splits audio over the 25 MB upload cap into evenly
sized chunks, transcribes each, shifts segment timestamps back into source
time, and tolerates partial failures (only fails if every chunk fails) —
length alone no longer fails transcription.

token-burner is exempt from the long-video sparse-scan warning since it
keeps every scene-change frame. README/SKILL.md updated. Adds test_dedup.py and test_whisper.py.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 23:16:17 +10:00
bradautomates
429f3143e5 Restructure as a self-contained Agent Skills package (fix Codex install)
Move the skill into skills/watch/ so SKILL.md and its scripts/ runtime are
siblings inside one folder. `npx skills add` (Codex/Cursor/Copilot/agents) now
copies a working skill as a unit; previously it grabbed the root SKILL.md alone
and left scripts/ behind, so the skill was dead on arrival on every non-Claude
host. Mirrors the layout last30days-skill adopted for the same reason.

- skills/watch/{SKILL.md,scripts/}: self-contained skill folder
- SKILL.md: resolve a harness-agnostic $SKILL_DIR (the dir it was Read from)
  instead of the Claude-Code-only ${CLAUDE_SKILL_DIR}; guard + 19 call sites
- drop commands/watch.md: /watch derives from frontmatter (name + user-invocable)
- .codex-plugin/plugin.json: full manifest with "skills": "./skills/" + interface
- add .agents/plugins/marketplace.json, AGENTS.md, CLAUDE.md, .skillignore
- build-skill.sh: archive the skills/watch subtree (one SKILL.md, no zip -d)
- fix paths in tests, hooks hint, .gitattributes, release.yml
- relocate dev-sync.sh to repo root and fix REPO_ROOT
- README: content-ideas structure, npx skills install, star history

Verified: 37/37 tests pass; npx skills add bundles the full scripts/ runtime;
manifests valid; versions synced at 0.1.3.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-29 22:12:54 +10:00