Included changes
- feat: add reviewed release automation (#196)
- chore: promote reviewed release automation to master [skip ci]
- Fix large PostgreSQL transfers and guide migration recovery (#198)
- Fix task progress float transfer mismatch and widen byte counters (#199)
- feat: add mass retry for permanent failures and polish failure controls
- fix: thank outside contributors without thanking the maintainer
- fix: load complete release PR metadata before publishing
- Merge dev into release/stable-candidate for release candidate
Compared 2026.11.1 to fix/release-pr-lookup@a912487ab183.
This release adds bulk retries for failed downloads and fixes PostgreSQL downloads that stop when a progress counter passes 2 GiB. It also makes large SQLite-to-PostgreSQL transfers more reliable and gives clearer recovery guidance when validation fails.
Retry failed downloads in bulk
-
Force Retry Permanent is now available on Home > Failed and each source's failed-media tab. Use it after fixing the cause of a permanent failure; transient failures keep their separate retry action.
-
Settings > Diagnostics > Failed Jobs now offers Reset All Discarded Jobs for jobs that exhausted their attempts. Retryable and discarded jobs have separate controls and explanations.
-
Failed-media controls, queue status and confirmation messages are clearer on Home and source pages.
See download recovery and queue controls. A queued retry means the work was accepted; check the completed download and playback afterward.
PostgreSQL fixes
-
New downloads can report sizes above 2,147,483,647 bytes without crashing progress updates. The migration widens downloaded bytes, total bytes and download speed to 64-bit counters. This addresses #201, including the remaining task-table overflow after the earlier media-size fix.
-
Large-library transfer validation reads successive batches by ID instead of repeatedly scanning earlier rows.
-
Transfer validation normalizes timestamps to the destination column's precision and treats whole-number progress values consistently across SQLite and PostgreSQL. This avoids false checksum mismatches without bypassing integrity checks.
-
Failed transfers show safe table/count diagnostics and, when available, the differing row, column and value types. The screen explains what to correct before Retry migration; copied values and credentials stay out of the report.
Follow the SQLite-to-PostgreSQL migration guide for the full transfer and recovery steps.
Upgrade notes
Back up coherent database, config and media state before upgrading, then allow startup migrations to finish. PostgreSQL widens the task progress columns automatically and may hold a table lock during the change. SQLite retains its existing 64-bit counters without rebuilding the task table. Downloads that already exhausted their attempts may need a retry after upgrading.
Each new database-transfer attempt removes earlier sqlite-before-postgres-*.db snapshots in the backup directory before checking free space. The open source and backups with other names are retained. Keep a separate coherent backup; an earlier migration snapshot can be removed even when the new attempt fails.
See upgrading and rollback. Changing image tags does not reverse database migrations.
Thanks to @cbrookins for reporting the migration validation failures, @Dav-Git for the detailed task-counter overflow report, and @joryirving for the original large-file report.
Container images
Use the versioned tags below or their moving aliases.
| Database | Versioned image | Moving tag |
|---|---|---|
| SQLite | ghcr.io/thebadfella/pinchflat-ngx:2026.11.2
| latest
|
| PostgreSQL | ghcr.io/thebadfella/pinchflat-ngx:2026.11.2-postgres
| latest-postgres
|
Full changelog: 2026.11.1...2026.11.2.