Summary
Within a series, the only sorts were title / author / date added — none reflected reading order. This adds a "Series Position" sort and makes it the default for series collections, so books are ordered by their position number (the way listeners actually navigate a series).
Ordering is applied within the existing "In Library" and "Not Added" groupings (owned books in position order, then not-added in position order). The series view already renders those two sections and paginates the sorted list before splitting it, so grouping-then-position keeps each section whole and in order rather than scattering owned books across pages.
Closes #626.
Changes
Added
- "Series Position" sort for series collections, shown only inside a single series and selected by default; other collection types keep their existing default (title).
- Numeric-aware position ordering (handles
1,2.5,10; books without a position sort last), applied within the owned / not-added grouping.
Testing
- Frontend
vitest: full suite green, including a newCollectionViewtest that owns books #1 and #3 of a 4-book series and asserts the order is#1, #3(owned, by position) then#2, #4(not added, by position). vue-tsctype-check, ESLint, Vue template-handler check, and Prettier all clean.
Notes
- Independent of #658 — based directly on
canaryand merges in any order. #658 ("show books under all their series") is a related PR that enhances this one (it supplies the correct per-series position number for books that belong to multiple series), but this PR doesn't require it: on its own it sorts each series collection byseriesNumber. The only overlap between the two is the routineCHANGELOG.md[Unreleased]conflict (keep both entries). - Frontend-only; no backend or DB changes.
- Needs a version label.
Automated Canary build