library: finish #203 (shelf page + merged sections + add-to-collection + author + EPUB removal)#204
Merged
Merged
Conversation
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
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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)
LibraryItemDto.Authornot yet projected.What's added
/:lang/library/shelf/:shelfIdroute +LibraryShelfPage./librarywith combined merge-sort.AddToCollectionButtonwithmenu | buttonvariants; wired into both kebab and detail pages.LibraryItemDto.Author(joined names) via memory-projection; AddToLibrary uses projection instead of Include.title=""parity.UserLibraryEndpointTests— schema + fixture-based regression guards withAssert.Skip.Test plan
/en/library— shelf "View all →" → dedicated page.source='all'→ one search/tabs/sort, mixed grid.pnpm -C apps/web build,dotnet buildgreen.🤖 Generated with Claude Code