Commit Graph

  • 33cc41bacd fix: make the genre dedup migration collision-proof (0038) main MechaCat02 2026-07-14 19:12:52 +02:00
  • 08a9819d76 test: await async render in AddToCollectionModal collection-name assertion MechaCat02 2026-07-13 22:21:47 +02:00
  • 70a6598924 chore: harden docker-compose deployment (bind, memory limits, no-new-privileges) MechaCat02 2026-07-13 22:10:29 +02:00
  • e6aefaa804 test: pin AppError -> HTTP status mapping (incl 501 and 429 Retry-After) MechaCat02 2026-07-13 22:03:28 +02:00
  • 6354a7a8a3 fix: tighten SSRF interceptor residuals MechaCat02 2026-07-13 22:00:55 +02:00
  • 60d5a2efea docs: clarify that MAX_PAGES_PER_CHAPTER=0 relies on the body-size backstop MechaCat02 2026-07-13 21:56:19 +02:00
  • 90f2398e56 fix: send HSTS on HTTPS document responses MechaCat02 2026-07-13 21:52:54 +02:00
  • e960aae163 fix: enable browser SSRF interception by default (H1) MechaCat02 2026-07-13 21:51:05 +02:00
  • adce950049 fix: exponential idle backoff for the analysis worker MechaCat02 2026-07-13 21:49:01 +02:00
  • bde72e47f4 fix: batch and index the crawler_jobs retention reaper MechaCat02 2026-07-13 21:46:01 +02:00
  • cb757e7b69 fix: index the running/leased_until arm of the job-lease query MechaCat02 2026-07-13 21:43:33 +02:00
  • 042e7e9047 fix: fall back to the original when a thumbnail fails to decode MechaCat02 2026-07-13 21:41:28 +02:00
  • cc8ae2566f fix: reject a malformed reenqueue body instead of running the full scope MechaCat02 2026-07-13 21:37:16 +02:00
  • 4f085f228a fix: commit cover DB pointer before mutating the old blob MechaCat02 2026-07-13 21:33:57 +02:00
  • ac5641bcd3 fix: guard AddToCollectionModal against out-of-order load results MechaCat02 2026-07-13 21:31:26 +02:00
  • cd5358dc9b fix: stop reader key navigation leaking behind open overlays MechaCat02 2026-07-13 21:28:57 +02:00
  • c31830468c fix: enforce case-insensitive genre uniqueness MechaCat02 2026-07-13 21:25:46 +02:00
  • 75f4481bbd fix: invalidate stale page analysis when a re-crawl overwrites a page MechaCat02 2026-07-13 21:21:29 +02:00
  • 958d5bd713 fix: scheme-validate crawler source_url before rendering as a link MechaCat02 2026-07-13 21:16:08 +02:00
  • f2c9cfe162 test: cover the trusted_proxy X-Forwarded-For rate-limit gate MechaCat02 2026-07-13 21:13:37 +02:00
  • b5f7467c47 refactor: remove unused constant_time_eq and correct the token doc MechaCat02 2026-07-13 20:22:39 +02:00
  • 9148e23da8 fix: reap expired sessions with a periodic background sweep MechaCat02 2026-07-13 20:19:41 +02:00
  • f39307232c fix: force download for untyped (octet-stream) served blobs MechaCat02 2026-07-13 20:15:23 +02:00
  • 1b7b8a3038 fix: cap the multipart metadata part instead of buffering it unbounded MechaCat02 2026-07-13 20:10:05 +02:00
  • 253d46c7e5 fix: return NotFound when a storage key resolves to a directory MechaCat02 2026-07-13 19:59:51 +02:00
  • c570e0cc37 fix: escape LIKE wildcards in user-search ILIKE queries MechaCat02 2026-07-13 19:57:06 +02:00
  • 5784483a57 fix: add CSP and defense-in-depth security response headers MechaCat02 2026-07-13 19:27:27 +02:00
  • a44511983d fix: page through all chapters when the API omits total MechaCat02 2026-07-11 16:24:49 +02:00
  • f8e53809d5 chore: sync backend version to 0.128.3 (lockstep with frontend) MechaCat02 2026-07-11 15:26:12 +02:00
  • 0afd202164 fix: let AbortError propagate through the API client MechaCat02 2026-07-11 15:25:01 +02:00
  • ba3e5b481b fix: lock background scroll while a Modal or Sheet is open MechaCat02 2026-07-11 15:23:07 +02:00
  • 3b783c1d9b fix: upload retry reuses the created manga instead of duplicating it MechaCat02 2026-07-11 15:20:03 +02:00
  • a47b6895c2 feat: warn before leaving a form with unsaved changes MechaCat02 2026-07-11 15:16:40 +02:00
  • 3ca05dcb58 fix: paginate the bookmarks and collections lists with Load more MechaCat02 2026-07-11 15:12:03 +02:00
  • c308eb3eac fix: reader loads the full chapter list for prev/next and the dropdown MechaCat02 2026-07-11 15:02:44 +02:00
  • 69a9309c54 feat: honor OCR text and tag scope in search Chapters/Mangas views MechaCat02 2026-07-11 14:58:48 +02:00
  • 1ed1a134ea feat: bot API token management page MechaCat02 2026-07-11 14:55:24 +02:00
  • 32d0a7e13b feat: root error boundary and network-error normalisation MechaCat02 2026-07-11 14:47:41 +02:00
  • d779fa2b97 fix: confirm admin role toggle and keep the checkbox controlled MechaCat02 2026-07-11 14:44:47 +02:00
  • 755417730f feat: serve width-bounded thumbnail variants for image grids MechaCat02 2026-07-11 14:41:19 +02:00
  • 5b1ce581f3 perf: precompute mangas.sort_author for the author sort MechaCat02 2026-07-11 14:29:26 +02:00
  • c11df3182c perf: denormalize content-warning filter to manga_content_warnings MechaCat02 2026-07-11 14:24:31 +02:00
  • d749b56d58 docs: correct re-upload page-preservation semantics MechaCat02 2026-07-11 14:19:03 +02:00
  • c24e296f07 fix: interleave uploaded chapters by number in the chapter list MechaCat02 2026-07-11 14:17:18 +02:00
  • 9508fb8e86 fix: make bookmark add idempotent instead of 409 MechaCat02 2026-07-11 14:08:27 +02:00
  • ca55712622 refactor: remove dead partial-render guard in resync_manga MechaCat02 2026-07-11 14:04:44 +02:00
  • 4fe435cc76 fix: recover the auth rate limiter from a poisoned mutex MechaCat02 2026-07-11 14:02:54 +02:00
  • f5cb460aec fix: abandon dispatch when heartbeat loses the lease MechaCat02 2026-07-11 14:01:04 +02:00
  • f83d49b83e fix: exponential backoff for idle crawler workers MechaCat02 2026-07-11 13:58:39 +02:00
  • cef41ce76a fix: don't burn a job attempt when the browser is unavailable MechaCat02 2026-07-11 13:55:50 +02:00
  • 7570524e5b fix: stream cover uploads with a per-chunk size cap MechaCat02 2026-07-11 13:51:10 +02:00
  • 5b46eab73a fix: keep SSRF DNS resolver on http(s)-proxy crawler paths MechaCat02 2026-07-11 13:46:39 +02:00
  • 91d6a50dba fix: guard all browser subresources against SSRF and fail closed MechaCat02 2026-07-11 13:44:30 +02:00
  • 134ab54b34 fix: don't apply the SSRF DNS resolver to proxied/internal clients fabi 2026-07-10 22:20:25 +02:00
  • f879ce1866 fix: per-IP auth rate limiting instead of one global bucket MechaCat02 2026-07-08 07:07:06 +02:00
  • bf425cf8e6 fix: opt-in CDP re-validation of headless-browser navigations (SSRF) MechaCat02 2026-07-08 06:29:17 +02:00
  • ff4ca964f5 fix: reject private IPs after DNS resolution (SSRF/DNS-rebinding) MechaCat02 2026-07-07 21:52:30 +02:00
  • 61669aac3f fix: don't mark private-mode blobs as publicly cacheable MechaCat02 2026-07-07 21:39:20 +02:00
  • 795eb76f9a fix: document and wire the DB pool env vars into compose MechaCat02 2026-07-07 21:18:49 +02:00
  • ebf0b8289b fix: compute the /mangas total only on the first page MechaCat02 2026-07-07 21:14:15 +02:00
  • ce9a727c73 fix: enforce the analysis image cap while reading, not after MechaCat02 2026-07-07 21:10:29 +02:00
  • 46134c8760 fix: close Chromium tabs on crawler fetch error paths MechaCat02 2026-07-07 21:04:50 +02:00
  • b7d8faadf7 fix: size the DB pool and fail fast on saturation MechaCat02 2026-07-07 20:56:14 +02:00
  • b0500e8e48 fix: cache immutable blobs served from /files MechaCat02 2026-07-07 20:30:03 +02:00
  • 379224bee4 fix: lazy-load continuous-reader pages beyond an eager window MechaCat02 2026-07-07 20:28:41 +02:00
  • 1c955458d6 fix: run Argon2 password hashing on the blocking pool MechaCat02 2026-07-07 20:19:14 +02:00
  • 987d1ba235 feat: preload the whole current chapter in continuous mode MechaCat02 2026-07-07 19:47:48 +02:00
  • c69ff502f7 feat: preload the current chapter ahead of the reader MechaCat02 2026-07-07 19:39:50 +02:00
  • 51ea254dde fix: surface streamed load failures inline MechaCat02 2026-07-07 19:11:37 +02:00
  • fee68dd9ac feat: loading skeleton on the manga detail page MechaCat02 2026-07-07 07:30:49 +02:00
  • 3c8e264f48 feat: loading skeleton on the library page MechaCat02 2026-07-07 07:21:20 +02:00
  • 16cdec051a feat: loading skeletons on the bookmarks and collections pages MechaCat02 2026-07-07 07:18:43 +02:00
  • 5b51bcf056 feat: results skeleton on the search page MechaCat02 2026-07-07 07:14:43 +02:00
  • f1e66141f4 fix: add tags optimistically on the detail page MechaCat02 2026-07-06 22:05:23 +02:00
  • cee1e73f98 feat: grid skeletons on the author and collection detail pages MechaCat02 2026-07-06 22:01:53 +02:00
  • ec73c6e001 feat: reserve home shelf space while it loads (fixes CLS) MechaCat02 2026-07-06 21:53:03 +02:00
  • bd6ae86a85 feat: preload the reader from the detail CTA MechaCat02 2026-07-06 21:47:53 +02:00
  • 3622dcc02f fix: reserve detail cover box and async-decode list/shelf covers MechaCat02 2026-07-06 21:43:21 +02:00
  • 9cb2f152d3 fix: bookmark toggle is optimistic and no longer fails silently MechaCat02 2026-07-06 21:40:33 +02:00
  • 7c3c9cf699 feat: app-wide toast notifications MechaCat02 2026-07-06 21:36:34 +02:00
  • 0d9505ce9f fix: address skeleton/nav-progress review findings MechaCat02 2026-07-06 20:02:27 +02:00
  • 7bdbe3ce5b fix: define missing --font-md and --success-soft-bg tokens MechaCat02 2026-07-06 19:44:43 +02:00
  • 3364ea52c9 feat: async decode for manga cover images MechaCat02 2026-07-06 19:41:28 +02:00
  • def97d3087 feat: skeleton loading state on the home catalog MechaCat02 2026-07-06 19:40:28 +02:00
  • 09f12c8959 feat: global navigation progress bar MechaCat02 2026-07-06 19:38:14 +02:00
  • 34c1122e4e feat: add MangaGridSkeleton loading placeholder MechaCat02 2026-07-06 19:31:58 +02:00
  • 200ab1c0a0 feat: add Skeleton loading-placeholder primitive MechaCat02 2026-07-06 19:28:00 +02:00
  • ef8d226ba6 fix(detail): resync reaction toggle across manga navigation MechaCat02 2026-07-05 18:17:18 +02:00
  • 19db66a845 feat(home): add a "Recommended for you" shelf MechaCat02 2026-07-05 17:46:33 +02:00
  • d6a109df2d feat(recommendations): content-based "Recommended for you" endpoint MechaCat02 2026-07-05 17:42:05 +02:00
  • bb833c7e71 feat(detail): like/dislike buttons on the manga page MechaCat02 2026-07-05 17:20:24 +02:00
  • 258a536254 feat(reactions): per-user like/dislike on mangas MechaCat02 2026-07-05 16:53:59 +02:00
  • 9c4a93c058 fix(reader): harden swipe/long-press coexistence and next-chapter prefetch MechaCat02 2026-07-04 21:57:36 +02:00
  • bfaa166e0a fix(home): keep finished series off the Continue-reading shelf MechaCat02 2026-07-04 21:52:58 +02:00
  • 3824eaafb2 fix(history): count distinct new chapter numbers, authoritative on detail MechaCat02 2026-07-04 21:48:36 +02:00
  • f1349100d7 feat(reader): prefetch the next chapter's first pages near the end MechaCat02 2026-07-04 21:28:06 +02:00
  • 3f1a5e9c41 feat(reader): swipe left/right to turn pages in single mode MechaCat02 2026-07-04 21:23:34 +02:00
  • c212deb7b0 feat(reader): add a keyboard-shortcut help overlay MechaCat02 2026-07-04 21:18:47 +02:00
  • f5692ea109 feat(ui): show a tooltip with the full text on truncated titles MechaCat02 2026-07-04 21:08:14 +02:00
  • ad1689b818 feat(detail): link genre and tag chips to the filtered catalogue MechaCat02 2026-07-04 21:04:30 +02:00