Skip to content

[Feature Request] Implementation of 'Sort by Release Date' in Library/Catalog #2126

@shaharbashari

Description

@shaharbashari

[Feature Request] Implement 'Sort by Release Date' in Catalog and Library

Summary
Currently, Hydra supports sorting by Name and Recently Added. Adding a Release Date sort option would significantly improve the discovery UX, especially for users tracking new releases or navigating large libraries containing remakes and sequels.

Technical Analysis
Based on the current architecture (Electron/TypeScript frontend and Python-based scraping), metadata for release dates is likely already being fetched via the IGDB/HLTB integrations during the scraping process, but it isn't currently indexed or exposed for sorting in the UI.

Proposed Implementation

  1. Schema Update: Ensure the local storage (SQLite/LevelDB) includes a first_release_date field stored as a Unix timestamp or ISO 8601 string (YYYY-MM-DD) to allow for efficient indexing and sorting.
  2. Normalization Logic: * Implement a normalization utility to handle varying date formats from different sources (Steam, IGDB, repacker sites).
    • Fallback: For titles where a release date is unavailable, default to a null or 0 value to push these entries to the bottom of a "Newest" sort.
  3. UI Integration:
    • Add Release Date (Newest First) and Release Date (Oldest First) options to the existing sorting dropdown menu in both the Catalog and User Library views.
  4. Secondary Benefit (Disambiguation): * Proper indexing of the release year would also help mitigate existing issues where the scraper confuses originals and remakes (e.g., Resident Evil 4 (2005) vs. Resident Evil 4 (2023)) by providing an additional data point for the title-matching logic.

Impact

  • User Experience: Standardizes the browsing experience to align with platforms like Steam and GOG.
  • Discovery: Enables users to easily identify the latest titles added to the databases that Hydra aggregates.

Additional Context
Since Hydra already interacts with IGDB for game pages, the data is likely already "in-flight" during the scraping phase. This request focuses on persisting that specific metadata field and hooking it into the frontend's sorting state.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions