XingfenD
5ba522753a
docs: README frontend gates (lint/e2e/analyze), bilingual
2026-09-16 11:21:35 +08:00
XingfenD
8f4c34c949
docs: bundle-review — align dependency sizes to source-level caliber, rewrite epubjs finding
2026-09-16 11:18:44 +08:00
XingfenD
0bf8129f6e
docs: bundle review findings (B4)
2026-09-16 11:06:58 +08:00
XingfenD
4ba55fcf2a
ci: e2e workflow (workflow_dispatch) + changelog (B3 done)
2026-09-16 10:53:23 +08:00
XingfenD
147339083b
chore(frontend): wire lint+format into check gate, changelog (B1 done)
2026-09-15 11:44:21 +08:00
XingfenD
24c5d42531
docs: frontend quality implementation plan (16 tasks, 4 batches)
2026-09-15 11:12:38 +08:00
XingfenD
42a39ceef8
docs: frontend engineering quality spec (subproject ④)
2026-09-15 10:59:43 +08:00
XingfenD
8305af9d5c
docs: changelog + README backend structure for batch C (Task 29)
...
CI / frontend (push) Canceled after 0s
CI / backend (push) Canceled after 0s
- CHANGELOG [Unreleased]: consolidated the duplicated Added/Changed/Fixed
groups left by earlier batches into one group each (no entry dropped);
added batch C entries — port-based restructure, media/upload domain
packages, sweep moved to scanner ticker (B16), router contract test,
portsfake unit-test layer. Upload-sweep wording no longer promises the
old 24h opportunistic request-path behaviour.
- README.md / README_zh.md: new 'Backend structure' section documenting
the port/fake layout (cmd/webui composition root, handlers as HTTP-only,
internal/ports + portsfake, media/upload/store/scanner/bookfile
responsibilities) and the two-tier testing approach (real PG+Redis
integration vs fake-injected unit, route table pinned by contract test)
Gate: gofmt clean, go vet clean, go test -p 1 all pass (0 skip),
scripts/smoke.sh ALL SMOKE TESTS PASSED against a live webui on :18080
2026-09-14 23:37:36 +08:00
XingfenD
f99f5a7878
docs: changelog for batch B (B1-B13 bug fixes); gofmt store.go
2026-09-14 19:46:16 +08:00
XingfenD
26111e73af
docs: changelog + README updates for batch A (migrations, CI, B14/B15/B17)
2026-09-14 19:38:16 +08:00
XingfenD
c9b32db592
docs(plan): backend hardening implementation plan — 29 tasks across 3 batches
2026-09-14 19:33:30 +08:00
XingfenD
942a9952ca
docs(spec): clarify batch attribution for B8/B9-2 (depend on batch-C packages)
2026-09-14 19:14:45 +08:00
XingfenD and CommandCodeBot
2cf842af9e
docs(spec): backend hardening design — migrations, 17 bug fixes, ports/internal restructure, CI
...
Co-authored-by: CommandCodeBot <noreply@commandcode.ai >
2026-09-14 16:55:44 +08:00
XingfenD
2e43cb2423
fix(web): stop CBZ reader snapping/bouncing at chapter end on mixed-orientation books
2026-09-08 22:42:05 +08:00
XingfenD
fd227c1f00
feat(web): table-style 库管理, admin entries under avatar 系统管理, shelf-view upload button
2026-09-08 21:45:03 +08:00
XingfenD
d2c852d6f0
feat(web): iconify reader chrome, move 连读/预读 into 更多 menu with slider
2026-09-08 21:29:01 +08:00
XingfenD
9c2b7e2074
feat(web): collapse reader toc/bookmark buttons into single 导航 toolbar button
2026-09-08 21:11:16 +08:00
XingfenD
48161ea1ff
feat(web): unify reader TOC and bookmarks into one left nav drawer with tabs
2026-09-08 21:08:42 +08:00
XingfenD
6fbe3b0794
fix(web): active lib highlight, rail a11y names, card focus ring, AA accent + destructive tokens, touch-reachable menu, brand wordmark, chrome unify
2026-09-08 20:37:20 +08:00
XingfenD
7e0847815d
docs(changelog): phase-1 modern redesign — shadcn tokens, dual theme, app shell, rebuilt public surfaces
2026-09-08 19:37:38 +08:00
XingfenD
ee676c2d2e
docs(plan): modern redesign phase-1 implementation plan — 8 tasks from toolchain to acceptance walkthrough
2026-09-08 17:02:02 +08:00
XingfenD
b8a5b3deb6
docs(design): phase-1 modern redesign spec — shadcn/radix foundation, dual theme, app shell, shelf/admin rebuild; readers deferred to phase 2
2026-09-08 16:49:46 +08:00
XingfenD
2721df8ea9
fix(web): upload toast always showed 0 files (live FileList read after input reset); snapshot before upload
2026-09-08 16:22:12 +08:00
XingfenD
f63b639f64
feat(cbz): chapter-scoped continuous reading — lock scroll at chapter end, screen paging, prefetch next N chapters; drop 连读/整页/适高 modes
2026-09-08 15:01:28 +08:00
XingfenD
bba82e5529
docs(plan): correct container names to podman compose underscores
2026-09-08 14:54:34 +08:00
XingfenD
37ddff89a5
docs(cbz): chapter-scoped reading implementation plan — 3 tasks, virt helpers TDD first
2026-09-08 14:51:03 +08:00
XingfenD
a39ddf7b57
docs: add cbz chapter-scoped reading design spec
2026-09-08 14:45:15 +08:00
XingfenD
ec3f2c587e
feat(reader): remove admin delete button from reader header; shelf card hover remains the only delete entry
2026-09-08 13:08:46 +08:00
XingfenD
a43b73dcef
fix(cbz): attach resize observer via callback ref + drop vh from scroll-mode geometry deps — fixes constant per-page gaps and refetch storm on mobile
2026-09-08 13:05:58 +08:00
XingfenD
32b9d3a136
feat(ui): content-first shelf redesign — responsive cover grid, hover overlays, format badges, skeletons, sticky blurred top bar, brand login, SVG icon set, animated toasts
2026-09-08 13:05:40 +08:00
XingfenD
40e9999e6a
chore(bookmarks): changelog + e2e verification (create/jump/patch/delete against live api, seek page serves real jpeg)
2026-09-08 12:32:36 +08:00
XingfenD
e117ad52d3
docs(bookmarks): implementation plan — 4 tasks, backend vertical slice first, shared useBookmarks panel wired into all readers
2026-09-08 00:59:46 +08:00
XingfenD
928e52c604
docs(bookmarks): design spec — per-user bookmarks table, REST CRUD with owner-scoped 404s, capture/seek reuse of progress locators, shared sidebar component
2026-09-08 00:40:00 +08:00
XingfenD
b8da9fd92e
feat(cbz): adapt reader to real archive structure — PageIndex skips macOS junk (__MACOSX/ and ._ AppleDouble were polluting pages with 163-byte blacks), pages endpoint derives chapters[{title,start}] from folder layout, imageless zip now lands state=error instead of an empty reader, CbzReader gains 目录 sidebar + prev/next chapter (TextReader pattern, rd-* classes); pagesidx cache key bumped for one-time invalidation; e2e on 311MB 調教開關:第二季.zip: 15048→7524 real pages, 52 chapters, all JPEGs
2026-09-08 00:22:13 +08:00
XingfenD
7d650107d2
feat(upload): resumable chunked upload protocol for large files — init(parts≤32MB)/status/complete endpoints with fingerprint-derived deterministic uploadId (same file resumes, no restart), sessions in BOOKS_DIR/.uploads with 24h sweep, frontend uploadBook auto-switches >16MB to 8MB parts (retry x3 in place, skip received); oversize single POST now reports honest 413 too_large instead of "multipart field 'file' required" (was MaxBytesReader abort mislabeled); UPLOAD_MAX_MB wired into both compose stacks (cap total, .env.example 2048), nginx body limit drops to 32m; testCfg limit 1MB, CJK/fullwidth-colon filename proven unaffected; e2e verified with 311MB real file (39 parts, sha1 match)
2026-09-07 23:56:40 +08:00
XingfenD
c6dfb92c76
fix(cbz): smooth scrollbar/slider dragging — rAF-coalesce scroll handler, idle-debounced prefetch, frame-batched height corrections, PageHeights.setEst converges unseen pages to the first measured page size, page slider seeks instantly while scrubbing (no per-notch smooth-animation restart); restore lost ### Fixed header in changelog
2026-09-07 23:13:04 +08:00
XingfenD
065fde5b56
feat(reader): immersive chrome + WeChat-Read/Mihon-style bottom sheets — tap-center toggles header/toolbar, progress & page sliders seek anywhere, WYSIWYG theme swatches, A± font size; CBZ gains 连读/整页/适高 modes, edge-tap & arrow-key paging, persisted mode (seekChapter helper + test)
2026-09-07 23:03:26 +08:00
XingfenD
7e63c21902
feat(reader): stop detecting 卷 in txt splitting (volume lines stay body text, volume-only books fall back to pseudo-sections); replace chapter dropdown with a 目录 sidebar overlay (active row highlighted + centered, click-away/pick to close)
2026-09-07 22:42:10 +08:00
XingfenD
7fb01ce335
feat(ui): warm library palette (zinc+emerald -> stone+amber) with hover/focus feedback; text reader gains paper/sepia/night themes + persisted font-size (lib/readerPrefs.ts), serif justified measure; PDF drops emoji icons for 首页/末页, CBZ pill page counter, EPUB centered spread, blur reader header with format badge, aria labels on login/search/chapter select
2026-09-07 22:37:47 +08:00
XingfenD
f47f2a6199
fix(reader): split large txt into chapters (章 as boundaries, 卷 as optgroup labels, pseudo-sections when unmarked) rendered one at a time so the browser stops freezing; decode via strict-UTF-8-then-GB18030 with UTF-16 BOM sniffing to kill mojibake; progress locator {ch,scrollFraction} with old global-fraction fallback
2026-09-07 22:21:29 +08:00
XingfenD
45eefd6741
feat(libs): create library by name only; root_path derived server-side as BOOKS_DIR/SafeName(name), validated at creation; drop root_path input from admin UI; align changelogs to bilingual template; trim AGENTS.md to rules not derivable from repo layout
2026-09-07 21:56:59 +08:00
XingfenD
ca64bc0d73
refactor(repo): conform structure to AGENTS.md (web->frontend, internal/api->cmd/webui/{api,handlers}, docs/README+CHANGELOGs, module .gitignores, drop stray library/ and committed debug bins)
2026-09-07 21:37:30 +08:00
XingfenD
6b3a4e5240
docs(plan): docker deploy conformance implementation plan (5 tasks); spec: smoke storage path item
2026-09-07 19:42:39 +08:00
XingfenD
e563c88913
docs(spec): docker deployment conformance redesign (dev/release compose, prepare.sh, shared volumes, storage path)
2026-09-07 19:36:34 +08:00
XingfenD
22ae1717f4
docs: tick completed plan checkboxes, mark spec as implemented
2026-09-07 17:27:24 +08:00
XingfenD
1adb596981
docs(plan): execution-time amendments log for plan2-frontend
2026-09-07 17:22:04 +08:00
XingfenD
e08f1dd5b9
docs(plan): PageHeights.range end-exclusive matches its tests
2026-09-07 16:02:53 +08:00
XingfenD
052b94bb6a
docs(plan): lazy import lands with first reader wiring (noUnusedLocals)
2026-09-07 15:49:44 +08:00
XingfenD
36a2014a8b
docs(plan): shelf scan button carries isAdmin guard (constraint governs)
2026-09-07 15:44:25 +08:00
XingfenD
b730b7acb4
docs(plan): frontend Plan 2 — shelf, four readers, admin, PWA, dockerized SPA
2026-09-07 15:14:58 +08:00