From 7c3d36b29ac25601f56e08f12e1ae23a9197e1f7 Mon Sep 17 00:00:00 2001 From: rays Date: Sun, 11 Oct 2026 20:37:55 +0000 Subject: [PATCH] Release 0.12.0 Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 18 ++++++++++-------- Cargo.lock | 2 +- Cargo.toml | 2 +- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84c0ea8..a0d80a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,27 +7,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.12.0] - 2026-10-11 + ### Added -- With `[web] metrics_bind` set, `/metrics` gives Prometheus, on a thread and port of its own, what the daemon holds between requests: database connections in use against the pool's size, commands waiting for the worker, live-update listeners, the runtime's tasks, memory and open files. So are the worker's job and how long it has run, jobs done and their time by kind, when a scan last finished, web requests, feed fetches and downloads in progress, download speed, live updates queued and missed, DeadAir's backlog and the file it is on, feeds waiting to retry, the artwork kept and the library's counts. So are how full the artwork kept is, how much of it is served from disk, and how much the sweep throws out to stay under its limit. The iPX dashboard graphs them in a Daemon row (#194, #195, #198, #199). +- With `[web] metrics_bind` set, ipx serves Prometheus metrics on a port and thread of their own: the database pool, the worker's job and queue, jobs done and their time, scans, downloads and requests in progress, download speed, live-update listeners and missed updates, DeadAir's backlog, the artwork cache's fill, hit rate and evictions, memory, open files and the library's counts. The iPX dashboard graphs them in a Daemon row (#194, #195, #198, #199). - The page reports its errors, the player's, how long play takes to start and how long it stalls to the server's log, and the requests one tap sets off share a trace, the playlist, audio and saved place of what it played included (#190, #192). - Saving an episode from a show with DeadAir on saves it without its dead air, at your breathing room (#186). - Choose the pause DeadAir leaves where it cuts a silence, from 0.2 to 0.5 seconds, for each show in its settings, as its breathing room, on a slider from brisk to relaxed. It is 0.3 seconds unless you change it, up from 0.2, which made speech sound rushed (#182, #183). ### Changed -- On Postgres, ipx keeps up to 20 connections to the database instead of 10, for the bursts of a page load asking for many covers at once (#200). -- Traces of the disk sweep, episode lists and DeadAir's work on each file show each step, and the sweep's trace says what it removed (#187). +- DeadAir no longer makes a shortened copy of each episode. It plays the original with its long silences left out, ready a few seconds after the download, with no gap where a silence was cut and no extra disk space; the copies already made are removed (#179, #181, #196). - DeadAir is in the same box as a show's download settings, below them, and stays there when automatic downloads are off (#185). - The container is built on Debian 13 (trixie) instead of 12, so DeadAir uses ffmpeg 7.1 instead of 5.1 (#177). -- DeadAir no longer makes a shortened copy of each episode. It plays the original with its long silences left out, ready a few seconds after the download, with no gap where a silence was cut and no extra disk space (#181). +- On Postgres, ipx keeps up to 20 connections to the database instead of 10, for the bursts of a page load asking for many covers at once (#200). +- Traces of the disk sweep, episode lists and DeadAir's work on each file show each step, and the sweep's trace says what it removed (#187). ### Fixed -- The database server no longer logs an error each time the healthcheck runs, about 2,900 a day, from a clear-out of DeadAir's old copies that had already run (#196). -- A page left open no longer misses updates after a check for new episodes: the note that each feed not due was skipped, one per feed, filled the queue they share (#197). -- Checking for new episodes no longer waits up to 12 seconds each time on a clear-out of dead feeds from the Directory, which now runs once a day (#193). - All Subscriptions, and every item list, comes up faster, most of all the first time after a quiet spell: it took half a second to two (#188). +- Checking for new episodes no longer waits up to 12 seconds each time on a clear-out of dead feeds from the Directory, which now runs once a day (#193). +- A page left open no longer misses updates after a check for new episodes: the note that each feed not due was skipped, one per feed, filled the queue they share (#197). ### Security @@ -781,7 +782,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Torrent enclosures through librqbit, seeding to a ratio or a time, with a stall timeout. - `ipx import` and `ipx export` for OPML, and systemd units in `contrib/`. -[unreleased]: https://git.sdf1.net/rays/ipx/compare/v0.11.0...main +[unreleased]: https://git.sdf1.net/rays/ipx/compare/v0.12.0...main +[0.12.0]: https://git.sdf1.net/rays/ipx/compare/v0.11.0...v0.12.0 [0.11.0]: https://git.sdf1.net/rays/ipx/compare/v0.10.3...v0.11.0 [0.10.3]: https://git.sdf1.net/rays/ipx/compare/v0.10.2...v0.10.3 [0.10.2]: https://git.sdf1.net/rays/ipx/compare/v0.10.1...v0.10.2 diff --git a/Cargo.lock b/Cargo.lock index 1f5e39b..ac6dbcd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1820,7 +1820,7 @@ checksum = "791930b43c0d5973160d90a8f3894509f2b273430f5c5c73b668636d0287c5c0" [[package]] name = "ipx" -version = "0.11.1-dev" +version = "0.12.0" dependencies = [ "ammonia", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index 5ae133a..daf76a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ipx" -version = "0.11.1-dev" +version = "0.12.0" edition = "2024" [dependencies]