This website requires JavaScript.
c2aae7e4e0
fix(frontend): copy .npmrc into docker builds, use glibc build stage
fix/dockerfile-npmrc
XingfenD
2026-09-16 23:45:12 +08:00
ef57b194f4
chore(frontend): tighten eslint/axe gates, remove reader waivers (B5 done, spec ② complete)
master
XingfenD
2026-09-16 19:27:25 +08:00
395be9688d
refactor(frontend): remove ui.ts/icons.tsx and all rd-* legacy classes (B5)
XingfenD
2026-09-16 17:53:51 +08:00
28d8587e71
feat(frontend): shelf reading stats card + session tracking (B4)
XingfenD
2026-09-16 17:49:12 +08:00
4767ee7fec
refactor(frontend): PDF reader chrome to shadcn (B4)
XingfenD
2026-09-16 17:43:51 +08:00
8831a9b277
feat(frontend): EPUB typography themes + chrome migration (B3)
XingfenD
2026-09-16 17:41:35 +08:00
272d0bc672
test(frontend): text search e2e with txt fixture (B2)
XingfenD
2026-09-16 17:37:50 +08:00
1004daf821
feat(frontend): text reader search + typography, chrome migration (B2)
XingfenD
2026-09-16 16:58:39 +08:00
74e5e9d5fe
feat(frontend): in-book text search core (TDD)
XingfenD
2026-09-16 16:51:36 +08:00
0d7cd5f322
chore(frontend): remove debug probe artifact
XingfenD
2026-09-16 16:50:59 +08:00
174c498757
test(frontend): CBZ page-mode component test + e2e mode/RTL smoke (B1)
XingfenD
2026-09-16 16:50:55 +08:00
26aafb3f53
feat(frontend): CBZ page/spread modes + RTL, chrome migration (B1)
XingfenD
2026-09-16 16:20:08 +08:00
cea2414371
refactor(frontend): shared reader chrome to shadcn/radix (header, nav Sheet, bookmarks)
XingfenD
2026-09-16 15:46:07 +08:00
1f9d7e7572
feat(frontend): cbz page/spread view math (TDD)
XingfenD
2026-09-16 15:22:59 +08:00
996f492083
feat(frontend): reading stats store (TDD) + session heartbeat hook (B0)
XingfenD
2026-09-16 15:22:38 +08:00
6aefe62a9f
feat(frontend): unified reader settings bar with theme linkage (B0)
XingfenD
2026-09-16 15:20:18 +08:00
8283d66db6
feat(frontend): shadcn sheet/tabs/slider primitives (B0)
XingfenD
2026-09-16 15:17:26 +08:00
655b77c2b7
feat(frontend): reading theme token group + useGlobalDark for auto linkage (B0)
XingfenD
2026-09-16 15:15:53 +08:00
64cc293878
feat(frontend): readerPrefs v2 unified structure (TDD)
XingfenD
2026-09-16 15:15:08 +08:00
72cf13c8c3
chore(frontend): extend tsc coverage to e2e/configs, tighten vitest include (B0)
XingfenD
2026-09-16 15:13:35 +08:00
154ef11c90
docs: reader revamp implementation plan (18 tasks, 6 batches)
XingfenD
2026-09-16 15:10:02 +08:00
043b7fc480
docs: reader revamp spec (subproject ②)
XingfenD
2026-09-16 14:53:59 +08:00
cc18822c97
Merge remote-tracking branch 'origin/feat/frontend-quality'
XingfenD
2026-09-16 12:16:40 +08:00
2fccf3f2b3
docs: record TS side-by-side + legacy-peer-deps conventions (AGENTS.md + .npmrc)
XingfenD
2026-09-16 11:43:21 +08:00
caacaf9c30
docs: changelog for component testing + bundle review (B4 done, spec ④ complete)
XingfenD
2026-09-16 11:28:12 +08:00
5ba522753a
docs: README frontend gates (lint/e2e/analyze), bilingual
XingfenD
2026-09-16 11:21:35 +08:00
8f4c34c949
docs: bundle-review — align dependency sizes to source-level caliber, rewrite epubjs finding
XingfenD
2026-09-16 11:18:44 +08:00
0bf8129f6e
docs: bundle review findings (B4)
XingfenD
2026-09-16 11:06:58 +08:00
f5c33f538e
chore(frontend): bundle analyzer via npm run analyze (B4)
XingfenD
2026-09-16 11:00:22 +08:00
cd02a88b59
ci(e2e): render configs from templates before compose up
XingfenD
2026-09-16 10:56:47 +08:00
4ba55fcf2a
ci: e2e workflow (workflow_dispatch) + changelog (B3 done)
XingfenD
2026-09-16 10:53:23 +08:00
f2f06a516b
test(frontend): e2e admin smoke (create library + scan)
XingfenD
2026-09-16 10:48:23 +08:00
9c6339d35e
test(frontend): e2e main flow (login→shelf→cbz→bookmark→logout) + axe scans
XingfenD
2026-09-15 17:29:20 +08:00
217adf5914
test(frontend): e2e api/axe helpers
XingfenD
2026-09-15 14:13:58 +08:00
ba28fe9037
test(frontend): tiny 3-page CBZ fixture for e2e
XingfenD
2026-09-15 14:11:24 +08:00
b65ea93984
test(frontend): playwright e2e scaffolding (config + scripts)
XingfenD
2026-09-15 12:00:45 +08:00
a3755bcfab
test(frontend): sample component tests for button/dialog/theme-toggle (B2)
XingfenD
2026-09-15 11:54:56 +08:00
38957b4c2c
fix(frontend): install @testing-library/dom (missing peer under legacy-peer-deps)
XingfenD
2026-09-15 11:50:44 +08:00
ca419410b4
test(frontend): component testing infra (jsdom + testing-library + vitest projects)
XingfenD
2026-09-15 11:46:20 +08:00
147339083b
chore(frontend): wire lint+format into check gate, changelog (B1 done)
XingfenD
2026-09-15 11:44:21 +08:00
a427aa1c4a
fix(frontend): resolve all eslint errors to zero (B1)
XingfenD
2026-09-15 11:39:21 +08:00
29167d3cea
style(frontend): prettier baseline format (no logic change)
XingfenD
2026-09-15 11:27:54 +08:00
09a02fa0d7
chore(frontend): eslint flat config + prettier baseline config
XingfenD
2026-09-15 11:22:02 +08:00
24c5d42531
docs: frontend quality implementation plan (16 tasks, 4 batches)
XingfenD
2026-09-15 11:12:38 +08:00
42a39ceef8
docs: frontend engineering quality spec (subproject ④)
XingfenD
2026-09-15 10:59:43 +08:00
b3a207a5d2
Merge remote-tracking branch 'origin/fix/backend-hardening'
XingfenD
2026-09-15 00:42:26 +08:00
8305af9d5c
docs: changelog + README backend structure for batch C (Task 29)
XingfenD
2026-09-14 23:37:36 +08:00
85c61d9f24
refactor: consolidate isUnique and path validation helpers (Task 28)
XingfenD
2026-09-14 23:26:16 +08:00
cc1470f6e4
test: portsfake + router contract test + handler unit tests (Task 27)
XingfenD
2026-09-14 23:23:10 +08:00
7baadedeb4
refactor(handlers): consume port interfaces, wire media+upload assembly (Task 25+26)
XingfenD
2026-09-14 22:56:15 +08:00
b9b7022212
refactor(scanner): merge add/update into ingest, use shared utilities
XingfenD
2026-09-14 22:12:30 +08:00
fbd5cd243d
feat(upload): extract upload subsystem + move sweep to scanner ticker (B16)
XingfenD
2026-09-14 22:00:25 +08:00
443f4acfa9
feat(media): Media service with EnsureCover, EnsurePage, PageIndex, ChaptersOf, writeAtomic
XingfenD
2026-09-14 19:50:34 +08:00
5ad277241c
feat(bookfile): add Contains and OpenReaderAt utilities
XingfenD
2026-09-14 19:49:50 +08:00
18bd32e0f6
refactor(store): split into per-aggregate files, unexport pool, remove dead ListBookIDs
XingfenD
2026-09-14 19:49:18 +08:00
0c3b34c184
feat(ports): define consumer-side interfaces, sentinel errors, IsUniqueViolation
XingfenD
2026-09-14 19:47:27 +08:00
f99f5a7878
docs: changelog for batch B (B1-B13 bug fixes); gofmt store.go
XingfenD
2026-09-14 19:46:16 +08:00
08b81fde60
fix(upload): retry on O_EXCL collision in single-file upload (B12)
XingfenD
2026-09-14 19:45:08 +08:00
8023a7ec5c
fix(serve): check cover write errors, clean tmp only on failure path (B11)
XingfenD
2026-09-14 19:43:27 +08:00
0c5dfd4353
fix(library): reject reserved names (cache, .uploads) with 400 reserved_name (B8)
XingfenD
2026-09-14 19:42:52 +08:00
0e62d4aa18
fix(handlers): Upload io.Copy error → 500 not 413 (B6), Me distinguishes no-rows from DB errors (B7)
XingfenD
2026-09-14 19:42:25 +08:00
b82a891c50
fix: upload part tmp+rename (B4), transactional last-admin DeleteUser (B5), RowsAffected order (B13)
XingfenD
2026-09-14 19:42:11 +08:00
8fbc58eaaa
fix(redis,scanner): atomic IncrWindow Lua, lock rand/ctx fixes, ScanLock renewal, single-flight, error logging (B1,B2,B3,B9,B10,B11)
XingfenD
2026-09-14 19:40:53 +08:00
2c2f6d3116
chore: gofmt content_test.go
XingfenD
2026-09-14 19:38:33 +08:00
26111e73af
docs: changelog + README updates for batch A (migrations, CI, B14/B15/B17)
XingfenD
2026-09-14 19:38:16 +08:00
b63d50e04b
fix(smoke): drop ignored root_path field, align with API contract (B17)
XingfenD
2026-09-14 19:37:42 +08:00
f26aac103b
fix(config): validate DATABASE_URL required and parseable, log redis disabled (B15)
XingfenD
2026-09-14 19:37:26 +08:00
f0437139f3
fix(main): channel-based serve error instead of log.Fatalf in goroutine (B14)
XingfenD
2026-09-14 19:36:57 +08:00
161128cac0
ci: add GitHub Actions workflow (Gitea Actions compatible)
XingfenD
2026-09-14 19:36:31 +08:00
6d3d23c3f9
feat(db): ordered migration system with advisory lock and baseline detection
XingfenD
2026-09-14 19:36:21 +08:00
c9b32db592
docs(plan): backend hardening implementation plan — 29 tasks across 3 batches
XingfenD
2026-09-14 19:33:30 +08:00
942a9952ca
docs(spec): clarify batch attribution for B8/B9-2 (depend on batch-C packages)
XingfenD
2026-09-14 19:14:45 +08:00
2cf842af9e
docs(spec): backend hardening design — migrations, 17 bug fixes, ports/internal restructure, CI
XingfenD and CommandCodeBot
2026-09-14 16:55:44 +08:00
a22b44be06
Merge branch 'fix/cbz-end-chapter-jump'
XingfenD
2026-09-08 22:45:20 +08:00
2e43cb2423
fix(web): stop CBZ reader snapping/bouncing at chapter end on mixed-orientation books
XingfenD
2026-09-08 22:42:05 +08:00
90b39d4f97
Merge branch 'feat/ui-redesign'
XingfenD
2026-09-08 21:48:41 +08:00
fd227c1f00
feat(web): table-style 库管理, admin entries under avatar 系统管理, shelf-view upload button
XingfenD
2026-09-08 21:45:03 +08:00
3178c2802f
refactor(web): extract prefetch slider into reusable RdSlider component
XingfenD
2026-09-08 21:31:20 +08:00
472e58bec9
fix(web): unify 更多 menu text size, add 0-3 tick anchors under prefetch slider
XingfenD
2026-09-08 21:30:26 +08:00
d2c852d6f0
feat(web): iconify reader chrome, move 连读/预读 into 更多 menu with slider
XingfenD
2026-09-08 21:29:01 +08:00
9c2b7e2074
feat(web): collapse reader toc/bookmark buttons into single 导航 toolbar button
XingfenD
2026-09-08 21:11:16 +08:00
65e07a0890
chore: ignore tsc buildinfo artifact
XingfenD
2026-09-08 21:08:52 +08:00
48161ea1ff
feat(web): unify reader TOC and bookmarks into one left nav drawer with tabs
XingfenD
2026-09-08 21:08:42 +08:00
4f4c7e5434
chore: gitignore playwright artifacts
XingfenD
2026-09-08 20:48:38 +08:00
6fbe3b0794
fix(web): active lib highlight, rail a11y names, card focus ring, AA accent + destructive tokens, touch-reachable menu, brand wordmark, chrome unify
XingfenD
2026-09-08 20:37:20 +08:00
7e0847815d
docs(changelog): phase-1 modern redesign — shadcn tokens, dual theme, app shell, rebuilt public surfaces
XingfenD
2026-09-08 19:37:38 +08:00
7727baa25b
fix(web): theme menu items fire on keyboard select (onSelect)
XingfenD
2026-09-08 19:19:45 +08:00
dcaf502de6
feat(ui): admin pages on shadcn table/card/alert-dialog; drop TopBar, trim icons/ui.ts to reader-compat surface
XingfenD
2026-09-08 19:14:41 +08:00
273f35a42f
fix(web): shelf search debounce merges against live searchParams (no lost sort/group clicks)
XingfenD
2026-09-08 19:08:05 +08:00
b1c0db6c03
feat(ui): shelf rebuilt — sticky toolbar (search/sort/group in URL), rail, menu cards, alert-dialog delete
XingfenD
2026-09-08 18:58:16 +08:00
d9e9e95ece
feat(ui): login rebuilt on shadcn card/label/input, theme toggle available pre-auth
XingfenD
2026-09-08 17:47:17 +08:00
52e95a48d8
fix(ui): gate app sidebar to md+ and use onSelect for logout (keyboard path)
XingfenD
2026-09-08 17:41:29 +08:00
7957e5cee5
feat(ui): AppShell layout route — desktop rail, tablet icon rail, mobile tabs, theme toggle
XingfenD
2026-09-08 17:35:14 +08:00
913f3286bb
feat(lib): shelf sort/section pure helpers + formatSize extraction, table tests
XingfenD
2026-09-08 17:29:07 +08:00
03bc537308
feat(ui): semantic light/dark tokens, ThemeProvider with FOUC guard, token-restyle Toaster/Cover
XingfenD
2026-09-08 17:17:44 +08:00
87b7545a94
feat(ui): shadcn/radix toolchain — deps, @ alias, cn, generated primitives
XingfenD
2026-09-08 17:07:28 +08:00
ee676c2d2e
docs(plan): modern redesign phase-1 implementation plan — 8 tasks from toolchain to acceptance walkthrough
XingfenD
2026-09-08 17:02:02 +08:00
b8a5b3deb6
docs(design): phase-1 modern redesign spec — shadcn/radix foundation, dual theme, app shell, shelf/admin rebuild; readers deferred to phase 2
XingfenD
2026-09-08 16:49:46 +08:00
2721df8ea9
fix(web): upload toast always showed 0 files (live FileList read after input reset); snapshot before upload
XingfenD
2026-09-08 16:22:12 +08:00
e5dacc0a77
fix(cbz): clamp locked cur at chapter end, hide 连读 on flat packs, silent restore, tighten prefetch storage
XingfenD
2026-09-08 15:28:27 +08:00