Skip to content

Releases

v0.7.0 — Backup adapter

Choose a tag to compare

@mdostal mdostal released this 08 Sep 17:15
f8a3d41

Added

  • bin/backup.sh [raws-dir] — pushes raws to any rclone-supported backend (Google Drive, S3, plain paths, etc.) via VIDEO_BACKUP_REMOTE. Non-fatal when unset or rclone isn't installed. No backend credentials touch this repo — rclone's own config holds those.
  • video backup subcommand.

Corrected

  • docs/ROADMAP.md's Opus Clip note was stale ("if/when a public API exists") — a public API now exists (developer.opus.pro v2). It still needs an operator API-key decision before it can be built.

Seventh release — see .pHive/epics/backup-adapter/ for design/story detail.

🤖 Generated with Claude Code

v0.6.0 — Local dashboard

Choose a tag to compare

@mdostal mdostal released this 08 Sep 00:36
5b09484

Added

  • bin/dashboard.py — a stdlib-only (http.server) local web view of work/ and clips/: an index of every slug, a per-slug detail page (review, suggested clips, thumbnail), and path-traversal-guarded media serving. Binds to 127.0.0.1 only, no authentication — a local dev convenience tool.
  • video dashboard [port] subcommand.

Known gaps (tracked in docs/ROADMAP.md)

  • review.md renders as escaped plain text, not rendered Markdown (v1 simplification, no new dependency introduced for it).

Sixth and final release of this autonomous plan→execute→ship run — see .pHive/epics/dashboard/ for design/story detail.

🤖 Generated with Claude Code

v0.5.0 — Thumbnail generator

Choose a tag to compare

@mdostal mdostal released this 08 Sep 00:02
0345e16

Added

  • bin/thumbnail.py — extracts VIDEO_THUMBNAIL_COUNT candidate frames via ffmpeg (always, free, local), and optionally asks the judge provider to pick the best "hook frame" via a new optional pick_frame(image_paths, prompt) -> int provider capability.
  • bin/lib/providers/gemini.py and mock.py both implement pick_frame; picking degrades gracefully (frames stay, exit 0) on a missing key, unsupported provider, or any error.
  • video thumbnail subcommand.

Known gaps (tracked in docs/ROADMAP.md as 🚧)

  • The real Gemini frame-pick is unverified end-to-end (no key in this environment) — extraction and the mock-provider pick path are fully verified.

Fifth release in the autonomous Hive plan→execute→ship loop — see .pHive/epics/thumbnail-generator/ for design/story detail.

🤖 Generated with Claude Code

v0.4.0 — Provider abstraction and batch mode

Choose a tag to compare

@mdostal mdostal released this 07 Sep 23:27
5a49f6a

Added

  • Provider abstraction — review.py's Gemini-specific calls moved behind bin/lib/providers/ (interface: review(video_path, transcript, prompt) -> str), selected via VIDEO_JUDGE_PROVIDER (default gemini). A network-free mock provider proves the interface is pluggable and makes review.py itself CI-testable.
  • bin/batch.sh [raws-dir] — runs the full pipeline unattended over every raw video in a folder; a failing video doesn't abort the batch, a summary prints at the end.
  • bin/video gained reframe and batch subcommands (fixing a gap where reframe was never wired in).

Known gaps (tracked in docs/ROADMAP.md)

  • Only one real judge provider ships (Gemini) — the abstraction is proven via the mock, not a second real backend.

Fourth release in the autonomous Hive plan→execute→ship loop — see .pHive/epics/batch-provider-abstraction/ for design/story detail.

🤖 Generated with Claude Code

v0.3.0 — Resumability and a smoke-test harness

Choose a tag to compare

@mdostal mdostal released this 07 Sep 22:50
0cc2fef

Added

  • Resumability — every stage (ingest.sh, transcribe.sh, review.py, caption.sh, reframe.sh, clip.sh) skips work whose output already exists; VIDEO_FORCE=1 to redo. review.py's skip needs no API key, so a re-run on an already-reviewed slug costs nothing.
  • tests/smoke.sh — an automated smoke-test harness (synthetic ffmpeg-generated sample, never committed) covering ingest/caption/clip/reframe + resumability, now running in CI on every push/PR (.github/workflows/smoke.yml).

Known gaps (tracked in docs/ROADMAP.md as 🚧)

  • review.py and transcribe.sh's real-transcription path are intentionally excluded from automated CI (real paid API call / real whisper binary needed) — still manually verifiable per AGENTS.md's Testing section.
  • caption.sh's burn-in resumability skip is implemented but unverified — same missing-libass gap as burn-in itself.

Third release in the autonomous Hive plan→execute→ship loop — see .pHive/epics/test-harness-resumability/ for design/story detail.

🤖 Generated with Claude Code

v0.2.0 — Config file and reframe

Choose a tag to compare

@mdostal mdostal released this 07 Sep 22:14
6a96585

Added

  • Optional .videorc/video.toml config-file fallback for every tool (bin/lib/videoconfig.py) — env vars always win over the config file.
  • bin/reframe.sh — 9:16 and 1:1 center-crop exports of cut clips (VIDEO_REFRAME_ASPECTS to configure).

Known gaps (tracked in docs/ROADMAP.md as 🚧)

  • Reframe is a plain center crop — no face/subject-aware centering (would need a real detection-model dependency).

Second release in the autonomous Hive plan→execute→ship loop — see .pHive/epics/reframe-config/ for the design/story detail.

🤖 Generated with Claude Code

v0.1.0 — Transcription, auto-captions, and a real CLI

Choose a tag to compare

@mdostal mdostal released this 07 Sep 22:06
9650c20

First tagged release.

Added

  • bin/transcribe.sh — local Whisper (whisper.cpp by default, or any binary via VIDEO_WHISPER_BIN) transcript of ingest.sh's extracted audio → transcript.vtt/.txt.
  • review.py now feeds the transcript (when present) into the Gemini judge prompt for better clip picks.
  • bin/caption.sh — .srt from the transcript, plus optional caption burn-in into cut clips (VIDEO_CAPTION_BURN=1).
  • bin/video — one CLI entrypoint wrapping all six stages (pull|ingest|transcribe|review|caption|clip) with --help.

Known gaps (tracked in docs/ROADMAP.md as 🚧)

  • Whisper transcription's happy path is implemented but unverified end-to-end (no whisper binary in CI/dev yet).
  • Caption burn-in requires an ffmpeg build with libass; a plain brew install ffmpeg may not include it. caption.sh detects this and degrades gracefully.

Planned and executed via Hive (/plugin-hive:plan + /plugin-hive:execute) — see .pHive/epics/transcribe-caption-cli/ for the full design discussion and story-level detail.

🤖 Generated with Claude Code