neon
a6d84ae20c
test(metadata): add initial E2E coverage for metadata write flow
2026-04-01 08:05:00 -06:00
neon
7491ad78c8
fix(metadata): harden fetch flow and module reliability
2026-04-01 07:11:40 -06:00
neon
649dab6c34
fix(metadata): harden extraction, relation transactions, and cover
2026-04-01 06:18:20 -06:00
neon
c4a0c55e71
fix(metadata): harden write pipeline with atomic writes and ordering
2026-04-01 05:25:00 -06:00
neon
2e37c2d8e6
fix(email): harden security and reliability with stronger coverage
2026-04-01 04:31:40 -06:00
neon
acc5f833e8
fix(cover): harden cover fetching and validate dashboard scroller lenses
2026-04-01 03:38:20 -06:00
neon
bfd193df62
fix(collections): harden book authorization and catalog validation
2026-04-01 02:45:00 -06:00
neon
7a5ca257ba
fix(annotations): harden access validation and metadata fetch scheduling
2026-04-01 01:51:40 -06:00
neon
e110a17d8d
fix(books): harden streaming, cleanup, and embedding reliability
2026-04-01 00:58:20 -06:00
neon
cb91f63fbf
fix(authors): improve enrichment reliability, security, and scalability
2026-04-01 00:05:00 -06:00
neon
a8a3049c26
refactor(metadata): move ComicMetadataService to ComicMetadataRepository
2026-03-31 06:18:41 -06:00
neon
368837eeff
refactor(settings): add repository layer and harden annotation handling
2026-03-31 06:04:32 -06:00
neon
86f0478bc0
refactor(audit): streamline audit module structure
2026-03-31 05:36:35 -06:00
neon
5161fdf203
refactor(server): harden health, library, and lens module architecture
2026-03-31 05:11:33 -06:00
neon
32bbba9aa9
fix(metadata): harden preference concurrency and score recalculation
2026-03-31 04:50:04 -06:00
neon
8347f3e26e
refactor(books): rework recommendation scoring and session validation
2026-03-31 04:25:47 -06:00
neon
fadb0e1c66
fix(server): correct seed defaults and expand edge-case tests
2026-03-31 04:14:05 -06:00
neon
a6967e5902
fix(stats): tighten type safety and cover edge cases
2026-03-31 03:59:55 -06:00
neon
047d4bfc24
fix(scanner): improve upload durability and validation coverage
2026-03-31 03:46:22 -06:00
neon
6f1f1d81b1
fix(books): enforce read status lifecycle rules and threshold handling
2026-03-31 03:35:13 -06:00
neon
7952e32800
fix(authors): harden module behavior and safety checks
2026-03-31 03:11:22 -06:00
neon
ec44071a91
fix(auth): harden OIDC and stabilize session security hooks
2026-03-31 02:54:53 -06:00
neon
36b8eda504
refactor(auth): improve guard architecture and reuse
2026-03-31 02:32:21 -06:00
neon
60f66d17af
refactor(server): improve repository architecture and query structure
2026-03-31 02:23:42 -06:00
neon
55df7fb817
test: fix flaky E2E scenarios and stabilize test runner
2026-03-31 01:54:30 -06:00
neon
0c195165e6
test(scanner): add staging ingest and finalize E2E test suite
2026-03-30 23:17:27 -06:00
neon
4d58418b93
test(auth): add end-to-end coverage for authentication flows
2026-03-30 03:58:27 -06:00
neon
b5cc1ef370
test(scanner): refactor E2E scaffolding and extract shared test harness
2026-03-30 02:11:51 -06:00
neon
db30a45782
test(scanner): bootstrap scanner E2E test infrastructure
2026-03-30 01:18:32 -06:00
neon
400e5fabc9
feat(books): add read status values across schema, types, and validation
2026-03-29 16:56:57 -06:00
neon
e2d0789851
fix: prevent double API call on library load
...
- remove racy watch(loading)+loadIfSentinelVisible fallback that fired before RecycleScroller set virtual height
- add hasMore guard and total reset in useBookQuery for defensive correctness
2026-03-29 15:26:13 -06:00
neon
399fa179d2
perf: remove unused tags, metadataScore, durationSeconds from BookCard
...
- drop tags field and bookTags fan-out query from all BookCard paths
- drop metadataScore from BookCard select (only used in BookDetail)
- fix durationSeconds: was never selected in DB; derive audiobook badge from file format using FORMAT_TO_GROUP instead
2026-03-29 14:09:24 -06:00
neon
ec25a62ebe
feat: add inline not-found states for all entity views and 404 routing
2026-03-29 13:34:09 -06:00
neon
91842fe212
feat(settings): expand file naming pattern reference with examples
2026-03-29 12:23:06 -06:00
neon
d5ba57f483
feat: harden nested audio metadata contract and UI consistency
2026-03-29 10:04:26 -06:00
neon
efbb63e764
fix(books): fix rating display bug and trim recommendation response body
2026-03-29 09:21:23 -06:00
neon
77a1a3fecb
feat: add reading progress thresholds to library settings
2026-03-28 13:34:40 -06:00
neon
f628d6dfc4
feat: add book-per-file organization mode and refine library creator UI
2026-03-28 12:04:42 -06:00
neon
31422c9054
fix: add book:restored toast and fix missing events in reconcile
2026-03-28 09:21:47 -06:00
neon
af9424f04a
feat: add audiobook progress and refactor metadata extraction
2026-03-28 07:39:23 -06:00
neon
6daeca7ab2
feat(stats): add top series and library insight charts with backend
2026-03-27 13:16:51 -06:00
neon
10a4a2045a
feat(cover): add per-library aspect ratio and per-view cover size
2026-03-26 21:14:22 -06:00
neon
61746cb62c
feat: add format breakdown to Reading Clock with improved tooltip
2026-03-26 10:41:07 -06:00
neon
48a1c6bb1d
fix: restore Genre Reading Time treemap colors using getThemePalette
2026-03-26 07:49:30 -06:00
neon
0e9067d119
fix: match ECharts palette colors to --primary per accent
...
- replace broken HSL approach with pure JS oklch-to-hex using exact --primary L/C from accents.css
- remove --chart-1..10 and --chart-icon-* CSS tokens
- remove dead --color-chart-* Tailwind bridge aliases
- inline CSS relative color syntax in ChartCard and StatisticsSummaryCard
- fix MetadataScoreDistributionChart mark area to rgba (ECharts-compatible)
2026-03-26 07:42:49 -06:00
neon
ba37f19b45
feat(stats): add user analytics charts and stabilize ECharts theme
2026-03-26 04:28:08 -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
4d58fbdfc6
feat: reactive ComicVine throttling with precise window-based cooldown
...
- replace fixed RateLimiter with passive timestamp tracker exposing windowResetMs()
- record throttle in ProviderThrottleTracker on 420 with exact time until hourly window resets
- inject ProviderThrottleTracker into ComicVineProvider; catch ProviderThrottleError in search and lookupById
- add unit tests for comicvine.client and comicvine.provider (49 tests)
2026-03-25 03:28:20 -06:00
neon
16a5513076
feat: standardize logging with some initial logs
2026-03-25 02:36:55 -06:00
neon
a30aef22b4
feat(metadata): add iTunes cover provider with selectable resolution
2026-03-24 21:39:58 -06:00