Replace the two-option `ListSort` enum with an orthogonal sort field (created/updated/title/author, default updated) and direction (asc/desc, default desc). The catalog now defaults to last-updated-first and lets the user order by any field in either direction. Backend builds ORDER BY from the enums only (no injection seam), with a NULLS-LAST author subquery and a stable id tie-break. Frontend adds a direction toggle with per-field defaults (dates desc, text asc) and labels (Newest/Oldest vs A->Z/Z->A), reusing SegmentedControl; URL state omits the per-field defaults and validates on hydrate. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
862 B
862 B