rebrand: MangaBM → BookmarkManager, add novel library support #15

Merged
sulthan merged 14 commits from feat/rebrand-novelSupport into main 2026-08-06 03:58:24 +07:00
Owner

Two intertwined changes — the rebrand and the novel library were developed on
the same branch because the novel UI plumbing is part of the new "Bookmark
Manager" wordmark in the web shell.

What it does

  • Rebrand: MangaBM → BookmarkManager across the Go module, compose stack,
    env vars, Traefik hostnames, container/image names, userscript storage
    prefixes (mangabm:cache → bmgr:manga:cache, mangabm:queue → bmgr:manga:queue),
    and docs.
  • Novel library: same backend, two libraries. New kind column splits
    bookmarks into manga / novel; PUT validates it. Two userscripts:
    • manga-bookmark.user.js — unchanged behaviour, just stamps its own kind.
    • novel-bookmark.user.js — separate Violentmonkey install with adapters
      for novelfull.com (polled via headless browser — Cloudflare JS
      challenge) and lightnovelworld.net (polled via plain TLS).
  • Web UI: library switch on the app shell. Login art, libswitch, and
    novel-site colours from the Cinder design snapshot.

Plumbing

  • addedColumns ALTER for kind runs on first start after upgrade; every
    pre-existing row is backfilled to 'manga'. No manual SQL, no down-time.
  • ALLOWED_ORIGINS gains the two novel sites.
  • New NOVEL_USERSCRIPT_PATH env (default /userscript/novel-bookmark.user.js),
    bindmounted alongside the manga script.
  • Traefik router names mangabm* → bmapi* / bmweb*.

Test status

  • go test ./... — green
  • node --test userscript/test/logic.test.js — 34 pass
  • node --test userscript/test/novel-logic.test.js — 11 pass
  • node --check on both userscripts — clean

Notes for the redeploy

.env keys were renamed (MANGA_API_HOST → BOOKMARK_API_HOST,
MANGA_WEB_HOST → BOOKMARK_WEB_HOST). Update DNS / Traefik labels on the
prod override before pulling, otherwise the public hostnames go dark.
See the redeploy instructions I'll post next to this PR.

Two intertwined changes — the rebrand and the novel library were developed on the same branch because the novel UI plumbing is part of the new "Bookmark Manager" wordmark in the web shell. ## What it does - **Rebrand**: MangaBM → BookmarkManager across the Go module, compose stack, env vars, Traefik hostnames, container/image names, userscript storage prefixes (`mangabm:cache` → `bmgr:manga:cache`, `mangabm:queue` → `bmgr:manga:queue`), and docs. - **Novel library**: same backend, two libraries. New `kind` column splits bookmarks into `manga` / `novel`; PUT validates it. Two userscripts: - `manga-bookmark.user.js` — unchanged behaviour, just stamps its own `kind`. - `novel-bookmark.user.js` — separate Violentmonkey install with adapters for **novelfull.com** (polled via headless browser — Cloudflare JS challenge) and **lightnovelworld.net** (polled via plain TLS). - **Web UI**: library switch on the app shell. Login art, libswitch, and novel-site colours from the Cinder design snapshot. ## Plumbing - `addedColumns` ALTER for `kind` runs on first start after upgrade; every pre-existing row is backfilled to `'manga'`. No manual SQL, no down-time. - `ALLOWED_ORIGINS` gains the two novel sites. - New `NOVEL_USERSCRIPT_PATH` env (default `/userscript/novel-bookmark.user.js`), bindmounted alongside the manga script. - Traefik router names `mangabm*` → `bmapi*` / `bmweb*`. ## Test status - `go test ./...` — green - `node --test userscript/test/logic.test.js` — 34 pass - `node --test userscript/test/novel-logic.test.js` — 11 pass - `node --check` on both userscripts — clean ## Notes for the redeploy .env keys were renamed (`MANGA_API_HOST` → `BOOKMARK_API_HOST`, `MANGA_WEB_HOST` → `BOOKMARK_WEB_HOST`). Update DNS / Traefik labels on the prod override before pulling, otherwise the public hostnames go dark. See the redeploy instructions I'll post next to this PR.
sulthan added 14 commits 2026-08-06 03:47:05 +07:00
sulthan merged commit 4229c179b0 into main 2026-08-06 03:58:24 +07:00
Sign in to join this conversation.