Install fpcalc in the image; release 0.21.0
The image installed ffmpeg but not libchromaprint-tools, so hark fingerprint and discover-ads would have been inert in the deploy rather than broken: fpcalc_available() returns False, the command exits tidily, and a healthy-looking container silently never matches an ad. Same defect adscrub 0.8.0 fixed in its own image. Bumps __version__ alongside pyproject, which has drifted in sibling repos.
This commit is contained in:
@@ -7,6 +7,36 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.21.0] - 2026-07-23
|
||||
|
||||
### Added
|
||||
|
||||
- **`hark fingerprint`** — matches episode AUDIO against ad recordings already confirmed in
|
||||
this corpus (adscrub 0.8.0's fingerprint tier). It costs no tokens and needs no transcript,
|
||||
so it runs while the Claude-driven pipeline stays disabled. Verified against a read-only
|
||||
snapshot of the live database: **337 ad spans across 82 of 82 episodes, 0 failures, no model
|
||||
called.**
|
||||
- **`hark discover-ads --show <id>`** — cold start for one show, finding ads by matching that
|
||||
show's episodes against each other, with no confirmed ads to seed from. Scoped to a single
|
||||
show deliberately: recurrence is measured against whatever set it is given, and this database
|
||||
holds ~70 unrelated feeds that share no ad pool. Its `recur` spans are inference and are not
|
||||
cut by default.
|
||||
- Both commands go per-episode rather than through adscrub's bulk helpers, so the per-show
|
||||
`ad_stripping_enabled` toggle actually applies — the same reason `repeats` does.
|
||||
|
||||
### Fixed
|
||||
|
||||
- **`libchromaprint-tools` (fpcalc) added to the image.** Without it the two commands above are
|
||||
not broken but inert: they exit tidily and silently match nothing, behind a container that
|
||||
looks healthy.
|
||||
- **`_PrecomputedDetector` accepts the `skip` argument** that `AdSpanDetector.detect` grew in
|
||||
adscrub 0.8.0. `LayeredDetector` passes it positionally, so without this every
|
||||
`load-ad-detections` record failed with a `TypeError`.
|
||||
|
||||
### Changed
|
||||
|
||||
- adscrub pinned 0.7.2 -> 0.8.0.
|
||||
|
||||
## [0.20.0] - 2026-07-15
|
||||
|
||||
### Added
|
||||
|
||||
+5
-1
@@ -99,7 +99,11 @@ RUN if [ "$GPU" = "1" ]; then \
|
||||
# matches TrueNAS SCALE's standard "apps" account, so files land owned by
|
||||
# the same user/group as every other app on that host; harmless elsewhere.
|
||||
# ffmpeg is for adscrub's cut.py, called as a library (see cli.py).
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends gosu ffmpeg \
|
||||
# libchromaprint-tools provides fpcalc, which adscrub's fingerprint tier shells out to for
|
||||
# `hark fingerprint`/`discover-ads`. Without it those commands are not broken but INERT:
|
||||
# fpcalc_available() returns False, the command exits with a tidy message, and a
|
||||
# healthy-looking container silently never matches an ad.
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends gosu ffmpeg libchromaprint-tools \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& groupadd --gid 568 hark \
|
||||
&& useradd --system --uid 568 --gid 568 --no-create-home hark
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
[project]
|
||||
name = "hark"
|
||||
version = "0.20.0"
|
||||
version = "0.21.0"
|
||||
description = "Cross-podcast topic index and discovery service"
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.12"
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
"""hark — cross-podcast topic index and discovery service."""
|
||||
|
||||
__version__ = "0.20.0"
|
||||
__version__ = "0.21.0"
|
||||
|
||||
Reference in New Issue
Block a user