Commit Graph

368 Commits

Author SHA1 Message Date
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
neon 9fd4e162aa feat(server): harden booklore migration with adapters and E2E tests 2026-04-05 16:01:04 -06:00
neon 578cfd584a test(server): harden E2E suites across scanner, auth, and email modules 2026-04-04 23:32:25 -06:00
neon 585da64312 fix(cover): include Cache-Control and ETag in 304 responses 2026-04-04 04:11:36 -06:00
neon bab3813ff8 feat(metadata): add per-field locking to protect fields from overwrites 2026-04-03 21:31:02 -06:00
neon abd06c5ccd style(books): sort search format pills and align detail cover 2026-04-03 20:54:11 -06:00
neon 847b048df7 fix(collections): prevent IconPicker from closing AddToCollectionSheet 2026-04-03 20:53:11 -06:00