-
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