6 Commits
Author SHA1 Message Date
JMR-dev 964bc84288 fix(deletion): move retention feature delete to end of job 2026-09-19 16:10:24 -05:00
JMR-devandClaude Sonnet 5 b23995f218 refactor: rename the package from ccn-transcribe to audio-scribe
The distribution, console script and import package are now audio-scribe /
audio_scribe (src/audio_scribe). Everything named for the old project follows:

- CcnError -> AudioScribeError, and its code "ccn_error" -> "audio_scribe_error"
  (the code is never persisted, so existing job state still loads)
- CCN_LIVE -> AUDIO_SCRIBE_LIVE for the live-GPU tests
- OpenVINO kernel cache moves to <cache>/audio-scribe/ov_cache; the first run
  after upgrading recompiles kernels, and the old directory is left in place
- README, build-binary.sh, hatch/coverage config and uv.lock updated to match

Breaking: the command is now `audio-scribe`; reinstall any tool install of the
old name with `uv tool uninstall ccn-transcribe && uv tool install .`.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-19 15:52:42 -05:00
JMR-devandClaude Opus 5 e459606e89 feat(packaging): ship as a tool install or a self-contained directory
Two ways to get `ccn-transcribe` on PATH. `uv tool install .` is the light one.
scripts/build-binary.sh produces a ~450 MB directory that needs neither Python
nor uv, which turned out to work despite OpenVINO resolving 47 plugins by
dlopen at runtime -- the frozen build reports CPU, GPU and transcribes on the
GPU to a byte-identical transcript.

Two things that build needs. PyInstaller points sys.prefix at the bundle, so
deno goes in bin/ and the runtime lookup finds it with no frozen-app special
case in the package. And a frozen executable is re-invoked to start a
multiprocessing child, which parsed the interpreter's own -B flag as a CLI
option and printed "No such option '-B'" twice per run before dying;
freeze_support() in the entry point makes that child do its job and exit.

onedir, not onefile: onefile would extract 450 MB to /tmp on every launch.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-13 19:10:51 -05:00
JMR-devandClaude Opus 5 5661b49942 docs: describe state recovery and the URL index
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-13 17:00:11 -05:00
JMR-devandClaude Opus 5 4d19d62077 docs: record what a resume actually preserves, and date the benchmark
The resume section implied a .part file's size reflected progress; with falloc
it is full-size from the first second and only the checkpointed pieces are
skipped. Adds the corrupt-video and truncation rules, and the new
--auto-save-interval row.

README-intel.md's 5.2x figure does not reproduce on this box today (~4.0x from
the repo's own bench.py, GPU/CPU ratio unchanged), so the table is marked as a
point-in-time measurement rather than a target to chase.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-13 16:19:00 -05:00
JMR-devandClaude Opus 5 fab20e1d32 docs: add a README covering resume, retention and hardware routing
Explains the parts that are non-obvious from the code: why artifacts rather
than a stored stage marker are the source of truth, why a .part without its
aria2 control file is discarded, which aria2c flags actually change behaviour
versus which are already yt-dlp defaults, and why NVIDIA and AMD ship as
interfaces rather than implementations.

README-intel.md keeps the hardware setup; this covers the pipeline.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-13 15:29:41 -05:00