2026-04-03 - 2026-10-03
Overview
12 Releases published by 1 user
Published
v1.6.0
Published
v1.5.1
Published
v1.5.0
Published
v1.4.3
Published
v1.4.2
Published
v1.4.1
Published
v1.4.0
Published
v1.3.0
Published
v1.2.1
Published
v1.2.0
Published
v1.1.0
Published
v0.1.2
72 Pull requests merged by 1 user
Merged
#177 Cinder pass across /admin, the login gate, and the library's a11y floor
Merged
#176 fix: series removal sent its status line twice
Merged
#175 fix: pgtest left an anonymous volume behind on every run
Merged
#174 Spec #137: per-Series poll failure state, completion hint, and outbound owner notification
Merged
#163 Spec #136: Finished belongs to the Series — owner-owned poll gate, Lifecycle bucket dropped
Merged
#162 Skills: split plan-tickets out of implement-tickets
Merged
#156 Spec #135: owner data-correction actions — Latest Chapter, series_url, Cover, orphan removal
Merged
#148 Admin dashboard: pages, Lane observability, poll pass log, per-Series intervention (#134)
Merged
#133 docs: name the Stall and the Correction in CONTEXT.md
Merged
#128 docs: name the admin dashboard's domain terms in CONTEXT.md
Merged
#126 Add a gitea skill; point AGENTS.md at it
Merged
#113 docs: make every AGENTS.md cite code, not docs or issues
Merged
#112 fix: give covers their own 10 MiB byte cap (#71)
Merged
#111 chore: remove graphify
Merged
#110 fix: an asleep browser Lane is not a stalled one on the admin page
Merged
#109 fix: don't read Cloudflare's injected jsd script as a refusal
Merged
#108 Sightings: a Reader report defers a Poll of a solitary Series (#103)
Merged
#107 Owner-only admin page: Reader roster plus Poll Lane status (#102)
Merged
#106 feat: one Poll Lane per Site, replacing the shared pace (#100)
Merged
#105 Poll comix.to through the browser sidecar (#98)
Merged
#104 docs: add Poll Lane and Sighting to the shared vocabulary
Merged
#99 docs: correct the bot-score claims behind the browser poller
Merged
#97 chore: drop asuracomic.net from the userscript, CORS allowlist and docs
Merged
#95 feat: one registry entry per Site, one shared Series-page read
Merged
#93 Remove the client latest-chapter scan for lightnovelworld (#91)
Merged
#92 lightnovelworld Series identity is read from the chapter page (#80)
Merged
#84 chore: refresh graphify map and tidy AGENTS.md
Merged
#82 Implement a batch of tickets through per-ticket subagents
Merged
#81 Record the lightnovelworld series-identity decision (#77)
Merged
#76 Clear the stale Chrome singleton lock at browser boot
Merged
#75 Restore the novel script's lost module-scope constants (#74)
Merged
#73 Delete the kagane-specific cover path (#63)
Merged
#72 Browser-backed Sites join the Cover pipeline (#62)
Merged
#70 The Poll fills blank Covers for every Site and both Libraries
Merged
#69 Covers render in the userscript panel, from a public route (#60)
Merged
#68 A newly bookmarked Series acquires its Cover at creation (#59)
Merged
#67 feat(latest): extract per-site covers (#58)
Merged
#66 Add gated cover byte fetcher
Merged
#65 Move cover bytes to content-addressed filesystem storage
Merged
#64 Define Cover and record hosting its bytes (#47)
Merged
#53 Give the Tailscale ACL step a working policy file
Merged
#52 Move the browser off the VPS to its own unit (#46)
Merged
#51 Prefetch Kagane covers during latest polling
Merged
#50 Make browser sidecar on-demand (#44)
Merged
#49 Persist kagane covers in Postgres
Merged
#48 feat(latest): split browser poll cooldown
Merged
#37 Fix comix titles and covers, kagane volume chapters, and kagane cover rendering
Merged
#36 Open registration to guild members (#27)
Merged
#35 Offer the userscripts as a download for mobile Violentmonkey (#26)
Merged
#34 Cut production over (#26)
Merged
#33 Prove the import against a copy of the real library (#25)
Merged
#32 Per-Reader userscript credential with UI install and rotation (#24)
Merged
#31 feat(backend): Discord OAuth login with DB-backed sessions (#23)
Merged
#30 Give every Bookmark an owner (Reader table)
Merged
#29 Split Series from Bookmark, keeping the wire format flat (#21)
Merged
#28 Run on Postgres with today's schema
Merged
#16 docs: secure-coding rules for agents, and refresh stale AGENTS.md top-matter
Merged
#15 rebrand: MangaBM → BookmarkManager, add novel library support
Merged
#14 docs: split CLAUDE.md into per-directory guidance
Merged
#13 Add comix.to and kagane.to support
Merged
#12 Action key under the tabs, plus the brand mark
Merged
#11 Work the design critique down: chapter format, colour law, search, strip, a11y
Merged
#10 Rebuild both UIs on the Cinder design
Merged
#9 Widen the edge-tab tap target, split scroll from reposition
Merged
#8 Serve the userscript from the backend; card + loading fixes
Merged
#7 Leaner userscript: edge tab, card-click continue, test harness
Merged
#6 Stable Asura series IDs: strip rotating build hash
Merged
#5 Offline retry queue for userscript writes
Merged
#4 Archived and finished buckets, userscript nav chips
Merged
#3 Web UI: Updated tab, inline errors, mobile card fixes
Merged
#2 feat: server-side latest-chapter polling
Merged
#1 feat: password-gated web UI on the same backend
99 Issues closed from 1 user
Closed
#137 Spec: per-Series poll failure state, completion hint, and outbound owner notification
Closed
#173 The page explains every fault the message names
Closed
#172 The other three conditions the rule selects
Closed
#170 The completion hint reaches the owner, and decides nothing
Closed
#167 A failure names itself on the page
Closed
#166 Two new filters: failing, and the subset nothing stands behind
Closed
#171 Outbound owner notification, and the stall it exists for
Closed
#165 poll_failures: the row is the failure state
Closed
#169 The pass remembers when a Site called a work completed
Closed
#168 All six Sites' completed marker, read by their adapters
Closed
#164 A sixth outcome word: not_found splits out of errors
Closed
#136 Spec: Finished belongs to the Series - own the poll gate, drop the Reader Lifecycle bucket
Closed
#159 Finished joins the admin filter vocabulary; four hygiene predicates learn to exclude it
Closed
#161 Glossary and the stale Reader-count note catch up with the cutover
Closed
#160 Reader side: two Lifecycle buckets and a derived finished label on the flat Bookmark
Closed
#158 Owner Finish control on the Series detail page: confirm-gated finish, instant un-finish
Closed
#157 The cutover: finished becomes a Series fact, and the Lane's poll gate is rewritten with it
Closed
#135 Spec: owner data-correction actions - Latest Chapter, series_url, Cover, and orphan removal
Closed
#155 Orphan removal: one Series at a time, with the foreign key as the guard
Closed
#154 Cover byte reclamation: one guarded helper, file first, covers row last
Closed
#152 Latest Chapter provenance: one derived line naming the actor class
Closed
#153 A Forced Poll replaces the Cover; an ordinary pass still only fills a blank one
Closed
#151 Series URL repair, owner-typed and gated by the poller's own fetch gate
Closed
#150 Cover addresses derived from the bytes, and a store surface that replaces a Cover
Closed
#149 Latest Chapter correction: one numeric input, overwritten by the next machine write
Closed
#54 Admin-only per-Series cover refetch (blocked on admin dashboard)
Closed
#134 Spec: admin dashboard - pages, Lane observability, poll pass log, and per-Series intervention
Closed
#147 Pause and resume one Site's Lane, with a mandatory expiry
Closed
#146 Forced Poll: ask for one Series to be checked now
Closed
#143 Overview page: a verdict line, and a stats block where every figure is a door
Closed
#145 Lanes page reads the database, and the in-memory Lane state is deleted
Closed
#144 Per-Series detail page, keyed by the composite the rest of the system uses
Closed
#142 Series list page: eight hygiene filters, Site and Library narrowing, paging
Closed
#141 The poller records one pass row per exit, with a skip reason and outcome counts
Closed
#140 Cross-Series admin read model, with the privacy boundary in the projection
Closed
#139 Durable Lane state: poll_passes and poll_lanes, plus their store surface
Closed
#138 Split the admin surface into four bookmarkable pages with a nav row
Closed
#114 Map: a proper owner admin dashboard
Closed
#132 Notification outside the page: is the dashboard pull-only?
Closed
#131 Latest Chapter provenance: what records that the number moved
Closed
#130 Completion-marker hint: storage, presentation, and false-positive containment
Closed
#127 Per-Series Poll outcome state and the failing filter
Closed
#125 Orphan Series: is removal an owner action, and what happens to the Cover bytes
Closed
#129 Research: which Sites publish a machine-readable completion marker
Closed
#124 Series-level finished state, and the fate of the finished Lifecycle bucket
Closed
#122 Prototype: the Cinder admin surface
Closed
#121 Data-correction actions: Latest Chapter and series_url repair
Closed
#120 Per-Series cover refetch and the store's force path
Closed
#118 Hygiene filters for the Series view
Closed
#117 Poll history: persist it, or stay a live-now view
Closed
#119 Poller command seam: force-poll and pause-lane through the database
Closed
#116 Cross-Series read model and the privacy boundary
Closed
#115 Admin dashboard information architecture and route map
Closed
#123 Research: how far htmx and the existing filter.js carry a filterable Series list
Closed
#78 novelfull cover never appears in the userscript list after bookmarking
Closed
#71 Covers over maxBodyBytes (4 MiB) can never be filled by the Poll
Closed
#103 Sightings: a Reader report defers a Poll where being wrong hurts only them
Closed
#102 Owner-only admin page: Reader roster plus Poll Lane status
Closed
#101 Poll Lanes: one independent Poll stream per Site, replacing the shared pace
Closed
#100 Poll Lanes: one independent Poll stream per Site, replacing the shared pace
Closed
#98 comix.to now behind a Cloudflare JS challenge: poller gets 403, needs the browser sidecar
Closed
#96 Remove asuracomic.net: pin the userscript, CORS allowlist, fixtures and notes to asurascans.com
Closed
#94 One registry entry per Site, and one shared Series-page read for the Poll and the Acquisition
Closed
#55 Spec: the backend acquires, stores and serves every Series Cover (fixes #47)
Closed
#77 lightnovelworld: chapter slug != series slug, so poller 404s on renamed novels
Closed
#80 Spec: lightnovelworld Series identity is read from the chapter page, not derived from it (#77)
Closed
#91 Novel userscript's client-side latest-chapter scan is still scoped to the derived slug (lnw)
Closed
#88 Live canary: the lnw comment-thread marker still holds
Closed
#90 Stale lnw rows repair themselves on the next chapter visit
Closed
#87 Poll's lnw chapter scan: unscoped and comment-truncated
Closed
#89 lnw identity is read from the chapter page, not derived
Closed
#86 lnw scan fixture: real page text, better novel
Closed
#85 PROBE-DELETEME
Closed
#74 novel-bookmark.user.js: background latest-check throws ReferenceError, never runs
Closed
#63 Delete the kagane-specific cover path
Closed
#62 Browser-backed Sites join the Cover pipeline
Closed
#61 The Poll fills blank Covers for every Site and both Libraries
Closed
#60 Covers render in the userscript panel, from a public route
Closed
#59 A newly bookmarked Series acquires its Cover at creation
Closed
#47 Bug: comix.to cover still not fetched for the web and userscript so the web is using the placeholder cover image, kagane.to cover image showed up in web but not propperly shown in userscript
Closed
#58 Per-Site Cover extraction, fixture-backed
Closed
#38 Relocate the headless browser to the home machine, make it on-demand, and persist kagane covers
Closed
#46 Move the browser to the home machine over the tailnet and delete it from the VPS
Closed
#57 Cover byte fetcher gated by destination class
Closed
#56 Cover bytes move to a content-addressed filesystem store
Closed
#45 Prefetch kagane covers during the poll cycle
Closed
#44 Make the headless browser on-demand: spawn on connect, reap when idle
Closed
#43 Persist kagane covers so they survive restarts and a sleeping browser
Closed
#42 Split the latest-chapter poll cooldown so browser-backed sites rest longer
Closed
#18 Migrate to Postgres and a Reader-owned schema (Step 1: foundation, single Reader)
Closed
#19 Open registration to Discord guild members (Step 2: multi-Reader)
Closed
#27 Open registration to guild members
Closed
#26 Cut production over
Closed
#25 Prove the import against a copy of the real library
Closed
#24 Per-Reader userscript credential
Closed
#23 Log in with Discord
Closed
#22 Give every Bookmark an owner
Closed
#21 Split Series from Bookmark, keeping the wire format flat
Closed
#20 Run on Postgres with today's schema
103 Issues created by 1 user
Opened
#17 PopUp Blocked
Opened
#18 Migrate to Postgres and a Reader-owned schema (Step 1: foundation, single Reader)
Opened
#19 Open registration to Discord guild members (Step 2: multi-Reader)
Opened
#20 Run on Postgres with today's schema
Opened
#22 Give every Bookmark an owner
Opened
#23 Log in with Discord
Opened
#21 Split Series from Bookmark, keeping the wire format flat
Opened
#24 Per-Reader userscript credential
Opened
#25 Prove the import against a copy of the real library
Opened
#26 Cut production over
Opened
#27 Open registration to guild members
Opened
#38 Relocate the headless browser to the home machine, make it on-demand, and persist kagane covers
Opened
#42 Split the latest-chapter poll cooldown so browser-backed sites rest longer
Opened
#43 Persist kagane covers so they survive restarts and a sleeping browser
Opened
#44 Make the headless browser on-demand: spawn on connect, reap when idle
Opened
#45 Prefetch kagane covers during the poll cycle
Opened
#46 Move the browser to the home machine over the tailnet and delete it from the VPS
Opened
#47 Bug: comix.to cover still not fetched for the web and userscript so the web is using the placeholder cover image, kagane.to cover image showed up in web but not propperly shown in userscript
Opened
#54 Admin-only per-Series cover refetch (blocked on admin dashboard)
Opened
#55 Spec: the backend acquires, stores and serves every Series Cover (fixes #47)
Opened
#56 Cover bytes move to a content-addressed filesystem store
Opened
#57 Cover byte fetcher gated by destination class
Opened
#58 Per-Site Cover extraction, fixture-backed
Opened
#59 A newly bookmarked Series acquires its Cover at creation
Opened
#61 The Poll fills blank Covers for every Site and both Libraries
Opened
#60 Covers render in the userscript panel, from a public route
Opened
#62 Browser-backed Sites join the Cover pipeline
Opened
#63 Delete the kagane-specific cover path
Opened
#71 Covers over maxBodyBytes (4 MiB) can never be filled by the Poll
Opened
#74 novel-bookmark.user.js: background latest-check throws ReferenceError, never runs
Opened
#77 lightnovelworld: chapter slug != series slug, so poller 404s on renamed novels
Opened
#78 novelfull cover never appears in the userscript list after bookmarking
Opened
#79 lightnovelworld a-will-eternal: chapter list max (1317) disagrees with the Site's own newest-chapter indicators (1298)
Opened
#80 Spec: lightnovelworld Series identity is read from the chapter page, not derived from it (#77)
Opened
#85 PROBE-DELETEME
Opened
#86 lnw scan fixture: real page text, better novel
Opened
#87 Poll's lnw chapter scan: unscoped and comment-truncated
Opened
#89 lnw identity is read from the chapter page, not derived
Opened
#88 Live canary: the lnw comment-thread marker still holds
Opened
#90 Stale lnw rows repair themselves on the next chapter visit
Opened
#91 Novel userscript's client-side latest-chapter scan is still scoped to the derived slug (lnw)
Opened
#94 One registry entry per Site, and one shared Series-page read for the Poll and the Acquisition
Opened
#96 Remove asuracomic.net: pin the userscript, CORS allowlist, fixtures and notes to asurascans.com
Opened
#98 comix.to now behind a Cloudflare JS challenge: poller gets 403, needs the browser sidecar
Opened
#100 Poll Lanes: one independent Poll stream per Site, replacing the shared pace
Opened
#101 Poll Lanes: one independent Poll stream per Site, replacing the shared pace
Opened
#102 Owner-only admin page: Reader roster plus Poll Lane status
Opened
#103 Sightings: a Reader report defers a Poll where being wrong hurts only them
Opened
#114 Map: a proper owner admin dashboard
Opened
#115 Admin dashboard information architecture and route map
Opened
#116 Cross-Series read model and the privacy boundary
Opened
#118 Hygiene filters for the Series view
Opened
#117 Poll history: persist it, or stay a live-now view
Opened
#120 Per-Series cover refetch and the store's force path
Opened
#119 Poller command seam: force-poll and pause-lane through the database
Opened
#121 Data-correction actions: Latest Chapter and series_url repair
Opened
#122 Prototype: the Cinder admin surface
Opened
#123 Research: how far htmx and the existing filter.js carry a filterable Series list
Opened
#124 Series-level finished state, and the fate of the finished Lifecycle bucket
Opened
#125 Orphan Series: is removal an owner action, and what happens to the Cover bytes
Opened
#127 Per-Series Poll outcome state and the failing filter
Opened
#129 Research: which Sites publish a machine-readable completion marker
Opened
#130 Completion-marker hint: storage, presentation, and false-positive containment
Opened
#131 Latest Chapter provenance: what records that the number moved
Opened
#132 Notification outside the page: is the dashboard pull-only?
Opened
#134 Spec: admin dashboard - pages, Lane observability, poll pass log, and per-Series intervention
Opened
#136 Spec: Finished belongs to the Series - own the poll gate, drop the Reader Lifecycle bucket
Opened
#135 Spec: owner data-correction actions - Latest Chapter, series_url, Cover, and orphan removal
Opened
#137 Spec: per-Series poll failure state, completion hint, and outbound owner notification
Opened
#138 Split the admin surface into four bookmarkable pages with a nav row
Opened
#140 Cross-Series admin read model, with the privacy boundary in the projection
Opened
#139 Durable Lane state: poll_passes and poll_lanes, plus their store surface
Opened
#141 The poller records one pass row per exit, with a skip reason and outcome counts
Opened
#143 Overview page: a verdict line, and a stats block where every figure is a door
Opened
#142 Series list page: eight hygiene filters, Site and Library narrowing, paging
Opened
#144 Per-Series detail page, keyed by the composite the rest of the system uses
Opened
#146 Forced Poll: ask for one Series to be checked now
Opened
#145 Lanes page reads the database, and the in-memory Lane state is deleted
Opened
#147 Pause and resume one Site's Lane, with a mandatory expiry
Opened
#149 Latest Chapter correction: one numeric input, overwritten by the next machine write
Opened
#150 Cover addresses derived from the bytes, and a store surface that replaces a Cover
Opened
#151 Series URL repair, owner-typed and gated by the poller's own fetch gate
Opened
#152 Latest Chapter provenance: one derived line naming the actor class
Opened
#153 A Forced Poll replaces the Cover; an ordinary pass still only fills a blank one
Opened
#154 Cover byte reclamation: one guarded helper, file first, covers row last
Opened
#155 Orphan removal: one Series at a time, with the foreign key as the guard
Opened
#157 The cutover: finished becomes a Series fact, and the Lane's poll gate is rewritten with it
Opened
#158 Owner Finish control on the Series detail page: confirm-gated finish, instant un-finish
Opened
#159 Finished joins the admin filter vocabulary; four hygiene predicates learn to exclude it
Opened
#160 Reader side: two Lifecycle buckets and a derived finished label on the flat Bookmark
Opened
#161 Glossary and the stale Reader-count note catch up with the cutover
Opened
#164 A sixth outcome word: not_found splits out of errors
Opened
#165 poll_failures: the row is the failure state
Opened
#166 Two new filters: failing, and the subset nothing stands behind
Opened
#167 A failure names itself on the page
Opened
#168 All six Sites' completed marker, read by their adapters
Opened
#169 The pass remembers when a Site called a work completed
Opened
#170 The completion hint reaches the owner, and decides nothing
Opened
#172 The other three conditions the rule selects
Opened
#171 Outbound owner notification, and the stall it exists for
Opened
#173 The page explains every fault the message names
Opened
#178 Discord webhook doesnt work
Opened
#179 Owner notices report four conditions; the ask is "any error event on the server"