Commit Graph

1044 Commits

Author SHA1 Message Date
neon 909806636c chore: update husky hook scripts for v9 2026-03-10 20:32:52 -06:00
neon 1b9db4f374 feat(client): wire book detail actions and reorganize reader structure
refactor(reader): reorganize epub/pdf/cbz into sub-folders, apply theme tokens, fix PDF blur and text selection
2026-03-10 20:25:52 -06:00
neon 956801f907 feat: redesign settings pages, theme tokens, and fix layout alignment 2026-03-10 04:21:33 -06:00
neon 440972cb89 refactor(settings): move settings from drawer to dedicated tabbed view 2026-03-10 04:20:33 -06:00
neon 652dcba69a feat: replace roles system with flat permissions and isSuperuser flag 2026-03-10 04:19:33 -06:00
neon dbed51fcd0 feat: expand background patterns and reorganize by visual type 2026-03-10 04:18:33 -06:00
neon 86a1b512cc feat(auth): add initial setup flow and harden auth/session handling 2026-03-10 04:17:33 -06:00
neon 17e8ba0f49 fix(client): extract onSearchBlur to prevent Prettier multiline issue
- 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
2026-03-10 04:16:33 -06:00
neon dcc60006f5 feat: expand accent palette and replace ThemeToggle with ThemePicker
- add 16 pastel accent colors (coral, peach, butter, lemon, celadon, sage, mint, seafoam, powder, mist, periwinkle, wisteria, lavender, orchid, blush, grey)
- replace ThemeToggle icon button with ThemePicker segmented light/dark control
- wire ThemePicker into AppHeader alongside existing accent/radius/background pickers
- update AccentPicker, BackgroundPicker, RadiusPicker to reflect new palette structure
- update theme store with ACCENT_VIVID/ACCENT_PASTEL split and full type union
2026-03-10 04:15:33 -06:00
neon c882b8f2fe fix: smooth book navigation by preventing view remount on bookId change 2026-03-10 04:14:33 -06:00
neon 0a533ed2e1 feat: author detail and book detail UI/UX polish
- 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
2026-03-10 04:13:33 -06:00
neon 1d44702bec feat(client): polish ViewHeader, library icon, and appearance fixes 2026-03-10 04:12:33 -06:00
neon a3579ac57f ci: overhaul CI workflows for reliability and maintainability
- 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
2026-03-07 18:14:36 -06:00
neon f911c552a7 fix: harden foliate streaming EPUB resolution 2026-03-06 17:21:49 -06:00
neon fd21741e08 feat: add resizable persisted sidebar width 2026-03-06 16:41:49 -06:00
neon 1d60aa902c feat(metadata): add genre merge and provider-id auto-fill preferences 2026-03-06 15:43:16 -06:00
neon ae4b566535 style: refine background pattern options 2026-03-06 12:50:42 -06:00
neon 91dddc6740 test: add backend coverage and related service updates 2026-03-06 12:08:22 -06:00
neon 891cd19f46 chore: implement local quality foundation 2026-03-06 09:08:15 -06:00
neon aeae0ac8ce feat: add configurable download filename patterns 2026-03-06 07:22:29 -06:00
neon 9138e0265c feat: enrich book quick view metadata and links 2026-03-06 06:25:33 -06:00
neon e435629e9e feat: show provider id and source url in metadata diff 2026-03-06 06:07:56 -06:00
neon ac180e521f feat: compact book details and add provider icon links 2026-03-06 05:34:03 -06:00
neon 78051d0b42 feat(cover): add online cover search with provider infrastructure 2026-03-06 04:21:48 -06:00
neon ca7a1b0095 style: refine sidebar navigation styling 2026-03-06 02:32:15 -06:00
neon 1a40d37317 fix: prevent book cover cropping in detail and edit views
- change cover image display from object-cover to object-contain
- add background color to cover containers to handle non-standard aspect ratios
2026-03-06 01:12:05 -06:00
neon 6df8872bd3 feat: add next/previous book navigation to book detail views
- 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
2026-03-06 00:58:27 -06:00
neon 0686ae6477 refactor: overhaul UI layout and modernize design system
- 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
2026-03-06 00:17:10 -06:00
neon f21dfc12e3 fix: cbx filename title fallback and remove book card hover tooltips 2026-03-05 03:22:29 -06:00
neon 7a0e66fe21 feat(metadata): add CBX/CBZ format writers and ComicInfo support 2026-03-04 17:51:19 -06:00
neon 38a601675e feat: add epub streaming with server-side file serving 2026-03-04 04:53:52 -06:00
neon 94a0d51584 feat(metadata): add PDF metadata writer with XMP round-trip 2026-03-03 11:57:15 -06:00
neon b9afb83039 feat(books): add single-book delete with confirmation dialog 2026-03-03 09:32:27 -06:00
neon f3cb9e7714 refactor: introduce AppLayout for sidebar/header shell via nested routes
- add AppLayout.vue owning SidebarProvider, AppSidebar, SidebarInset, and AppHeader
- nest all authenticated views under AppLayout in the router
- leave reader and auth routes at the top level without the shell
- strip SidebarInset and AppHeader from all 8 views
- simplify App.vue to global overlays only
2026-03-03 05:23:08 -06:00
neon 6d76243909 feat: add file-write module for writing metadata back to EPUB files 2026-03-03 04:56:16 -06:00
neon d63859cf30 feat: stream bulk metadata refresh and cover re-extraction via SSE
- add useRefreshingBooks composable for shared per-book spinner state
- show refresh spinner on BookCoverCard during any bulk operation
- bulk-refresh-metadata and bulk-re-extract-cover endpoints now stream SSE
- client reads SSE stream and updates each card cover+spinner one-by-one
- wire all missing SelectionActionBar events in LensView and CollectionView
2026-03-02 23:33:37 -06:00
neon 3304554375 feat: collapsible sidebar sections with refreshed styling 2026-03-02 21:04:50 -06:00
neon b1765a4d66 fix: sticky header for lens and collection views
- change min-h-screen to h-screen so only main scrolls, not the whole page
2026-03-02 20:15:15 -06:00
neon 63662b46f8 refactor(client): lift sidebar to App.vue and add rating sort 2026-03-02 19:36:08 -06:00
neon ec5dda57b0 feat(books): enhance filter UI with nested groups and improvements
- fix nested group ALL/ANY toggle visibility and empty-rules group handling
- add FilterSummary component with color-coded field/operator/value display
- add collapsible filter preview in LensView with header toggle
- raise MAX_DEPTH to 5 to match backend validation
- add ruleToParts helper for structured rule rendering
- update filter chip styling: emerald fields, muted operators, primary values
- style ALL/ANY badges with sky-blue and amber respectively
- add segmented sort chip with rose accent and icon
- rebuild @projectx/types package to include tag and collection in RuleField
2026-03-02 16:15:14 -06:00
neon ed6c7428ec feat: add save-as-lens from HomeView filter panel
- add SaveAsLensDialog component that takes current filter and sort as props
- wire Save as Lens button in HomeView filter panel header
- on save, creates lens with the active filter/sort and navigates to it
2026-03-02 11:02:24 -06:00
neon 58ef757ccd feat(metadata): add FB2 cover extraction and fix stale staging cover
- add cover-fb2.ts: extract cover from <coverpage>/<binary> in FB2 XML
- add fb2-parser.ts: extract title, authors, series, language, year, genres from FB2 title-info
- wire FB2 into cover.ts extractor switch and metadata.service.ts extractMetadata
- wire FB2 into staging-metadata.service.ts for staging ingestion
- add fb2 to METADATA_FORMATS in scanner.service.ts and upload-processor.service.ts
- add MetadataService.saveExtractedCoverBytes() for saving cover bytes directly
- fix staging finalize: copy staging cover to book cover dir on finalize, overwriting stale covers
- add Regenerate Cover button to CoverEditorPanel with permission gate and cache busting
2026-03-01 21:44:57 -06:00
neon 9350fe12d2 feat: add user-configurable card overlays and regenerate cover action
- add CardOverlayKey type and cardOverlays preference to useDisplaySettings, persisted in localStorage
- add series badge, progress bar, progress pill, format badge, rating dots, and new-book indicator overlays to BookCoverCard
- add format-colors.ts with per-format color map (epub, mobi, azw3, azw, fb2, txt, pdf, cbz, cbr, cb7)
- add Card Overlays toggle section to AppearanceSettings
- fix card click handling via handleCardClick to prevent button clicks from triggering book navigation
- add pointer-events-none to all decorative overlay elements
- add POST /api/books/:id/re-extract-cover endpoint delegating to bulkReExtractCover
- add Regenerate Cover dropdown item with loading state and live cover bump via bumpVersion
2026-03-01 20:49:06 -06:00
neon 911dc27467 fix(server): add trigram indexes for search and fix header z-index
- enable pg_trgm extension in db module on startup
- add GIN trigram indexes on book_metadata title, series_name and authors name
- refactor book search query to use LEFT JOIN instead of correlated EXISTS subquery
- fix jwt-auth guard to use /api/v1/ prefix for password-change allowlist
- regenerate baseline migration to incorporate schema index changes
- fix AppHeader sticky z-index from z-10 to z-30 so search dropdown renders above book card series badges
2026-03-01 18:53:22 -06:00
neon 43d0f5017c feat(client): overhaul global search with keyboard nav and highlights
- widen search input on focus (max-w-xs -> max-w-lg) with smooth transition
- fix result click to navigate to book detail page instead of library
- add keyboard navigation (arrow keys, enter, esc) with visual selection
- add Cmd+K / Ctrl+K shortcut to focus search from anywhere
- highlight matched text in title, author, and series fields
- show format badges (epub, pdf, mobi, etc.) per result row
- add row separators and larger cover thumbnails
- show "No results" only after debounce settles, not during typing
- extend search to match author names and series in addition to title
- add settled ref to useGlobalSearch to track fetch completion
- fix v-if -> v-show for grid/list view toggles in Home/Lens/CollectionView
2026-03-01 18:42:59 -06:00
neon 6c51441215 feat(metadata): add provider reservoir and drag-to-assign for fields 2026-03-01 14:41:28 -06:00
neon f60584cf16 feat(books): add icon tooltips, book export, and bulk book actions
- add tooltips to all header icons (search, upload, appearance, settings, theme toggle, sidebar trigger)
- fix appearance popover by moving Tooltip outside Popover
- add POST /api/books/export endpoint to zip and download books
- add POST /api/books/bulk-refresh-metadata and bulk-re-extract-cover endpoints
- add BulkBookIdsDto and ExportBooksDto
- add archiver dependency for zip streaming
- update theme CSS variables and component styles across client
2026-03-01 10:55:31 -06:00
neon 02a5b46768 feat: add email delivery feature
- full email provider management (SMTP, test connection, share, default)
- recipient and recipient group management
- email templates with variable interpolation and system default
- user email preferences (provider, recipient, template defaults)
- send book via email from book list and cover card
- send log with pagination, resend on failure, delete entries
- admin email relay settings (SMTP relay, domain allow/blocklist)
- partial unique index to prevent duplicate system templates
- fix load-more pagination to append rather than replace entries
2026-03-01 04:00:39 -06:00
neon b8ddadef5d style(books): redesign book files tab with icon and improved formatting
- replace format badge with a styled file icon (dog-ear clip-path, document lines, corner fold)
- reformat server files with prettier
2026-02-28 21:06:16 -06:00
neon 9c1b57c72b chore: env validation, shutdown hooks, logger noise reduction
- add Zod-based env validation schema; fail fast on missing/invalid vars
- suppress NestJS framework boot logs (InstanceLoader, RouterExplorer, RoutesResolver)
- enable graceful shutdown hooks
2026-02-28 19:51:06 -06:00