This release fixes download failures and source creation friction, and adds text-file source import. SQLite and PostgreSQL images are published for linux/amd64 and linux/arm64.
- SQLite:
ghcr.io/thebadfella/pinchflat-ngx:2026.9.28(latest) - PostgreSQL:
ghcr.io/thebadfella/pinchflat-ngx:2026.9.28-postgres(latest-postgres)
Sources
- New Source selects the first available media profile. Cloning a source keeps its selected profile. (#72)
- Import sources from a text file with one URL per line. The result shows which entries were added, rejected, or repeated. (#73)
Downloads and PostgreSQL
- Staged downloads finish when yt-dlp returns null subtitle or thumbnail metadata, and the moved video is saved at its final path. (#64)
- PostgreSQL stores the full yt-dlp error for unavailable videos without failing while recording the download error. (#74)
- Jobs can broadcast before the web endpoint starts without failing. A failed yt-dlp update leaves the working executable in place. (#66)
Docker and maintenance
- GHCR images are retained by the package cleanup job. (#65)
- Docker builds no longer make a redundant yt-dlp update request that hit GitHub's API rate limit. (#77)
- Bump the application version to
2026.9.28.
Dependency updates
PR #63 refreshed:
- Containers and CI: Node 25, Docker Buildx 4.4.1, and Build Push 7.4.0.
- Frontend: Alpine.js 3.17.3 and Prettier 3.9.8.
- Elixir app: Phoenix 1.8.14, LiveView 1.2.12, LiveDashboard 0.9.1, and Oban 2.24.1.
- Other Elixir packages: Mox, OpenApiSpex, Swoosh, and tzdata.
Verification
- Hosted lint and test jobs passed with SQLite and PostgreSQL; PostgreSQL migration tests passed.
- The Docker release workflow built both database variants for amd64 and arm64 and published the manifests.
- Both amd64 images pulled locally and reported
pinchflat 2026.9.28. The published SQLite image passed its health check and served the Sources page.
Commit Range
- Previous release:
2026.9.19 - This tag:
2026.9.28 - Compared range:
2026.9.19...2026.9.28