Commit Graph

374 Commits

Author SHA1 Message Date
neon 2ac7bf822d feat: overhaul series detail view and improve card interactions 2026-04-16 17:06:53 -06:00
neon 97207cd66f feat: implement scoped and mobile search in ViewHeader 2026-04-15 22:20:40 -06:00
neon 586f5b080b refactor(stats): standardize chart empty states with shared component 2026-04-15 19:33:27 -06:00
neon cbaa3b0f1b feat(series): add series collapse with per-library preferences 2026-04-15 18:25:34 -06:00
neon 485bea5e5b feat: implement series browser with card deck visual style
- Add series browser page featuring browse and detail views
- Implement card deck cover design with horizontal spread and square aspect ratio
- Fix series-related bugs in decoding, state management, and data types
- Optimize responsive grid layout for series items
2026-04-15 08:55:25 -06:00
neon 40d829a8a9 feat(notifications): add notification center with real-time updates
- add notifications DB schema, repository, service, gateway, and controller
- add shared notification types, categories, and preference models
- add NotificationAccess permission with authorization matrix probe
- add frontend composable with Socket.IO subscription and REST API
- add NotificationPopover, NotificationItem, and NotificationPreferences components
- integrate notification producers in scanner, metadata fetch, book bucket, author enrichment, email, migration, and file write-back services
- add 30-day auto-cleanup via existing CleanupService cron
- add 29 backend unit tests for notification service and controller
2026-04-15 03:15:05 -06:00
neon f3d185ccb2 fix: adjust layout heights and lower branch coverage threshold 2026-04-15 01:19:31 -06:00
neon dd9fd205d6 feat: add bulk tag update and improve selection action bar 2026-04-15 00:58:50 -06:00
neon 94af42cbbf revert: undo kepubify Docker build-time install 2026-04-14 07:42:29 -06:00
neon 704ce09674 feat(client): add micro animations and stagger animation composables 2026-04-14 07:39:59 -06:00
neon 37b3b53fd1 chore: lower server test coverage to 85% 2026-04-14 05:37:25 -06:00
neon ef7f63cb1c ci: allow dependency-review to fail without blocking CI 2026-04-14 04:38:10 -06:00
neon 5ddabcf693 feat: add book cover placeholders and cover presence filtering 2026-04-14 04:06:21 -06:00
neon 0bf0a5b9fa feat: add guided onboarding tour
- install driver.js and add 9-step tour covering libraries, lenses,
  collections, search, statistics, appearance, upload, and book bucket
- first step context-aware: points to welcome card on first run, falls
  back to settings nav when libraries already exist
- tour state persisted in user.settings JSONB, survives across devices
- skip on mobile; any dismissal (skip or done) marks tour complete
- theme the tour popover with app design tokens (card, primary, radius)
- add "Take the tour again" button in Settings > Account (desktop only)
2026-04-14 02:54:08 -06:00
neon ad46061db7 chore: install kepubify into Docker image at build time
- download correct arch binary from projectx-tools during image build
- use system binary at /usr/local/bin/kepubify when available, fall back to runtime download for local dev
2026-04-13 23:13:01 -06:00
neon a94bfd21ea fix: ebook reader UI - bookmark overlay, search panel, sidebar tabs 2026-04-13 23:01:55 -06:00
neon 9488e6c633 fix: allow OPDS cover access for cross-origin clients
- gate cover/thumbnail links on hasCover flag
- add Cross-Origin-Resource-Policy: cross-origin header
2026-04-13 22:14:55 -06:00
neon 71ba6cb566 feat: add support for multiple OIDC providers
- implement OIDC provider and identity repositories
- allow linking/unlinking multiple OIDC identities to a single user
- update login UI to display and handle multiple providers
2026-04-13 20:06:27 -06:00
neon 35594e849e feat: enhance OIDC flow with audit logs and improved error handling
- add audit events for OIDC login and user provisioning
- improve callback error messages and state validation
- add OIDC provider schema and initial migration
2026-04-13 14:44:30 -06:00
neon 75d7aec48d security(auth): fix OIDC SSRF bypass and public client token exchange
- allow .local domains in SSRF check when allowLocal=true (dev only)
- skip DNS resolution for explicitly local hostnames to avoid private IP block
- pass allowLocal based on NODE_ENV via ConfigService in AppSettingsService
- omit client_secret from token exchange body for public clients
2026-04-13 09:08:23 -06:00
neon 156eaa699a chore: remove npm lockfiles and switch to pnpm-only lockfile 2026-04-12 18:18:28 -06:00
neon 13a3ade043 feat: validate and normalize book published year to 1000-2200 range 2026-04-12 17:28:10 -06:00
neon 27f902da1f fix: align book_files role constraint with scanner FileRole values
- add 'metadata' to book_files_role_chk (opf/nfo files were being rejected)
- rename 'supplementary' to 'supplement' in classify.ts to match DB
- export FILE_ROLES const as single source of truth for valid roles
- add contract tests: every classifyFile output must be a FILE_ROLES member
- add schema test: book_files_role_chk must contain all FILE_ROLES values
2026-04-12 17:23:04 -06:00
neon 19f81faf4d ci: reorganize project scripts and E2E workflows by type 2026-04-12 17:12:36 -06:00
neon 67ec10f703 feat: implement security audit fixes SEC-001 through SEC-031 2026-04-12 16:15:03 -06:00
neon 1f43ea2cb5 feat: enforce non-empty icons for collections, lenses, and libraries 2026-04-12 10:32:31 -06:00
neon 0aad8c0d7d feat: consolidate mobile UX and filtering updates
- improve responsive layouts and controls across dashboard, home, lens, collection, authors, and book detail surfaces

- modernize settings and metadata provider UIs, including the floating dashboard settings action and cleaner section composition

- add synced or per-view cover sizing and spacing behavior, plus expanded mobile filter and sort control patterns

- extend backend filtering with library rules and increase hardcover ID limits across schema, DTO validation, and migration metadata
2026-04-12 09:45:00 -06:00
neon 32359cebbf perf(client): reduce sidebar GPU load and tune transition visuals 2026-04-10 21:50:08 -06:00
neon a451825735 feat: centralize library creation redirect logic into a composable 2026-04-10 19:59:14 -06:00
neon b0d6bc1957 chore: setup git hooks, refactor e2e test setup and fix ts build errors 2026-04-10 18:46:41 -06:00
neon c4a2cbc4d8 chore: update dependencies to latest minor and patch versions 2026-04-10 11:53:58 -06:00
neon b804abb043 chore: enhance ci pipeline 2026-04-10 11:06:25 -06:00
neon e6186c09df test: add comprehensive unit tests and increase coverage thresholds 2026-04-10 09:26:37 -06:00
neon 698951a245 refactor(metadata): improve parsing, cover storage, and content type 2026-04-10 00:26:45 -06:00
neon 3fb99714d7 fix(stats): remove hardcoded library IDs from statistics page 2026-04-09 05:18:00 -06:00
neon 02a0d711c3 chore: improve drizzle queries 2026-04-09 05:14:28 -06:00
neon b0ed068fd6 chore: improve download feature 2026-04-08 22:52:52 -06:00
neon 26d1e6ebc8 feat: improve header UI and optimize docker storage configuration 2026-04-08 20:34:38 -06:00
neon 1cf34fb0ab feat: improve PDF reader loading state and UI 2026-04-08 20:33:38 -06:00
neon 9f6b7d4f2b feat: enhance PDF metadata extraction and refactor book cover storage 2026-04-08 20:32:38 -06:00
neon a8b203ef4a chore: optimize docker image and scanner performance 2026-04-08 20:31:38 -06:00
neon 6de8e8bc60 feat(scanner): add live book grid during active scan 2026-04-08 05:02:57 -06:00
neon 0e9ae2ae10 feat(scanner): add kepub and audio format support to uploads 2026-04-07 13:56:58 -06:00
neon 54f2894762 feat(scanner): enhance upload durability and add E2E test suites 2026-04-07 12:44:12 -06:00
neon ef82cb5d00 fix: patch Trivy CRITICAL/HIGH findings in container image
- apk upgrade in runtime stage to fix OpenSSL CVEs (CVE-2025-15467 CRITICAL, CVE-2025-69419 HIGH)
- remove npm from runtime image to eliminate npm-bundled CVEs
- update fastify to 5.8.5 and force via pnpm override (CVE-2026-33806 HIGH)
- switch vitest pool to threads to fix flaky audio extractor tests
- simplify unit test setup with direct instantiation
2026-04-07 07:30:07 -06:00
neon 3c95efe25b ci: add Trivy image scan gate before GHCR push 2026-04-07 05:51:02 -06:00
neon 79b4c45d88 feat: add load-from-file metadata button on book edit tab 2026-04-06 15:13:57 -06:00
neon cfc424ea37 feat: move file write settings from global to per-library 2026-04-06 14:54:50 -06:00
neon decd0f1a2e fix(server): fix migration executor bugs and schema corrections 2026-04-05 20:24:08 -06:00
neon 47e5acd9e6 feat: harden database schema 2026-04-05 18:07:11 -06:00