Commit Graph

36 Commits

Author SHA1 Message Date
neon 4d58418b93 test(auth): add end-to-end coverage for authentication flows 2026-03-30 03:58:27 -06:00
neon db30a45782 test(scanner): bootstrap scanner E2E test infrastructure 2026-03-30 01:18:32 -06:00
neon af9424f04a feat: add audiobook progress and refactor metadata extraction 2026-03-28 07:39:23 -06:00
neon 1418957b6f chore: cleanup project structure and resolve client type errors
- resolve all 69 client type-checking errors for stricter TS compliance
- remove obsolete type-check baseline scripts and files
- overhaul project root with updated README.md and new DEVELOPMENT.md
- migrate to unified baseline migration strategy and cleanup docker configs
- remove redundant production and dev-specific shell scripts
2026-03-25 07:14:51 -06:00
neon f847cc1d22 fix(metadata): use per-provider keys and extract relevance scoring
- replace shared 'providerId' key in pickedSources with provider-specific
  field names (googleBooksId, goodreadsId, etc.) so each provider's ID
  pick is independent and not overwritten when switching tabs
- extract candidate relevance scoring into candidate-relevance.ts with
  Levenshtein-based title/author scoring, ISBN exact match, and junk
  title filtering; remove duplicate inline scoring from goodreads provider
2026-03-24 09:23:01 -06:00
neon 391fa46b27 chore(deps): upgrade major server dependencies 2026-03-23 02:23:17 -06:00
neon 473459b854 chore(deps): update workspace dependencies 2026-03-23 01:58:44 -06:00
neon 2117b729d5 feat(reader): add audiobook reader with narrator and Audible metadata
- add audiobook reader with playback queue, progress tracking, and audio settings
- add narrator support with DB schema, module, and metadata extraction
- add Audible and Audnexus metadata providers with mappers and tests
- improve scanner with file classification, walk utilities, and file-event processing
- extend upload validator and processor for audio formats
2026-03-21 16:14:55 -06:00
neon 9d61ded2ff chore: add OSS readiness files and contributor docs 2026-03-20 00:34:07 -06:00
neon a7df587c1e feat: implement reading session tracking for epub, pdf, and cbz readers 2026-03-19 20:18:09 -06:00
neon 069fa1488c feat: add user-level statistics pipeline and dashboard charts 2026-03-19 18:05:22 -06:00
neon 9ef641e650 feat: add audit logging system
- audit_log table with action, resource, resourceId, description, ip, countryCode, meta
- AuditEventsService (EventEmitter), AuditRepository, AuditService, AuditInterceptor
- @Auditable decorator wired on all mutating endpoints across every controller
- auth events (login, logout, register, password change, failed login) emitted directly in AuthService with IP capture
- geoip-lite for offline IP-to-country resolution
- nightly retention cleanup via cron with configurable audit_retention_days setting
- superuser-only GET /audit-log endpoint with userId, action, resource, date range filters
- AuditLogPage.vue with table, filters, pagination, and failed-auth row highlighting
- regenerated baseline migration to include audit_log in 0000_baseline.sql
2026-03-18 11:34:13 -06:00
neon aa2456fbf8 feat(authors): add auto-enrichment queue, worker safety, and live status 2026-03-13 08:14:45 -06:00
neon b64aa519ef chore: migrate server tests from Jest to Vitest 2026-03-11 13:07:31 -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 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 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 51dd3d30f3 chore: backend infrastructure improvements
- add URI versioning: global prefix changed to api/v1, all frontend call sites updated
- add AbortSignal.timeout to all outbound fetch calls (10s API, 15s scrapers)
- add X-Request-Id response header and requestId field in error payloads
- add response compression via @fastify/compress (gzip + brotli)
- add security headers via @fastify/helmet with CSP for the Vite SPA
- tune pg pool: max 20, idle/connection/statement timeouts on app and migration pools
- add GET /api/v1/health endpoint via @nestjs/terminus with DB connectivity check
2026-02-28 16:02:15 -06:00
neon f66bb0358f feat: add staging area for file ingestion and metadata management
- add staging DB schema, migrations, and repository
- add staging module with ingest, metadata, finalize, and watcher services
- add staging WebSocket gateway for real-time file status updates
- add staging REST controller with file list, detail, bulk edit, and finalize endpoints
- add StagingView with file list, toolbar, file sheet, bulk edit, and finalize dialogs
- add StagingSettings panel for auto-fetch and auto-finalize configuration
- add staging widget for dashboard and sidebar integration
- update metadata-fetch pipeline to support staging context
- add shared staging types package
2026-02-28 01:31:51 -06:00
neon ed3c36e35d fix(metadata): fix Amazon and Goodreads scraper bugs 2026-02-19 02:17:50 -06:00
neon c7f488e88f feat(books): separate edit metadata and files into dedicated pages 2026-02-17 11:07:04 -06:00
neon 5b84fc9e19 chore: bump dependencies 2026-02-14 04:37:08 -06:00
neon 325d0f6f0f fix: preserve book file rows on delete so restored files keep their IDs 2026-01-28 12:47:51 -06:00
neon 426bc5fc82 feat(scanner): detect missing books via watcher and propagate to UI 2026-01-28 07:58:26 -06:00
neon bc1ee837bf feat(books): add lens with query engine, filter builder, and icon picker 2026-01-21 18:07:07 -06:00
neon 73d66b75e3 feat(scanner): add live scan progress via WebSocket and auto-scan 2026-01-19 16:48:11 -06:00
neon 8dea90d966 feat(docker): add monorepo Docker build with auto-migrate and pdf-lib 2026-01-13 14:28:36 -06:00
neon 477c68122f feat(auth): add OIDC/SSO support with RP-initiated logout and settings 2026-01-13 08:23:05 -06:00
neon 45f7c73ecb feat: add auth, RBAC, admin panel, and JWT-protected routes 2026-01-12 15:05:39 -06:00
neon c6224bd6fb feat: add auth schema, consolidate to single baseline migration 2026-01-08 08:00:29 -06:00
neon 9ca37cfbec feat(reader): add CBR and CB7 comic support with cover and metadata 2026-01-03 09:16:03 -06:00
neon dd5b2700da feat(reader): add CBZ/CBR comic reader with backend page streaming 2026-01-03 07:43:11 -06:00
neon c4f521abf9 feat(cover): add thumbnail generation and serve via thumbnail endpoint 2026-01-01 21:43:48 -06:00
neon 57b58a9404 refactor(reader): add HTTP range requests and improve PDF metadata 2026-01-01 20:42:35 -06:00
neon b4ee0cb90c feat(metadata): add cover extraction for epub, mobi, cbz, and pdf 2025-12-22 14:37:28 -06:00