Skip to content

library: finish #203 (shelf page + merged sections + add-to-collection + author + EPUB removal)#204

Merged
mrviduus merged 1 commit into
mainfrom
fix/library-finish
May 5, 2026
Merged

library: finish #203 (shelf page + merged sections + add-to-collection + author + EPUB removal)#204
mrviduus merged 1 commit into
mainfrom
fix/library-finish

Conversation

@mrviduus

@mrviduus mrviduus commented May 5, 2026

Copy link
Copy Markdown
Owner

PR #203 squash-merged only the first 4 of 12 commits. This PR completes the remaining 8 commits' worth of work.

What this fixes (still missing in production after #203)

  • /library shelf "View all →" still points at fragile filter URLs instead of a dedicated page.
  • /library duplicate sections (saved + uploads each have their own search/tabs/sort/grid) are not yet merged.
  • Add to collection is in kebab only; no button on the book detail pages.
  • UserBookDetailPage Download EPUB button still rendered (user asked it removed).
  • Saved cards don't show author; backend LibraryItemDto.Author not yet projected.
  • Collection sidebar filter only filters one type in unified mode.

What's added

  • New /:lang/library/shelf/:shelfId route + LibraryShelfPage.
  • Single unified block on /library with combined merge-sort.
  • AddToCollectionButton with menu | button variants; wired into both kebab and detail pages.
  • LibraryItemDto.Author (joined names) via memory-projection; AddToLibrary uses projection instead of Include.
  • Card cover shadow + placeholder + title="" parity.
  • New UserLibraryEndpointTests — schema + fixture-based regression guards with Assert.Skip.

Test plan

  • /en/library — shelf "View all →" → dedicated page.
  • source='all' → one search/tabs/sort, mixed grid.
  • kebab "Add to collection" works on both saved and userbook.
  • Detail pages show "Add to collection" button.
  • UserBookDetailPage no longer shows Download EPUB.
  • Saved cards show author.
  • pnpm -C apps/web build, dotnet build green.
  • CI green.

🤖 Generated with Claude Code

PR #203 squash-merge picked up only the first 4 commits; the remaining
8 commits did not land. This is the rest of that work.

- /:lang/library/shelf/:shelfId — new dedicated page (LibraryShelfPage)
  for shelf "View all"; LibraryShelves hrefs point at it.
- Library main: merged saved+uploads sections into a single block
  (one search/tabs/sort/grid). Combined merge-sort interleaves saved
  and uploads by chosen key; Processing/Failed uploads pin to top.
- AddToCollectionButton (menu | button variants) wired into kebab,
  BookDetailPage (when in library) and UserBookDetailPage (when Ready).
- UserBookDetailPage reverted to its original layout per request,
  Download EPUB button removed.
- Card cover shadow + placeholder color/weight aligned across
  library-card, user-book-card, continue-shelf__card. title="" on
  truncated text in saved + upload cards.
- Backend LibraryItemDto.Author (joined string.Join via memory
  projection); AddToLibrary uses projection instead of Include.
- Frontend LibraryItem.author flows into combined sort/search and is
  rendered under the title on saved cards.
- Collection sidebar filter fetches savedbook + userbook IDs in
  parallel; both predicates apply independently in unified mode.
- useLibrarySearch tab arg removed (orphan); activeTab state removed.
- New UserLibraryEndpointTests with schema + fixture-based author
  regression guards using Assert.Skip for explicit skip semantics.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@mrviduus mrviduus merged commit 5135350 into main May 5, 2026
7 of 9 checks passed
mrviduus added a commit that referenced this pull request May 5, 2026
Mobile shelves were preview-only carousels with no drill-down. Web has
had /library/shelf/:id since PR #204; this brings parity.

- new app/library/shelf/[shelfId].tsx — full-grid view of a shelf using
  useLibraryShelves; safe-area header with back nav; valid shelfIds:
  continueReading, recentlyAdded, quickReads, finishedThisMonth.
- LibraryShelf gains optional viewAllHref prop; when set, renders a
  "View all →" link in the header.
- LibraryShelves wires hrefs for continueReading / recentlyAdded /
  finishedThisMonth (matching web — quickReads has no view-all on either
  platform).

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant