Skip to content

RoyalDownloader v1.0.0-rc.3

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 05 Aug 19:34
· 302 commits to main since this release
c807869

RoyalDownloader v1.0.0-rc.3

This release candidate significantly expands Royal Downloader's queue
management, discovery experience, setup workflow, provider coverage, and
deployment reliability while preserving the established Legacy, /api/v1,
WebSocket, Docker, update, and integration contracts.

Download queue

  • Replace the former slug-only queue representation with persistent logical
    download jobs identified by stable job_id values.
  • Preserve the same logical job identity throughout preparation, provider and
    hoster fallback, restart recovery, and user-triggered retries.
  • Add a unique attempt_id for each execution and retry, persist the
    cancelling state before signalling a worker, and block retries until the
    previous worker has actually completed.
  • Reject stale progress and completion callbacks from older attempts and use a
    separate staging directory for every attempt.
  • Persist active queue jobs and the latest 500 completed, failed, or cancelled
    jobs in an atomically written queue snapshot.
  • Migrate existing slug-based queue files automatically without changing
    Watchlist, Telegram, Seerr, or media correlation keys.
  • Restore interrupted preparation and download jobs as queued work after an
    application or container restart instead of presenting stale in-memory
    transfers as still running.
  • Add dedicated Legacy and /api/v1 endpoints for active jobs, queue history,
    cancellation, retry, ordering, and manually waking provider checks.
  • Return an explicit conflict response when a client attempts to pause an
    active transfer that cannot be resumed reliably across all supported
    download engines and hosters.
  • Add job_id to versioned WebSocket snapshots, progress updates, and terminal
    events while retaining the existing slug-based event contracts.
  • Expand the queue interface with per-job progress, transferred and total
    bytes, speed, ETA, provider, hoster, errors, ordering controls, cancellation,
    retry, and a separate download history.
  • Improve responsive and touch-friendly queue controls for mobile devices.
  • Fail queue-changing API transactions closed when the persistent snapshot
    cannot be written instead of silently accepting an in-memory-only state.

Discovery and recommendations

  • Add a new guided Mood Mode that recommends content for the current viewing
    session based on mood, company, desired intensity, and preferred format.
  • Add stricter family-selection rules that avoid unsuitable genres and prefer
    accessible family, animation, comedy, fantasy, and adventure content.
  • Combine Mood Mode selections with locally stored taste preferences while
    applying only weak preference signals so that a single evening does not
    dominate the long-term recommendation profile.
  • Add global search across movies, series, and anime with Jellyfin availability
    filters and batched library matching.
  • Run catalog searches only after an explicit submission instead of sending
    requests continuously while the user is typing.
  • Change the home-page Top 10 from a weekly selection to a deterministic daily
    rotation.
  • Expand the home discovery program with larger, distinct content lanes and a
    manual shuffle action.
  • Reduce repeated titles across discovery sections and improve distribution
    between movies and series.
  • Keep the home-page series section populated from other enabled providers when
    the primary trending source is unavailable.
  • Improve TMDB artwork hydration so duplicate appearances of the same series
    receive the same backdrop and metadata updates.
  • Restrict portrait-poster fallbacks to ranked Top 10 cards while regular
    discovery cards continue to prefer landscape artwork.
  • Expand the Royal Archive into a searchable media-center-style view for local
    and managed content.
  • Replace the large taste-feedback buttons with a compact, accessible two-way
    control for positive and negative recommendations.

Series and episode handling

  • Preserve announced future episodes in series details together with their
    provider-supplied release date and time.
  • Display scheduled episodes as unavailable until their release time instead of
    hiding them completely.
  • Prevent scheduled or otherwise unreleased episodes from being added through
    subscriptions, automation, or direct queue API requests.
  • Improve SerienStream season parsing to distinguish playable episodes from
    rows that already contain a future episode URL.
  • Restore hero artwork after an embedded series trailer finishes instead of
    leaving the player active indefinitely.
  • Improve series source resolution and fallback matching across configured
    providers.

Providers

  • Add Filmo as a movie provider.
  • Integrate Filmo into movie search, new and top catalogs, genre discovery,
    movie details, source resolution, and configurable provider ordering.
  • Migrate existing installations to include Filmo at its intended default
    priority without repeatedly overwriting later user changes.
  • Improve Huhu compatibility and provider regression coverage.
  • Improve provider and hoster source metadata used by queue jobs and download
    status reporting.
  • Retain configured provider fallback behavior when an individual provider is
    unavailable or temporarily blocked.

Setup and deployment

  • Add explicit Regular computer and NAS / home server operating modes to
    the first-run wizard and settings.
  • Configure appropriate network binding, browser startup, storage expectations,
    and deployment guidance for each operating mode.
  • Start fresh installations in English and translate the visible setup wizard
    immediately when another language is selected.
  • Require and validate a TMDB API key or read access token before a new setup
    can be completed.
  • Add safe .env generation from .env.example when setup is completed.
  • Preserve unknown and user-defined environment variables when changing the
    operating mode or updating managed values.
  • Write environment-file changes atomically and apply restrictive file
    permissions where supported.
  • Add start_windows.cmd as a convenient launcher for regular Windows
    installations.
  • Improve start.sh and mounted-source NAS startup behavior.
  • Detect deliberately replaced mounted project bundles and activate the changed
    source as a new versioned runtime release.
  • Keep a newer in-app-updated runtime active when the mounted source bundle has
    not changed.
  • Exclude virtual environments, test caches, and runtime identity files from
    copied application releases.

Jellyfin and metadata

  • Integrate Jellyfin availability information into the expanded global search.
  • Improve batched movie and series library matching for large search result
    collections.
  • Improve movie availability-status regression coverage and prevent stale
    metadata from replacing newer catalog state.
  • Expand TMDB summary handling for catalog entries, artwork, genres, runtime,
    ratings, and recommendation data.
  • Continue to prevent already-owned movies and episodes from being added to the
    queue.

User interface

  • Fix the mobile bottom navigation so it fills the viewport width, respects
    device safe areas, and distributes five or six visible destinations without
    wrapping.
  • Improve mobile catalog lazy loading by observing document scrolling as well
    as desktop tab-container scrolling.
  • Add responsive layouts and styling for Mood Mode, expanded discovery lanes,
    global search, queue history, and the Royal Archive.
  • Improve keyboard and focus handling for the new recommendation and search
    interfaces.
  • Refresh frontend cache keys for all affected modules and stylesheets.

Documentation

  • Rewrite the main README in English with clearer desktop, NAS, start.sh, and
    Docker Compose installation paths.
  • Document the two operating modes, required TMDB configuration, persistent
    storage, updates, backups, and rollback behavior.
  • Add dedicated persistent queue job documentation covering states, migration,
    atomic persistence, restart recovery, compatibility, and API behavior.
  • Expand the Android API documentation with persistent job identities, queue
    history, controls, and additive WebSocket fields.
  • Update Docker and provider documentation for the new setup and runtime
    behavior.

Quality and maintenance

  • Add regression tests for persistent queue migration, atomic snapshots,
    history retention, retry and cancellation controls, ordering, and restart
    recovery.
  • Add tests for safe environment-file creation and updates.
  • Add provider tests for Filmo and additional Huhu behavior.
  • Add tests for scheduled episode release metadata and queue rejection.
  • Add tests for operating modes, mandatory TMDB validation, TMDB summaries,
    Jellyfin availability, and mounted-runtime activation.
  • Expand frontend contract coverage for global search, daily Top 10 rotation,
    discovery shuffling, Mood Mode, mobile navigation, queue controls, archive
    behavior, scheduled episodes, trailer cleanup, and accessible taste feedback.
  • Update the reviewed Python dependency lock and CI action versions.
  • Continue running Python and JavaScript syntax checks, frontend contract tests,
    Ruff, Bandit, dependency auditing, Docker Compose validation, the Python test
    suite, image builds, health checks, persistence checks, and restart smoke
    tests.

Compatibility

  • Preserve all existing slug-based queue routes and correlation keys.
  • Preserve the established Legacy and /api/v1 HTTP aliases.
  • Preserve existing WebSocket event names while adding job information
    additively.
  • Preserve existing Docker mounts, media destinations, Stable/Overnight update
    channels, backup behavior, and rollback paths.
  • Existing installations are migrated automatically; no manual queue or
    settings conversion is required.

This is a release candidate, not the final v1.0.0 release. Back up at
least .env and data/ before updating. Third-party providers may change
their pages, domains, availability, or protection mechanisms at any time.

What's Changed

Full Changelog: v1.0.0-rc.2...v1.0.0-rc.3