Skip to content

Alphabet rail on library grids: jump straight to a letter #86

Description

@superuser404notfound

What's the feature?

A slim A to Z rail down the right edge of a library grid, the way the Plex app does it on Apple TV. Move focus onto the rail, slide down to P, and the grid lands on the first title that starts with P instead of coasting past ninety-five posters. The rail carries # for titles starting with a digit or symbol, then A to Z, and highlights the letter the grid currently sits on.

Why? When would you use it?

Fast scrolling gets there eventually, but it is a blind gesture: accelerate, overshoot, come back. In a library of several hundred titles, "take me to P" should be one deliberate move.

Requested on Discord by Paginitis, who points out that this is the one thing they still miss from Plex, and that almost no Apple TV Jellyfin client offers it.

Notes and open questions

  • The rail only means anything while the library is sorted by title, so it should appear with that sort and stay out of the way otherwise. Library sorting landed in Sort library list by category #78.
  • tvOS needs the rail as its own focus section to the right of the grid, with the jump going through ScrollViewReader.scrollTo. That call eats the container's leading padding unless the anchor is handled, which has bitten us before.
  • Paging: a letter can point past what has been loaded. Either the grid keeps a lightweight name index for the whole library, or the jump re-queries the server with nameStartsWithOrGreater and rebuilds the page from there.
  • iPhone and iPad get the same rail, driven by a touch drag rather than focus.
  • Localization: the alphabet is not universal. The rail should follow the collation of the current locale rather than hardcoding A to Z.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions