- add displayOrder column to lenses and collections schema
- add POST /api/v1/{lenses,collections}/reorder endpoints (user-scoped)
- move Lens type to @projectx/types; add displayOrder to Collection type
- add useDraggableOrder composable with optimistic updates, debounce, rollback, and unmount cleanup
- wire VueDraggable into AppSidebar with per-section edit-mode toggle
- replace section header add/reorder buttons with a single kebab dropdown
- add split Read button on book detail page (primary format direct, dropdown for others)
- add useBookDownload composable with auth-aware blob download and ZIP export
- add BookDownloadButton component for detail page and files tab
- refactor useBookBulkActions to delegate export to useBookDownload
- add Open/Download submenus to book card dropdown
- group Edit/Refresh/Regenerate under Metadata submenu in book card
- set metadata fetch preferences defaults (goodreads-first provider order, saveProviderIds, genre merge)
- set appearance defaults: dark theme, vinyl pattern, brightness 50, updated card overlays
- set cover size 140px, grid gap 20px, new indicator threshold 7 days
- replace rating dots with colored star badge (per-rating color scale)
- set convert-to-kepub default to false
- add tags input to book edit page
- rearrange provider IDs in edit page to a single row
- make rating stars clickable in book details for direct updates
- always display rating in book details even if not set
- improve alignment of title, score badge, and provider icons
- Prettier was re-expanding the inline semi-colon separated handler back to multi-line on each commit, breaking the Vue compiler
- extract into a named function to avoid the issue
- replace author header stat pills with stat blocks (book count, last added)
- collapse author admin actions (edit, merge, refresh) into an Actions dropdown menu
- author edit/merge panels now appear as a conditional card below the header
- extract BookDetailLayout component to unify card shell + tab bar across all book views
- wrap book detail, files, and edit metadata views in a shared card container
- integrate tab bar into the card top edge for visual cohesion
- card fills viewport height, content scrolls internally
- reduce horizontal gap by removing per-view mx-2
- add CODEOWNERS assigning .github/ to @neonsolstice
- configure automated updates for npm, docker, and github-actions ecosystems
- replace custom change-detection bash script with dorny/paths-filter@v4
- consolidate lint, typecheck, and test into a single checks matrix job
- gate per-package change detection via has-changes step (matrix unavailable in job-level if)
- fix duplicate actions/setup-node call in setup-node-pnpm composite action
- scope pnpm store cache key by pnpm version to prevent stale cross-version cache hits
- pin all action references to commit SHAs
- fix container-image concurrency group to use commit SHA across all trigger types
- add timeout-minutes to all jobs
- document fail-fast: false rationale and checks: write trade-off
- create useBookNavigation composable for shared book list context
- refactor BookDetailHeader to include navigation buttons and index display
- sync book context and register loadMore callback in Home, Lens, and Collection views
- apply BookDetailHeader to Details, Files, and Edit Metadata tabs
- transition to floating UI with centralized background pattern in AppLayout
- restructure core layout for stable headers and independent view scrolling
- synchronize component radii (scrollers, cards, skeletons) with global settings
- standardize headers and book detail tabs for consistent alignment and height
- enhance AppSidebar, AppHeader, and ViewHeader with refined active states
- center project logo in collapsed sidebar by removing offset padding
- update shadcn components and theme bridge for consistent design system support