This release adds YouTube browsing, reviewed URL intake, sharing tokens, media-server refreshes and Google Takeout subscription import. It also adds bulk source controls and improves download recovery, replacement safety and cleanup guidance.
Thanks to everyone who shared reports and tested the changes since the last release. Several of these improvements came directly from day-to-day use: managing sources in batches, understanding failed downloads, and keeping existing media available during replacements.
Thanks to @B4xtr for opening the PRs that added configurable retention scheduling and retention-aware quality upgrades (#136), and optional video titles in notifications (#140).
Need setup steps, examples or limits? Start with the feature guides, or follow the guide beside each change below.
Use the versioned images below, or latest / latest-postgres.
- SQLite:
ghcr.io/thebadfella/pinchflat-ngx:2026.10.19 - PostgreSQL:
ghcr.io/thebadfella/pinchflat-ngx:2026.10.19-postgres - Existing
ghcr.io/thebadfella/pinchytimage aliases remain supported.
Browse, sharing and subscriptions
- YouTube Browse and URL review (#131, #134): search videos and channels, preview videos, see library status and review pasted video URLs before downloading. Add channel and playlist URLs through Sources. Searches retain their query, tab and media profile across reloads and reconnects, including subpath deployments. Single-video sources request standalone metadata correctly. Usage guide.
- Scoped sharing tokens (#132): create tokens tied to a media profile, optionally set expiry, revoke access and use bookmarklets to open a URL for review. The intake API checks tokens and profiles, limits request size and rate-limits submissions. Usage guide.
- Google Takeout CSV import (#146): preview
subscriptions.csvfiles before importing missing channels. Preview identifies duplicates, existing channels and rejected rows. New channels keep monitoring enabled with downloads paused. CSV and text imports accept up to 100 entries and 100 KB; processing is sequential and requires the page to stay open. Cancellation stops after the current source. Import guide.
Source management
- Bulk source actions (#142, #143, #145): select sources on the current page to pause or resume downloads, assign a media profile, or preview and confirm download-cutoff changes. Selection works across table, cards and grid layouts and clears when paging or sorting. Monitoring settings and existing files are preserved when applying these actions. Usage guide.
- Cutoff preview shows existing dates, downloads published before the proposed cutoff, retention-eligible items and protected items. Confirmation updates the selected cutoff dates together. Scheduled cleanup can subsequently remove eligible files; it does not run during confirmation. Preview and confirmation guide.
- Pause and Stop include replacements (#141): replacement downloads and quality upgrades are cancelled along with ordinary downloads, while existing media remains available. Recovery and replacement guide.
Downloads and retention
- Preserve playable media during replacements (#139): forced replacements and quality upgrades stage the new file before transferring it into place. Interrupted or failed attempts preserve the previous file. Without a configured staging directory, replacements use
.pinchflat-replacementson the media volume and need space for both copies. Replacement guide. - Explain failures and recovery (#137): source views and global history show plain-language error explanations, recovery steps and relevant Settings or Diagnostics links. Technical details remain available, and queue guidance follows the actual download job. Recovery guide.
- Reliable retries and queue counts (#135, #140): failed retry replacement preserves the previous job, and batch responses distinguish accepted, duplicate and failed operations. Discovery counts and optional title lists use the same media set. API outcomes and access.
- Configurable retention schedule (#136): set
RETENTION_CRONandRETENTION_TIMEZONE, then recreate the container. Defaults remain daily at 01:00 UTC; retention scheduling is independent ofTZ. Invalid or empty values prevent startup. Automatic quality upgrades skip media already eligible for retention deletion, including media that expires while queued. Retention guide. - Clearer cutoff and protection guidance (#149, #150): warnings name the video's publication date and the source's download cutoff date. A manually downloaded video published before that cutoff can be deleted at the next scheduled cleanup even before its download-based retention expires. Zero retention disables age-based deletion only. The existing Prevent Automatic Deletion setting protects against both rules and is easier to reach from the media page and confirmations. These changes explain the existing cleanup policy. Cleanup and protection guide.
Integrations and notifications
- Plex, Jellyfin and Emby refresh (#133, #134): configure connection checks and refresh libraries after completed downloads. Refresh requests coalesce, and a failed refresh does not fail the download. Requests use bounded timeouts and reject redirects that could forward credentials. Setup guide.
- Optional video titles in notifications (#140): enable Include video titles in Notification Settings to include up to ten titles in existing Apprise notifications, with a count for additional videos. The option is off by default. Notification guide.
Access, migration and interface
- Management API authentication (#135): when Basic Auth or OIDC is configured, general API operations require configured Basic Auth credentials. OIDC browser sessions do not authorize these API requests. OIDC-only installations must add
BASIC_AUTH_USERNAMEandBASIC_AUTH_PASSWORDfor API clients. Health/spec routes and existing podcast and scoped-sharing access retain their own rules. API access guide. - SQLite-to-PostgreSQL transfer (#135): transfer current sharing and completed legacy-review data, typed arrays and allocation history. Native SQLite snapshots pass validation, failed transfers roll back sequence changes, and migration review blocks management API writes. Transfer guide.
- Proxy and browser settings (#134): explicit trusted-proxy peers, optional Secure session cookies and configurable iframe restrictions. RSS and OPML links retain the deployment prefix correctly. Configuration reference.
- Phone and tablet controls (#137, #145, #149, #150): keep Actions beside page tabs, allow crowded tabs to scroll, improve long-title layouts, date controls, dropdown alignment, focus and selection toolbars. Navigation and protection.
- Separate development images (#138, #144): a dedicated workflow publishes development tags without moving stable tags. Development builds show a Dev indicator and commit details. Build guide.
- Dependency updates (#148): Oban 2.24.2, alongside the Bandit and Thousand Island updates included with the proxy hardening.
Commit range
- Previous release:
2026.10.16 - This tag:
2026.10.19 - Compared range:
2026.10.16...2026.10.19