This website requires JavaScript.
3a83161b1c
Cinder pass across /admin, the login gate, and the library's a11y floor (#177 )
main
v1.6.0
prod
sulthan
2026-08-27 23:09:42 +07:00
af07314bb6
Cinder pass across /admin, the login gate, and the library's a11y floor
vision-check
sulthan
2026-08-27 23:05:40 +07:00
cddd16bcdc
Merge pull request 'fix: series removal sent its status line twice' (#176 ) from fix/series-remove-double-writeheader into main
v1.5.1
sulthan
2026-08-23 14:02:45 +07:00
c1616b3162
fix: series removal sent its status line twice
sulthan
2026-08-23 14:02:27 +07:00
e1ba7fdabb
fix: pgtest left an anonymous volume behind on every run (#175 )
sulthan
2026-08-23 13:14:49 +07:00
2ac1f0c507
fix: BROWSER_WS_URL reaches the container again (#171 dropped the line)
v1.5.0
sulthan
2026-08-23 12:55:26 +07:00
e93e79c1bb
Spec #137 : per-Series poll failure state, completion hint, and outbound owner notification (#174 )
sulthan
2026-08-23 11:31:10 +07:00
e064a9ea09
Merge #173 : The page explains every fault the message names
spec-137
sulthan
2026-08-23 11:27:50 +07:00
8e6f4d2053
review: fix overviewView docstring to document fail-open fault reads
sulthan
2026-08-23 11:26:30 +07:00
820f57a7fa
#173 : page verdict shares FaultsFrom judgement so push and landing cannot disagree
sulthan
2026-08-23 11:24:09 +07:00
a7bbeb50e5
Merge #172 : The other three conditions the rule selects
sulthan
2026-08-23 02:49:07 +07:00
c655586202
#172 : clear the empty-Site suppression row only for sidecar-down
sulthan
2026-08-23 02:48:14 +07:00
b58945894d
#172 : floor sidecar-down's age at the window when no Lane ever reached the sidecar
sulthan
2026-08-23 02:47:21 +07:00
28fef689ec
#172 : three more owner-notice conditions: no-browser-route, sidecar-down, adapter-broken
sulthan
2026-08-23 02:44:45 +07:00
2861f055b4
Merge #170 : The completion hint reaches the owner, and decides nothing
sulthan
2026-08-23 00:53:29 +07:00
08ffd1f93c
Merge #167 : A failure names itself on the page
sulthan
2026-08-23 00:52:58 +07:00
f85908d3b4
web: a failure names itself on the page (issue #167 )
sulthan
2026-08-23 00:36:12 +07:00
a533e4f769
web: site-completed hint reaches the owner, decides nothing (#170 )
sulthan
2026-08-23 00:31:21 +07:00
3d746092ab
Merge #171 : Outbound owner notification, and the stall it exists for
sulthan
2026-08-23 00:12:03 +07:00
4bb26c6225
Merge #166 : Two new filters: failing, and the subset nothing stands behind
sulthan
2026-08-23 00:12:00 +07:00
6af8859c70
Review fixes: compose duplicate depends_on, .env.example splice, restore COVER_DIR test (#171 )
sulthan
2026-08-23 00:10:49 +07:00
7b22460f5e
Owner notices: the stall, one webhook path from env to Discord (#171 )
sulthan
2026-08-23 00:06:39 +07:00
a560fc76d3
Update stale Cutoff comments: the failing pair reads it too (#166 )
sulthan
2026-08-22 23:46:19 +07:00
8a56907558
Two new Series filters: failing, and the unverified Reader subset (#166 )
sulthan
2026-08-22 23:43:47 +07:00
5a32943528
Merge #169 : The pass remembers when a Site called a work completed
sulthan
2026-08-22 23:27:29 +07:00
4d6773692d
Merge #165 : poll_failures: the row is the failure state
sulthan
2026-08-22 23:26:40 +07:00
caabdff15b
Tidy blank line before RecordSeriesFailure (#165 )
sulthan
2026-08-22 23:25:26 +07:00
417f809d75
Record poll failures as rows: the row is the failure state (#165 )
sulthan
2026-08-22 23:22:57 +07:00
86da47850c
Address review nits on #169 : stamp name, migration comment (#169 )
sulthan
2026-08-22 23:18:45 +07:00
b517858619
Remember when a Site called a work completed (#169 )
sulthan
2026-08-22 23:15:46 +07:00
4708703044
Merge #168 : All six Sites' completed marker, read by their adapters
sulthan
2026-08-22 18:27:04 +07:00
7ef9f8c433
Merge #164 : A sixth outcome word: not_found splits out of errors
sulthan
2026-08-22 18:27:04 +07:00
b38dfe54e8
Record per-site probe provenance in completed fixtures (#168 )
sulthan
2026-08-22 18:26:34 +07:00
f6782e212a
Note comix key-encoding fidelity in fixture comments (#168 )
sulthan
2026-08-22 18:24:58 +07:00
e69e513be4
Add completed markers for all six sites (#168 )
sulthan
2026-08-22 18:23:42 +07:00
f4e4055a13
Review: drop duplicate 404 log, scope comment wording to 4xx (Spec #164 )
sulthan
2026-08-22 18:22:03 +07:00
62c2cea74e
Spec #164 : A sixth outcome word: not_found splits out of errors
sulthan
2026-08-22 18:19:23 +07:00
8e4fa6448e
Spec #136 : Finished belongs to the Series — owner-owned poll gate, Lifecycle bucket dropped (#163 )
sulthan
2026-08-22 17:31:52 +07:00
0081a6100c
Merge #159 : Finished joins the admin filter vocabulary
spec-136
sulthan
2026-08-22 17:28:05 +07:00
cdd2e1d72c
Fix stale comment counts found in review (#159 )
sulthan
2026-08-22 17:27:43 +07:00
0029cff27c
Add finished Series filter; clock-driven hygiene predicates exclude it (#159 )
sulthan
2026-08-22 17:25:10 +07:00
f85641da61
Merge #161 : Glossary and stale Reader-count note catch-up
sulthan
2026-08-22 17:14:23 +07:00
f66b63f6de
Merge #160 : Reader-facing finished label on the flat Bookmark
sulthan
2026-08-22 17:14:20 +07:00
0be578449b
Merge #158 : Owner Finish control on the Series detail page
sulthan
2026-08-22 17:14:18 +07:00
410509097a
Restore truncated overflow-page comment dropped by the finish diff (#158 )
sulthan
2026-08-22 17:13:33 +07:00
948ecae2cc
Owner Finish control on the Series detail page: confirm-gated finish, instant un-finish (#158 )
sulthan
2026-08-22 17:06:45 +07:00
ea7bb97112
Spec #136 : reader-facing finished label on the flat Bookmark (#160 )
sulthan
2026-08-22 17:05:09 +07:00
6fa9972bea
Docs: glossary and stale notes catch up with the finished-Series cutover (#161 )
sulthan
2026-08-22 17:03:02 +07:00
77e3f710ec
Spec #136 : finished becomes a Series fact, Lane gate rewritten on it (#157 )
sulthan
2026-08-22 13:02:09 +07:00
faa80c41ea
Skills: split plan-tickets out of implement-tickets (#162 )
sulthan
2026-08-22 16:43:42 +07:00
1f3ede8d6a
Skills: add plan-tickets, update implement-tickets and ticket-implementer
skills-plan-tickets
sulthan
2026-08-22 16:42:49 +07:00
4aaf1d4f91
Spec #135 : owner data-correction actions — Latest Chapter, series_url, Cover, orphan removal (#156 )
sulthan
2026-08-22 12:10:40 +07:00
f532e50516
Orphan removal: the database is the guard (#155 )
spec-135
sulthan
2026-08-22 09:58:11 +07:00
bc64a1d894
backend: remove orphan series from the admin (ticket #155 )
sulthan
2026-08-22 09:55:01 +07:00
ba2b6eebbb
Latest Chapter provenance: one derived line naming the actor class (#152 )
sulthan
2026-08-22 09:37:08 +07:00
f40894b108
Cover byte reclamation: one guarded helper, file first (#154 )
sulthan
2026-08-22 09:36:45 +07:00
a4ea80dcc2
Cover byte reclamation: one guarded helper, file first, covers row last (#154 )
sulthan
2026-08-22 09:34:02 +07:00
a4491babed
Latest Chapter provenance line naming the actor class (#152 )
sulthan
2026-08-22 09:32:25 +07:00
e1d61534bb
A Forced Poll replaces the Cover; an ordinary pass still only fills a blank one (#153 )
sulthan
2026-08-22 09:23:59 +07:00
ad09569f2e
Series URL repair, owner-typed and gated by the poller's own fetch gate (#151 )
sulthan
2026-08-22 09:23:59 +07:00
35a86f5eb9
Correct the three-outcome comment; keep doc comment attached to storeCover (#153 )
sulthan
2026-08-22 09:23:18 +07:00
424d2c6600
Series URL repair: owner-typed, gated by the poller's own fetch gate (#151 )
sulthan
2026-08-22 09:21:00 +07:00
7e1cbdde9e
Forced Poll replaces the Cover; ordinary pass still fills only a blank one (#153 )
sulthan
2026-08-22 09:19:15 +07:00
448631c78e
Cover addresses derived from the bytes; ReplaceSeriesCover (#150 )
sulthan
2026-08-22 09:08:37 +07:00
f3b2722568
Latest Chapter correction: one numeric input, owner-gated (#149 )
sulthan
2026-08-22 09:08:06 +07:00
b9fc83217d
#150 : address covers by bytes; ReplaceSeriesCover
sulthan
2026-08-22 09:05:53 +07:00
c9b1f2a334
Latest Chapter correction: one numeric input, owner-gated (#149 )
sulthan
2026-08-22 09:04:24 +07:00
889f0f3f38
Admin dashboard: pages, Lane observability, poll pass log, per-Series intervention (#134 ) (#148 )
sulthan
2026-08-22 08:27:19 +07:00
264839e798
Merge ticket/147-lane-pause
spec-134
sulthan
2026-08-22 01:19:51 +07:00
cbe0a28921
feat(web,latest): pause and resume one Site's Lane with a mandatory expiry (#147 )
sulthan
2026-08-22 01:15:57 +07:00
e45445cb20
Merge ticket/146-forced-poll
sulthan
2026-08-22 01:05:09 +07:00
4a95657425
Merge ticket/143-overview
sulthan
2026-08-22 01:03:33 +07:00
5b7adf5f2c
refactor(web): share poll-state derivation; keep zebra parity across a row swap (#146 )
sulthan
2026-08-22 01:02:55 +07:00
00fa237151
fix(web): verdict space per design mock, single door() fig builder (#143 )
sulthan
2026-08-22 00:56:49 +07:00
fe2cd12049
feat(web,store,latest): forced poll — Check now stamps a Series for the next Lane pass (#146 )
sulthan
2026-08-22 00:53:51 +07:00
c432a3be30
feat(web): overview page with verdict line and stats doors (#143 )
sulthan
2026-08-22 00:49:39 +07:00
6f9109c885
Merge ticket/145-lanes-from-db
sulthan
2026-08-22 00:35:34 +07:00
f5b52e48c8
Merge ticket/144-series-detail
sulthan
2026-08-22 00:34:14 +07:00
bf08d6e65c
Merge ticket/142-series-list
sulthan
2026-08-21 20:42:42 +07:00
d72c48295d
fix(web): statusline tokens, unreachable dot, reachability test spans (#145 )
sulthan
2026-08-21 20:41:45 +07:00
fc8a40cfc6
fix(latest,web): finish the atomic deletion and honest empty states (#145 )
sulthan
2026-08-21 20:31:50 +07:00
cb2b104e63
feat(web): read admin lanes from the durable pass log, not a poller snapshot (#145 )
sulthan
2026-08-21 20:25:38 +07:00
134c9307b1
#142 : fix stale filter count cutoff, tighten comments (review fixes)
sulthan
2026-08-21 19:48:24 +07:00
09a094ca67
fix(web): detail row lookup walks all pages of the Site read (#144 )
sulthan
2026-08-21 19:42:45 +07:00
e8a3c5f826
#142 : series list page with eight hygiene filters, site/library narrowing, paging
sulthan
2026-08-21 19:40:45 +07:00
14990bde21
feat(web): per-Series detail page keyed by site:series_id (#144 )
sulthan
2026-08-21 19:38:44 +07:00
503fb49d0a
feat(latest): record one poll pass per exit with skip reason and outcome counts
sulthan
2026-08-21 18:48:30 +07:00
e0b9063d9e
feat(store): cross-series admin read model with privacy in the projection (#140 )
sulthan
2026-08-21 18:20:59 +07:00
fd1131d11d
feat(store): persist poll lane state
sulthan
2026-08-21 17:17:50 +07:00
030ffdc26e
feat: split admin surface into bookmarkable pages (#138 )
sulthan
2026-08-21 16:54:54 +07:00
0a245a0dde
docs: name the Stall and the Correction in CONTEXT.md (#133 )
sulthan
2026-08-21 15:26:31 +07:00
f594a71d7c
docs: name the Stall and the Correction in CONTEXT.md
docs/context-stall-correction
sulthan
2026-08-21 15:23:12 +07:00
249f11e1fe
docs: name the admin dashboard's domain terms in CONTEXT.md (#128 )
sulthan
2026-08-19 19:00:25 +07:00
7b5534c1a5
docs: name the admin dashboard's domain terms in CONTEXT.md
docs/context-admin-terms
sulthan
2026-08-19 10:06:09 +07:00
f988e68256
prototype: address owner review round 1 (#122 )
prototype/admin-surface-122
sulthan
2026-08-18 10:20:24 +07:00
f32108fba9
prototype: Cinder admin surface variants A/B/C (#122 )
sulthan
2026-08-18 09:52:03 +07:00
f5d3fe58ec
Add a gitea skill; point AGENTS.md at it (#126 )
sulthan
2026-08-17 17:52:16 +07:00
2b96b43fd0
Add a gitea skill; point AGENTS.md at it
docs/gitea-skill
sulthan
2026-08-17 17:50:09 +07:00
766aa8f00d
docs: make every AGENTS.md cite code, not docs or issues (#113 )
sulthan
2026-08-17 13:43:49 +07:00
5d330c2ff4
docs: make every AGENTS.md cite code, not docs or issues
docs/agents-cite-code-only
sulthan
2026-08-17 13:39:28 +07:00