bvandeusen and Claude Opus 5.5
f3196b3443
release / go (push) Failing after 1m18s
release / web (push) Successful in 1m27s
release / govulncheck (push) Successful in 35s
release / integration (push) Failing after 4m13s
release / Attach APK to the Release (tag releases only) (push) Canceled after 0s
release / Build + push container image (push) Canceled after 0s
release / Verify release artifacts (tag releases only) (push) Canceled after 0s
release / android (push) Canceled after 5m47s
release / Build signed APK (releases and dev) (push) Canceled after 4m21s
feat(library): measure every track's loudness in the background (M464 #4995 )
...
The first step of loudness normalization: the server measures each track
with ffmpeg's EBU R128 filter (true peak, mono as dual mono) and stores the
integrated loudness, true peak and loudness range in track_loudness
(migration 0065).
It also keeps a histogram of the 400 ms gating blocks at 0.1 LU, so album
loudness can be computed exactly later with no second decode (#4996 ). The
histogram reproduces ffmpeg's own figure (-10.68 against -10.7 on the
captured fixture), and the analyzer logs a warning if the two ever drift.
- A background worker, cloned from the fingerprint backfill, measures every
track, new ones included. Measuring inline in the scan was dropped: the
analysis decodes the whole file, and a large import could pass the scan's
one-hour stuck threshold. The scan only deletes a changed file's
measurement; the worker ticks every 10 minutes.
- Timeouts, the cancel/missing-binary split and settled verdicts follow the
fingerprint runner. Silence and undecodable files are stored as verdicts;
stalls are retried. The deadline scales with track length.
- loudness_settings (enabled, files at once) and an admin card with the
coverage gauge, under GET/PUT /api/admin/library/loudness-settings and
GET /api/admin/library/loudness.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-06 13:01:01 -04:00
..
2026-04-19 01:12:39 +00:00
2026-04-19 01:12:37 +00:00
2026-04-19 02:31:23 +00:00
2026-04-19 02:31:21 +00:00
2026-04-19 17:37:12 +00:00
2026-04-19 17:37:11 +00:00
2026-04-20 19:37:26 -04:00
2026-04-20 19:37:26 -04:00
2026-04-25 20:45:44 -04:00
2026-04-25 20:45:44 -04:00
2026-04-26 16:20:08 -04:00
2026-04-26 16:20:08 -04:00
2026-04-27 11:13:31 -04:00
2026-04-27 11:13:31 -04:00
2026-04-28 08:40:39 -04:00
2026-04-28 08:40:39 -04:00
2026-04-28 19:57:02 -04:00
2026-04-28 19:57:02 -04:00
2026-04-29 15:10:01 -04:00
2026-04-29 15:10:01 -04:00
2026-04-30 16:54:03 -04:00
2026-04-30 16:54:03 -04:00
2026-05-01 05:50:22 -04:00
2026-05-01 05:50:22 -04:00
2026-05-02 00:09:13 -04:00
2026-05-02 00:09:13 -04:00
2026-05-03 10:03:36 -04:00
2026-05-03 10:03:36 -04:00
2026-05-04 08:03:06 -04:00
2026-05-04 08:03:06 -04:00
2026-05-04 14:29:13 -04:00
2026-05-04 14:29:13 -04:00
2026-05-04 20:04:04 -04:00
2026-05-04 20:04:04 -04:00
2026-05-06 12:24:36 -04:00
2026-05-06 12:24:36 -04:00
2026-05-06 22:12:27 -04:00
2026-05-06 22:12:27 -04:00
2026-05-07 07:39:02 -04:00
2026-05-07 07:39:02 -04:00
2026-05-07 08:31:17 -04:00
2026-05-07 08:31:17 -04:00
2026-05-07 11:51:00 -04:00
2026-05-07 11:51:00 -04:00
2026-05-07 12:12:18 -04:00
2026-05-07 12:12:18 -04:00
2026-05-07 12:34:44 -04:00
2026-05-07 12:34:44 -04:00
2026-05-09 22:28:26 -04:00
2026-05-09 22:28:26 -04:00
2026-05-13 11:54:45 -04:00
2026-05-13 11:54:45 -04:00
2026-05-15 07:40:17 -04:00
2026-05-15 07:40:17 -04:00
2026-05-15 23:39:21 -04:00
2026-05-15 23:39:21 -04:00
2026-05-16 13:49:38 -04:00
2026-05-16 13:49:38 -04:00
2026-05-17 20:22:30 -04:00
2026-05-17 20:22:30 -04:00
2026-05-18 12:24:20 -04:00
2026-05-18 12:24:20 -04:00
2026-06-02 11:25:50 -04:00
2026-06-02 11:25:50 -04:00
2026-06-06 21:50:08 -04:00
2026-06-06 21:50:08 -04:00
2026-06-11 19:33:46 -04:00
2026-06-11 19:33:46 -04:00
2026-06-11 20:55:14 -04:00
2026-06-11 20:55:14 -04:00
2026-06-29 18:38:56 -04:00
2026-06-29 18:38:56 -04:00
2026-06-30 16:33:01 -04:00
2026-06-30 16:33:01 -04:00
2026-07-02 20:39:41 -04:00
2026-07-02 20:39:41 -04:00
2026-07-02 23:26:52 -04:00
2026-07-02 23:26:52 -04:00
2026-07-03 09:22:03 -04:00
2026-07-03 09:22:03 -04:00
2026-07-13 18:16:04 -04:00
2026-07-13 18:16:04 -04:00
2026-07-13 18:46:49 -04:00
2026-07-13 18:46:49 -04:00
2026-07-13 21:43:58 -04:00
2026-07-13 21:43:58 -04:00
2026-07-14 07:51:36 -04:00
2026-07-14 07:51:36 -04:00
2026-07-14 09:01:00 -04:00
2026-07-14 09:01:00 -04:00
2026-07-14 09:31:43 -04:00
2026-07-14 09:31:43 -04:00
2026-07-14 10:32:41 -04:00
2026-07-14 10:32:41 -04:00
2026-07-14 12:47:59 -04:00
2026-07-14 12:47:59 -04:00
2026-08-01 22:51:51 -04:00
2026-08-01 22:51:51 -04:00
2026-08-02 20:04:15 -04:00
2026-08-02 20:04:15 -04:00
2026-08-02 20:31:12 -04:00
2026-08-02 20:31:12 -04:00
2026-08-05 09:17:40 -04:00
2026-08-05 09:17:40 -04:00
2026-08-05 10:07:43 -04:00
2026-08-05 10:07:43 -04:00
2026-08-05 21:17:59 -04:00
2026-08-05 21:17:59 -04:00
2026-08-06 14:34:53 -04:00
2026-08-06 14:34:53 -04:00
2026-08-16 23:53:21 -04:00
2026-08-16 23:53:21 -04:00
2026-09-10 20:51:15 -04:00
2026-09-10 20:51:15 -04:00
2026-09-11 13:21:15 -04:00
2026-09-11 13:21:15 -04:00
2026-09-11 17:00:07 -04:00
2026-09-11 17:00:07 -04:00
2026-09-11 17:11:11 -04:00
2026-09-11 17:11:11 -04:00
2026-09-11 17:53:55 -04:00
2026-09-11 17:53:55 -04:00
2026-10-06 09:32:10 -04:00
2026-10-06 09:32:10 -04:00
2026-10-06 09:42:35 -04:00
2026-10-06 09:42:35 -04:00
2026-10-06 10:54:30 -04:00
2026-10-06 10:54:30 -04:00
2026-10-06 13:01:01 -04:00
2026-10-06 13:01:01 -04:00