github TheBadFella/Pinchflat-NGX 2026.9.14
Release 2026.9.14 - Source Library, Channel Discovery, and PostgreSQL

latest releases: 2026.10.20, 2026.10.19, 2026.10.16...
one month ago

Important

Personal Fork Disclaimer: PinchYT is maintained as a personal fork of Pinchflat for continued development and day-to-day self-hosted use.

This is the production release of the source, download, discovery, and PostgreSQL work that landed after 2026.9.6. It replaces the 2026.9.11-beta prerelease. Use the versioned tags below, or latest / latest-postgres once the Docker workflow finishes.

  • SQLite: ghcr.io/thebadfella/pinchyt:2026.9.14
  • PostgreSQL: ghcr.io/thebadfella/pinchyt:2026.9.14-postgres

Screenshots

These are from a local SQLite install. PostgreSQL backup screens show the SQLite image's unavailable state.

Sources table and poster grid

Sources table

Sources poster grid

Source detail

Source detail

Channel Discovery

Channel Discovery

PostgreSQL backups in Settings

PostgreSQL backups

Sources and library

  • Sort Home history by Upload Date, Indexed At, or Downloaded At without resetting the active tab, filters, or pagination.
  • Switch the Sources page between the existing table and a poster grid. Filters, sort, and pagination stay shared.
  • Source detail pages show counts for Downloaded, Pending, Failed, Prevented, and Skipped, and group the current media page by upload year.
  • Lock a source name or description so metadata refresh cannot overwrite it. Unlocking does not immediately restore fetched values.
  • Set a custom source poster from a local upload or a URL (JPEG, PNG, WebP). Removing it restores fetched artwork.
  • When creating a source, choose Automatic, Channel, Playlist, or Video. Automatic keeps current URL detection. An explicit type is checked against the URL instead of being silently converted.

Channel Discovery

  • A Discovery page suggests channels from local description mentions and from featured channels on sources you already have.
  • Scanning stays off until you enable it in Settings. Accept opens the normal New Source form.
  • The page uses the same app shell as the rest of the UI.

Downloads and availability

  • Store the availability yt-dlp reports during indexing and refresh (public, unlisted, members-only, private). Missing or unknown values stay empty and do not stop indexing.
  • Each source can choose whether to download public/unlisted media and members-only media. Private media stays blocked. Existing sources keep their current download behavior.
  • Failed and prevented items keep a durable reason: manual, policy, or error, plus whether a failure is transient or permanent. Retry Now follows normal retry rules; Force Retry can attempt a permanent failure.
  • YouTube rate limits and similar bot-challenge responses are not treated as permanent download blocks.
  • A source can override the YouTube player client passed to yt-dlp. Default keeps the existing command.
  • Optional bgutil-compatible PO-token provider via POT_PROVIDER_URL. Disabled installs keep the current container layout and yt-dlp arguments.
  • DOWNLOAD_STAGING_PATH finishes a download on local disk, then transfers complete files to the media library. If unset, downloads still go straight to the library.

PostgreSQL

  • SQLite remains the latest image. A separate PostgreSQL image is published as latest-postgres and <version>-postgres. There is no automatic copy from an existing SQLite database.
  • The PostgreSQL image can create custom-format pg_dump backups from Settings. SQLite images show this as unavailable. Dumps are database state only; they do not include media files.
  • PostgreSQL deployments use PostgreSQL 18 by default, including client tools and the documented data volume path. Existing PostgreSQL 16 volumes are not compatible as-is.

Maintenance

  • Bump the application version to 2026.9.14.
  • Follow-up UI and policy fixes after the first cut of this work, including source library layout, Channel Discovery in the app shell, and download error classification.
  • latest is SQLite-only. PostgreSQL images use latest-postgres and <version>-postgres.
  • The Sources page no longer returns HTTP 400 for sources that already have stored metadata.

Verification

  • Automated coverage for this work shipped with the merges on master after 2026.9.6, including pull requests #55, #56, #57, #58, #59, and #60.
  • Screenshots were taken against the running Docker UI on SQLite. Live PostgreSQL dumps, a real OIDC provider, and live yt-dlp discovery scans were not re-run for this tag.

Commit Range

Don't miss a new Pinchflat-NGX release

NewReleases is sending notifications on new releases.