Commit Graph

  • 01d18e7ba2 feat(detail): mark read chapters and count new ones on the manga page MechaCat02 2026-07-04 21:01:46 +02:00
  • 2267a83f6c feat(home): add a Continue-reading shelf with new-chapter badges MechaCat02 2026-07-04 20:57:08 +02:00
  • f318c3bf51 feat(history): report personal new-chapter count on read-progress list MechaCat02 2026-07-04 20:50:20 +02:00
  • cf8971faae fix(reader): render pages at a consistent width instead of thin stripes MechaCat02 2026-07-04 20:44:30 +02:00
  • 38146b4d03 chore(frontend): sync package-lock version to 0.94.0 MechaCat02 2026-07-04 19:45:05 +02:00
  • 8acc0e6cc2 feat(frontend): use the Mangalord monogram as the browser tab icon MechaCat02 2026-07-04 19:34:45 +02:00
  • 4e154434a1 fix(upload): stream chapter pages to storage instead of buffering the whole chapter MechaCat02 2026-07-03 21:33:47 +02:00
  • 141cd52f7e fix(frontend): percent-encode fileUrl key segments MechaCat02 2026-07-03 21:18:34 +02:00
  • 83a9ab40cd fix(crawler): reap dead jobs alongside done ones MechaCat02 2026-07-03 21:16:56 +02:00
  • a141d65db1 fix(analysis): cap decoded pixels on the vision backend too MechaCat02 2026-07-03 21:13:27 +02:00
  • 3a9e7ca2da fix(analysis): hold the OCR permit for the full blocking inference MechaCat02 2026-07-03 21:08:50 +02:00
  • 5dc93bfb84 fix(crawler): cap the number of page images per chapter MechaCat02 2026-07-03 21:05:28 +02:00
  • 592747f1e0 fix(crawler): budget image tail against actual sniff-prefix length MechaCat02 2026-07-03 20:57:29 +02:00
  • a0d63ac9fd fix(crawler): guard headless nav against internal SSRF targets on list/detail path MechaCat02 2026-07-03 20:54:45 +02:00
  • 35c02066fe refactor(clippy): fix the never-loop error and clear all lint warnings MechaCat02 2026-07-02 20:45:37 +02:00
  • ded77fe4ba test(e2e): kill cold-start flakiness with an /api/v1 fallback + one retry MechaCat02 2026-07-02 20:06:20 +02:00
  • 4d02b56b77 test(e2e): realign mocks + assertions with the current API and OCR-era UI MechaCat02 2026-07-01 20:11:23 +02:00
  • 0865659ab3 fix(auth): keep session on a wrong-current-password 401 MechaCat02 2026-07-01 20:11:07 +02:00
  • 5596e1920d fix(compose): wire ANALYSIS_OCR_MAX_DECODE_PIXELS into the backend service MechaCat02 2026-07-01 07:25:59 +02:00
  • 3cba9ecf95 feat(auth): support optional expiry for bot API tokens MechaCat02 2026-07-01 07:22:57 +02:00
  • ed18d95bb0 feat(crawler): guard Chromium chapter navigation against internal targets MechaCat02 2026-07-01 07:22:10 +02:00
  • 2ed42f7b9e feat(crawler): re-validate redirect hops to close SSRF via 3xx MechaCat02 2026-07-01 07:21:15 +02:00
  • cbbc626768 docs: correct ?text= OCR-search drift (no longer 501) MechaCat02 2026-07-01 07:19:38 +02:00
  • a3e53f303b test(chapters): lock open-contribution upload contract + document intent MechaCat02 2026-07-01 07:19:04 +02:00
  • 2af421893f fix(crawler): don't hold browser mutex across Chromium close() MechaCat02 2026-07-01 07:18:49 +02:00
  • 48f0439273 fix(crawler): evict idle hosts from the per-host rate-limiter map MechaCat02 2026-07-01 07:18:35 +02:00
  • de7aefef69 fix(auth): guard the login + change-password verify paths against oversized passwords MechaCat02 2026-07-01 07:18:19 +02:00
  • 3ba30f4ba9 fix(login): close ?next= control-char open-redirect + cover register MechaCat02 2026-07-01 07:18:01 +02:00
  • 4306d1c96a fix(frontend): strip hop-by-hop headers from proxied responses too MechaCat02 2026-07-01 07:17:32 +02:00
  • 886caaecfa fix(settings): bound manga_limit + the timeout knobs the finding named MechaCat02 2026-07-01 07:17:14 +02:00
  • de510cc19a fix(admin): make force-reanalyze audit transactional; document storage exception MechaCat02 2026-07-01 07:16:08 +02:00
  • 5b76e0cc37 fix(analysis): bound concurrent OCR inferences with a shared semaphore MechaCat02 2026-07-01 07:14:19 +02:00
  • 66ae4b221b fix(analysis): cap OCR decoded pixels to stop decompression-bomb OOM MechaCat02 2026-07-01 07:12:40 +02:00
  • 83c2899373 feat(analysis): add ocrs OCR backend and OCR-driven page text search MechaCat02 2026-06-30 19:52:43 +02:00
  • 4fb98e4a1e refactor(history): reuse IconButton; drop redundant emptyText overrides MechaCat02 2026-06-25 21:51:05 +02:00
  • 5130c9933e feat(profile): add a desktop Page-tags section MechaCat02 2026-06-25 20:31:07 +02:00
  • e9331747d0 feat(ui): present page-action editors as sheets on mobile MechaCat02 2026-06-25 20:21:10 +02:00
  • af6a07bd1f feat(nav): give admins a mobile entry point to the admin area MechaCat02 2026-06-25 20:13:10 +02:00
  • 5e8323d7fa feat(reader): surface brightness on desktop, not just the mobile sheet MechaCat02 2026-06-25 20:01:05 +02:00
  • 2715275065 feat(history): share one HistoryList across desktop and mobile MechaCat02 2026-06-25 08:05:51 +02:00
  • 198a1d46b0 refactor(ui): fold the 36px header/search buttons into IconButton MechaCat02 2026-06-25 19:46:54 +02:00
  • 3a36796768 refactor(ui): extract shared IconButton from duplicated .icon-btn copies MechaCat02 2026-06-25 19:37:08 +02:00
  • bd7c3fc28c refactor(catalog): derive desktop sort options from SORT_FIELD_LABELS MechaCat02 2026-06-25 19:22:45 +02:00
  • 4456deb146 fix(collections): make per-card remove buttons usable on touch MechaCat02 2026-06-25 20:08:16 +02:00
  • 94591dfda4 fix(manga): show force-resync result on mobile, not just desktop MechaCat02 2026-06-25 20:05:42 +02:00
  • 194adf1339 fix(ui): meet 44px touch-target floor on shared mobile primitives MechaCat02 2026-06-25 07:34:21 +02:00
  • dee53fa212 feat(mangas): per-field sort options + direction toggle on the catalog (0.88.0) MechaCat02 2026-06-25 07:15:51 +02:00
  • 93b7e451bf fix(jobs): per-lease generation token closes the ack-from-dead-lease race (0.87.26) MechaCat02 2026-06-24 20:05:55 +02:00
  • ae708a72d0 fix(config): derive BACKEND_CONSUMED from .env.example; scan src/ for undocumented env reads (0.87.25) MechaCat02 2026-06-24 19:28:00 +02:00
  • 579e6ade0f fix(cancellable): suppress non-Abort errors from superseded predecessors (0.87.24) MechaCat02 2026-06-24 07:11:01 +02:00
  • 4e14ed09ef test(frontend): extract CancellableLoader; pin debounce-race invariants in unit tests (0.87.23) MechaCat02 2026-06-23 21:03:12 +02:00
  • 2ee77bc867 test(vision): tighten spawn_blocking interval test against Burst-replay (0.87.22) MechaCat02 2026-06-23 20:52:42 +02:00
  • a62a5f155b test(analysis): assert Cancelled event is published; correct cron-test rationale (0.87.21) MechaCat02 2026-06-23 20:46:08 +02:00
  • e3e86843d6 fix(force-analyze): release running lease so worker drops stale-payload local (0.87.20) MechaCat02 2026-06-23 20:42:11 +02:00
  • 0f9254b054 test(authz): bearer-authed admin cannot edit/cover NULL-uploader mangas (0.87.19) MechaCat02 2026-06-23 20:36:50 +02:00
  • d6a4fd668c test(vision-manager): extract refresh_running_after_mem_check; assert log distinguishes fix from bug (0.87.18) MechaCat02 2026-06-23 20:17:47 +02:00
  • e3d16e49b7 fix(config): ANALYSIS_VISION_MODEL reader + compose RHS-interpolation test (0.87.17) MechaCat02 2026-06-23 20:05:17 +02:00
  • 54cbbfc440 test(frontend): pin abort-chain + signal pass-through contracts (0.87.16) MechaCat02 2026-06-23 19:22:48 +02:00
  • 27fc1a52f6 fix(vision-manager): symmetric ERR handling + smoke tests + analysis reload reclaim test (0.87.15) MechaCat02 2026-06-23 19:18:04 +02:00
  • 95de02f583 fix(analysis-vision): pin spawn_blocking dispatch + warn on undecodable fallback (0.87.14) MechaCat02 2026-06-23 19:07:02 +02:00
  • 651fb27522 fix(analysis): emit Cancelled event + assert lock-release after cancel (0.87.13) MechaCat02 2026-06-23 08:01:53 +02:00
  • 95b98eebf1 fix(compose): wire all documented backend env vars + regression test (0.87.12) MechaCat02 2026-06-23 07:25:57 +02:00
  • 34d6d570eb fix(analyze-dedup): migration pre-dedup, force-collision upgrade, gate test (0.87.11) MechaCat02 2026-06-23 07:22:20 +02:00
  • 93bb156fba fix(admin-security): close the bearer-cookie ride; require session for admin gate (0.87.10) MechaCat02 2026-06-22 22:28:16 +02:00
  • 747bdeda46 fix(frontend-admin): SSE/AbortController hygiene + signal-chain through proxy (0.87.9) MechaCat02 2026-06-22 21:52:33 +02:00
  • c0281f7e9b fix(vision-manager): disambiguate docker errors, fail-symmetrically on psql, stop wedged container (0.87.8) MechaCat02 2026-06-22 21:47:33 +02:00
  • 6444ddee29 fix(analysis): reclaim orphaned leases from analysis daemon startup too (0.87.7) MechaCat02 2026-06-22 21:44:14 +02:00
  • b9dd75684e fix(correctness): pagination tiebreakers, dedup race, duration gating (0.87.6) MechaCat02 2026-06-22 21:34:39 +02:00
  • 80f4819fad perf(analysis): run image decode/resize/encode on the blocking pool (0.87.5) MechaCat02 2026-06-22 21:23:34 +02:00
  • 660184a048 fix(daemons): race in-flight work against cancellation on shutdown (0.87.4) MechaCat02 2026-06-22 21:18:18 +02:00
  • ee9f5c1a4d fix(authz): require admin to edit/cover crawler-imported mangas (0.87.3) MechaCat02 2026-06-22 21:09:34 +02:00
  • dd25f073cd fix(admin-security): SSRF defence + CSRF fail-closed + analysis .no_proxy() (0.87.2) MechaCat02 2026-06-22 21:04:50 +02:00
  • b14ed02670 fix(infra): plug operational defaults — pg restart, proxy timeout, env template (0.87.1) MechaCat02 2026-06-22 20:23:56 +02:00
  • 9f7dfe4d4e fix(admin): keyboard-reachable audit payload toggle; drop dead step ternary MechaCat02 2026-06-19 11:55:48 +02:00
  • c6a6d1690d feat(admin): time-series trend charts on the metrics tabs (0.87.0) MechaCat02 2026-06-19 11:48:56 +02:00
  • 314fc8738b feat(admin): operational health checks page with editable thresholds MechaCat02 2026-06-19 11:38:18 +02:00
  • 31013cc893 feat(admin): audit-log viewer MechaCat02 2026-06-19 11:26:09 +02:00
  • dd300a150c feat(crawler): reconcile pass to enqueue mangas missing from the DB (0.85.0) MechaCat02 2026-06-16 21:50:54 +02:00
  • 35664bccc7 perf(admin): fix O(mangas x jobs) overview query that pinned Postgres (0.85.1) fabi 2026-06-17 17:05:40 +02:00
  • cde4aca98b feat(admin): overview dashboard sections + system temperature/load sensors (0.85.0) (#11) fabi 2026-06-16 18:46:28 +00:00
  • 8445f338f6 test(auth): deflake login rate-limit burst test under CPU load (#10) fabi 2026-06-16 18:04:53 +00:00
  • 32fcebd47a fix(vision-manager): LOW watermark must not idle-stop a running vision (#9) fabi 2026-06-16 16:57:49 +00:00
  • d85fba7056 feat(vision-manager): memory-pressure yield gate (+ retain analysis gate) (#8) fabi 2026-06-16 14:34:25 +00:00
  • cf62dae2c9 test(crawler): deflake sync serialization concurrency test (#7) fabi 2026-06-16 13:38:15 +00:00
  • d51ab2a049 feat(admin): observability — job history, live now-analyzing, durations & metrics (0.84.0) (#6) fabi 2026-06-16 12:21:13 +00:00
  • 790549636f feat(storage): admin storage-usage stats + per-manga/chapter sizes MechaCat02 2026-06-15 20:14:49 +02:00
  • 4b6c19979a fix(tests): add user_agent field to crawler_browser_smoke LaunchOptions fabi 2026-06-14 21:49:22 +02:00
  • 91d058c426 fix(crawler): send a realistic browser User-Agent (Cloudflare evasion) fabi 2026-06-14 21:41:00 +02:00
  • 4262efeff7 ci: build backend with system chromium for the arm64 crawler fabi 2026-06-14 20:17:47 +02:00
  • 39fcfc813a chore(ci): persist deployed SHA into .env after deploy fabi 2026-06-14 18:33:13 +02:00
  • ce6d96c5e1 fix(crawler): harden crash & shutdown job recovery MechaCat02 2026-06-14 16:59:46 +02:00
  • 54530d67ef fix(tests): query admin_audit by its real timestamp column 'at' fabi 2026-06-14 16:59:18 +02:00
  • d92acb17e7 fix(tests): stop DATABASE_URL env race flaking sqlx lib tests fabi 2026-06-14 16:15:38 +02:00
  • e6fcff5eea fix(tests): update api_admin_role AppState to post-0.80 fields fabi 2026-06-14 16:01:09 +02:00
  • f441425519 fix(analysis): harden readiness gate and vision-manager per self-review MechaCat02 2026-06-14 15:15:40 +02:00
  • 64a9dceb67 feat(ops): vision-manager sidecar to autoscale the llama.cpp container MechaCat02 2026-06-14 15:02:46 +02:00
  • b86aa80c87 feat(analysis): gate page leasing on a vision readiness probe MechaCat02 2026-06-14 14:57:48 +02:00
  • 2b7a11b480 feat(admin): runtime-editable crawler & analysis config in the dashboard MechaCat02 2026-06-14 13:32:20 +02:00
  • d3b827421f fix(analysis): guardrails against model repetition loops MechaCat02 2026-06-13 23:41:42 +02:00
  • 25aba3ac58 feat(analysis): position-aware OCR seam dedup for sliced pages MechaCat02 2026-06-13 23:17:55 +02:00