Important
Pinchflat-ngx is a community fork of Pinchflat, maintained for continued self-hosted use. Module and database names may still say Pinchflat for compatibility.
Hey everyone — thanks for using Pinchflat-ngx.
I have been developing this fork on my own for several months now, and I am glad more people are running it. I am always open to suggestions and feature requests from other self-hosters. I want this app to stay smooth, reliable, and useful for the way we actually archive and watch YouTube libraries.
I picked up this work because I like Pinchflat’s UI compared with other YouTube downloaders. Keeping that feel while fixing migration pain and day-to-day bugs is why the fork exists.
If you would like to help, you are welcome to open issues, leave review notes, or send pull requests. I am happy to merge changes after we look at them together.
This is one of the largest releases so far. It reflects the issues and ideas you opened, plus the work to support moving from upstream Pinchflat. There was not much public guidance on migrating before; the wiki now walks through backup, review, and cutover. Several problems people hit when switching straight to Pinchflat-ngx without that path are addressed in this wave.
Use the versioned tags below, or latest / latest-postgres after the Docker workflow publishes.
- SQLite:
ghcr.io/thebadfella/pinchyt:2026.10.15 - PostgreSQL:
ghcr.io/thebadfella/pinchyt:2026.10.15-postgres
Migration and library data
- Legacy Pinchflat migration welcome flow, review screen, and operator guides (#86, #104). Start with Migrating from Pinchflat on the wiki.
- Optional in-app SQLite → PostgreSQL migration with review and restart behavior (#87). See SQLite to PostgreSQL migration on the wiki.
- Import files already on disk without redownloading (#85). See Import existing downloads on the wiki.
- Recoverable source directory moves with safer failure handling (#109).
- PostgreSQL text columns for long paths, descriptions, and related configuration (#107).
Reliability and operations
- Configurable database statement timeouts (#102).
- Oban job cleanup, live source table updates, and media query indexes (#105).
- Bandit HTTP adapter and dependency / container tooling updates (#106, #108, #96).
- Indexing health, Apprise links when an external base URL is set, YouTube
/show/URLs, and related source fixes (#84, #100–#103, #101). - Download space protection (#118): pause new downloads when free disk space drops below configurable thresholds, with recovery when space returns (settings, workers, and schema ship together).
- YouTube client fallback chains (#119): retry failed downloads with an ordered list of player clients per source when yt-dlp reports a client-specific failure; respects download policy and partial-file behavior.
- Cookie health warnings (#120): periodic checks and alerts when YouTube cookies look stale or auth is failing, without logging private cookie contents.
Playback and streaming
- Safer media streaming (#114): corrected byte-range and
HEADhandling for media playback and clients that probe file size before seeking (Bandit stack onmaster).
Interface
- Sources header layout and touch targets on small screens (#110).
- Time-format toggle keyboard and styling fixes (#92).
- Clearer selects and corners (#113): improved contrast and corner radius on native
<select>controls and related form surfaces to match the Material-style UI. - Pinchflat-ngx naming in the UI (#116): user-visible product name, help text, and alerts aligned with Pinchflat-ngx; internal module names and compatibility identifiers unchanged.
- Long titles and mobile control layout (#117): very long source and media names stay readable on narrow viewports; edit, close, and fallback controls stay inside their panels (existing screens on
masteronly). - Source cutoff diagnostics and support links (#115): cutoff date predicates, source detail edge cases, and fork support/README links corrected where they still diverged from merged fixes.
Documentation
- README points to the Pinchflat-ngx wiki for migration, backup, import, PostgreSQL transfer, and the roadmap.
Roadmap (after this tag)
Larger features not in 2026.10.15 (in-app YouTube browser, share intake, subscription CSV import, media-server refresh, channel events, announcements, and more) are listed on the roadmap. #99 (Latest tab across all sources) is tracked there until a feature PR lands.
Verification
- Automated checks and tests ship with each merged PR in this release wave on
master(#113–#121). - Migration and UI screenshots for docs were captured from local Docker runs; live production migrations and every PostgreSQL edge case were not re-run for this tag note.
Commit range
- Previous release:
2026.9.14 - This tag:
2026.10.15 - Compared range:
2026.9.14...2026.10.15(link valid after the tag is pushed)