Commit Graph
44 Commits
Author SHA1 Message Date
MaashkinoozheandClaude Opus 5.5 88555d4780 Document the measured first-scan speed on the server (BL-0043)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 20:07:30 +02:00
MaashkinoozheandClaude Opus 5.5 5e14e54286 Faster first library scan: bounded concurrency and a 32 KB first read
An uncached scan probed one image at a time and read 256 KB of each. On
a NAS that is bound by per-file latency (the server/Synology: ~20 ms per
image, ~100 min for 298k images). Now chapter folders of a book and
their images are probed SCAN_CONCURRENCY (default 8, 1-64) at a time
and assembled in folder order, and imageSize() reads 32 KB first, then
256 KB, then the whole file: a prefix gives either no size or the same
size, so results do not change. Tests: every format and read stage
equals the whole-file answer; concurrency 1 and 8 build the same index
and cache; the limiter keeps its bound and per-task errors. (BL-0043)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 20:07:29 +02:00
MaashkinoozheandClaude Opus 5.5 d6254a8be5 Admins can grant or revoke admin rights in Settings (BL-0045)
New POST /api/admin/user/role {name, admin}: admin-only (checked on the
server), keeps the password and sessions, takes effect on the target's
current session at once, logs who changed whom. Revoking your own
rights is refused, so at least one admin always remains. Settings ->
Users & access shows "Make admin" / "Remove admin" next to every other
user, with a confirmation. Test: normal users and anonymous callers are
refused, input checks, promotion and revocation apply immediately and
are saved.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 19:35:04 +02:00
MaashkinoozheandClaude Opus 5.5 f8f21ab42a Backup: probe the target with a real write instead of access(W_OK)
On the server the backup folder is a Synology NFS share with "map all
users to admin": access(W_OK) returns EACCES for uid 1000 although
writes succeed, so the first scheduled run failed with "not usable".
Create and remove a probe file instead; test that it leaves nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 18:12:41 +02:00
MaashkinoozheandClaude Opus 5.5 086f6353f8 Add built-in backup of the data folder (BL-0044)
The reader owns a scheduled backup into BACKUP (Compose: BACKUP_PATH mounted at
/backup, off when unset). A run pauses the scraper queue through its control
API, waits (bounded) until no job is active, writes a verified tar.gz of DATA
with db.json from memory and scraper/queue.json stored paused, excludes
runtime/lock/pid/temp files, resumes only a queue it paused, then applies
count- or day-based retention to its own archive names only. Schedule,
retention, "Back up now" and last result live in Settings > Service health.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 18:03:21 +02:00
Codex fcc50d576c Record main reading-hours settings release 2026-10-14 22:44:39 +02:00
Codex ddd9c62c40 Show read-only server reading hours in settings 2026-10-14 22:42:54 +02:00
Codex de8e7ed988 Record main reading limiter cutover 2026-10-14 22:24:20 +02:00
Codex e944a87b42 Allow reader-only release selection in Compose 2026-10-14 22:22:56 +02:00
Codex 77553bbece Style reading quiz feedback by result 2026-10-14 21:48:31 +02:00
Codex f607994a5d Reset stale reading challenges after navigation 2026-10-14 15:36:43 +02:00
Codex d8eba9169f Add deployment reading windows and progress-aware quiz unlock 2026-10-14 15:34:55 +02:00
Codex edbc9c6056 Handle large WeebCentral catalogs and correct MangaPill checkpoint monitoring 2026-10-14 14:01:05 +02:00
Codex 0d51f214d5 Test paused-source confirmation through reader UI 2026-10-14 09:44:01 +02:00
Codex b96ab42add Allow queued confirmation during source pause 2026-10-14 09:42:21 +02:00
Codex a22913129a Preserve per-source pacing across queue jobs and add source pause 2026-10-14 09:23:04 +02:00
Codex a08e847932 Add first-party MangaPill source and distinct volume releases 2026-10-14 09:05:34 +02:00
Codex a8df57f165 Recognize additional WeebCentral chapter labels and record source pilot 2026-10-13 23:58:33 +02:00
Codex 6d713e0a8c Keep source plugins in single scraper process 2026-10-13 22:42:20 +02:00
Codex 0fc1a7b52a Mark sparse MangaDex hosted catalogs as partial 2026-10-13 22:01:57 +02:00
Codex 47de081721 Checkpoint peering identity and opt-in discovery 2026-10-13 22:00:54 +02:00
Codex eba9b50e30 Record source pilot boundaries and upstream decision 2026-10-13 21:58:58 +02:00
Codex 1c61686c9b Checkpoint opt-in MangaDex parser worker 2026-10-13 21:57:59 +02:00
Codex 93f07e838e Fix pinned lookup for dual-stack HTTPS requests 2026-10-13 21:53:59 +02:00
Codex cc2fd05062 Document and package opt-in source worker 2026-10-13 21:52:22 +02:00
Codex f4123b32e4 Checkpoint guarded source request broker 2026-10-13 21:51:03 +02:00
Codex 6599d0a244 Validate first-party parser boundaries 2026-10-13 21:47:18 +02:00
Codex c5a92282a9 Checkpoint first-party source parser pilot 2026-10-13 21:45:27 +02:00
Codex 605fa5b9d8 Add per-user page tone modes to reader 2026-10-12 23:49:02 +02:00
Codex 26d6cd59fc Repair metadata title on queue retry 2026-10-11 09:09:37 +02:00
Codex a500ea7c3f Use inspected manga title for metadata lookup 2026-10-11 09:07:42 +02:00
Codex da40d73f02 Redesign admin peering settings and catalogs 2026-10-11 01:06:03 +02:00
Codex 492477f86a Add scoped peer access and reversible serving controls 2026-10-11 00:25:14 +02:00
Codex 6c994113c6 Plan Discovery Scout recommendation architecture 2026-10-09 19:23:19 +02:00
Codex d0275223a7 Expose Greatest source links and safe scraper inspection 2026-10-09 14:53:52 +02:00
Codex f493afcc18 Explain why each Greatest manga earned its place 2026-10-09 11:26:57 +02:00
Codex bedd0bc3b3 Show Greatest inclusion reasons on catalog tiles 2026-10-09 10:25:18 +02:00
Codex f713d0c0a9 Complete Greatest covers and use Japanese navigation label 2026-10-09 10:22:01 +02:00
Codex 5df94db9a3 Add Greatest of All Time manga dashboard 2026-10-09 10:10:34 +02:00
Codex c8dd46d0fb Avoid redundant full scan after warm restart 2026-10-08 21:58:28 +02:00
Codex 8ac27e1f3d Cache library index and refresh changed manga 2026-10-08 21:53:08 +02:00
Maashkinoozhe eef4ffa07c Consolidate MangaCircus app, scraper, and Compose baseline 2026-10-07 23:28:20 +02:00
Maashkinoozhe cfb2d79103 Rename the app from MangaParty to MangaCircus 2026-10-01 09:37:52 +02:00
Maashkinoozhe 8dd776b7f4 MangaParty: self-hosted manga/comic/webtoon reader
Zero-dependency Node server + plain HTML/JS frontend.

- Library is a folder tree (Manga/Book/Chapter/pages), indexed in place;
  page roles (cover, double, extra, rotation) are file name tags
- Accounts with per-user progress, reading settings, follows and
  new-chapter notifications (in-app + optional webhook)
- Reader with Flow, Page and Book modes, pointer-anchored page zoom,
  tap zones, auto-hiding controls, chapter picker, page preloading
- Multiple versions per chapter with community votes
- Docker image and compose file
- Demo library generator (tools/make-dummy.js)
- Docs: architecture, library format, import, scraper guide
2026-10-01 09:35:05 +02:00