Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
144 commits
Select commit Hold shift + click to select a range
94aa030
fix(test replay): a sentence-ending root is hidden, no casts, real pa…
ryota-murakami Oct 22, 2026
57a495e
test: API 1.8 title, gated reads and report-check waits, reveal count…
ryota-murakami Oct 22, 2026
ef184c9
fix(test run): a stop before the history or the first stop reads as s…
ryota-murakami Oct 22, 2026
24bed1e
fix(test replay): bounded Vitest version digits, a root Vitest linked…
ryota-murakami Oct 22, 2026
1cc746c
test(test replay): the poll read count is asserted at its boundary, d…
ryota-murakami Oct 22, 2026
3de0642
fix(hook): CRLF-tolerant sections, rule printed when a section is mis…
ryota-murakami Oct 22, 2026
7430235
fix(test replay): the root Vitest read failure is sanitized; ready, r…
ryota-murakami Oct 22, 2026
08a06aa
test(test replay): the missing or escaping Vitest program is refused;…
ryota-murakami Oct 22, 2026
ce7df10
fix(test run): the dirty-editor and Vitest program checks refuse in p…
ryota-murakami Oct 22, 2026
27b87f5
perf(test replay): one concurrent read per cited file; additional-sto…
ryota-murakami Oct 22, 2026
8952d2e
test(removal): wait for the reader's publish after the other study's …
ryota-murakami Oct 22, 2026
226cc9a
test(wiki update): wait for the marker change's answer and give the t…
ryota-murakami Oct 22, 2026
05ec3a1
test(wiki reader): time each crafted page as the shorter of two runs,…
ryota-murakami Oct 22, 2026
7fa975d
test(named pipes): bound only the act of the at-once tests by 10 s, n…
ryota-murakami Oct 22, 2026
8bf7188
test(wiki reader): the manifest's named-pipe test bounds only its rea…
ryota-murakami Oct 22, 2026
83b1e16
feat(skill): 1.0.47 claims saved learning only with an empty captureM…
ryota-murakami Oct 22, 2026
90ee892
docs(readme): Output how-to, recovery rows, node-test fields, capacit…
ryota-murakami Oct 22, 2026
1f129c1
fix(test run): full saved-study capacity makes node-test not ready an…
ryota-murakami Oct 22, 2026
faeefbb
merge: Cycle 0050 PR-1 group C (F28 F38 F60 F74 F80 F81 F84 F86 F94 F…
ryota-murakami Oct 22, 2026
38805a3
fix(test shards): one failed test reads “1 test failed” in a refused …
ryota-murakami Oct 22, 2026
a8c9f98
fix(test replay): the history store scans a growing recording by its …
ryota-murakami Oct 22, 2026
571d1bd
docs(agents): the owner's ship rule of 2026-10-23: after three unconv…
ryota-murakami Oct 22, 2026
92d66ba
fix(test run): sanitized and bounded causes, typed revision conflict,…
ryota-murakami Oct 22, 2026
9c3a4e0
fix(test replay): the Application pane's muted lines use the singular…
ryota-murakami Oct 22, 2026
18f4ab2
fix(test replay): the Study message no longer carries the unread lear…
ryota-murakami Oct 22, 2026
14dc905
test: value cards with protects, fails_when and no_claim on the exist…
ryota-murakami Oct 22, 2026
c96a238
fix(test replay): Save before the first stop does nothing, receipts f…
ryota-murakami Oct 22, 2026
e8b9205
test(test replay): citation refusals, catalog summary members, resour…
ryota-murakami Oct 22, 2026
0d74ba5
fix(test run): earlier-session replay refusal, release-failed run off…
ryota-murakami Oct 22, 2026
b16ced3
fix(test run): a transient seal failure is retried once after 200 ms …
ryota-murakami Oct 22, 2026
0913678
test(test run): refused-run reason and actions, material saved before…
ryota-murakami Oct 22, 2026
07f748a
fix(test replay): terminal control strings are removed across output …
ryota-murakami Oct 22, 2026
eab8a7f
test(test replay): the navigation fixture's Node history records one …
ryota-murakami Oct 22, 2026
0b82d7a
test(test replay): the pane's open-failure line is the sanitized caus…
ryota-murakami Oct 22, 2026
8e9f3ed
fix(test replay): the output index keeps lines as offsets and counts …
ryota-murakami Oct 22, 2026
aff00c8
fix(test replay): learner strings say test replay: the refused move, …
ryota-murakami Oct 22, 2026
7cf60e5
fix(test run): late continuation keeps a failed phase, history pages …
ryota-murakami Oct 22, 2026
8b1c542
fix(test replay): a browser recording that loads retires the selected…
ryota-murakami Oct 22, 2026
8fa356a
fix(test replay): the opening marker belongs to the replay being open…
ryota-murakami Oct 22, 2026
c792f75
fix(test replay): a legacy history sealed with no entry takes no plac…
ryota-murakami Oct 22, 2026
65d8a58
fix(test replay): two quick Next or Previous presses add up while the…
ryota-murakami Oct 22, 2026
b047a76
fix(test run): a declared stop bound at another column of its line is…
ryota-murakami Oct 22, 2026
88e91f0
fix(test replay): the Study section shows why an interrupted or parti…
ryota-murakami Oct 22, 2026
d23456d
fix(test run): the citation-position refusal names the stop, anchor, …
ryota-murakami Oct 22, 2026
8f57cf3
merge: Cycle 0050 PR-1 group A2 (F10 F11 F14 F15 F18 F22 F27 F29 F30 …
ryota-murakami Oct 22, 2026
da02a8a
fix(test replay): a rebuilt Application pane is placed by the Study a…
ryota-murakami Oct 22, 2026
2d427dc
fix(test replay): the host keeps the learner's reading per replay and…
ryota-murakami Oct 22, 2026
ebfb2f0
test(test replay): the waits for the partial notice's open and Output…
ryota-murakami Oct 22, 2026
e23b61d
ci(windows): the Windows job starts for the at-once helpers its named…
ryota-murakami Oct 22, 2026
37483f1
merge: Cycle 0050 PR-1 group B (F13 F16 F17 F19 F23 F24 F26 F37 F39 F…
ryota-murakami Oct 22, 2026
6d77f68
fix(test replay): the sequence wraps at word boundaries, clamped titl…
ryota-murakami Oct 22, 2026
191341a
merge: Cycle 0050 PR-1 group A1 (F9 F20 F21 F25 F32 F33 F36 F44 F48 F…
ryota-murakami Oct 22, 2026
691cd53
fix(causes): a root named by its realpath alias sorts by its short sp…
ryota-murakami Oct 22, 2026
47ef72d
test(removal): read the refused removal's line before the run that re…
ryota-murakami Oct 22, 2026
63c672c
docs(agents): the cycle rule names the ship review limit as its one e…
ryota-murakami Oct 22, 2026
4520f05
fix(test replay): Save on a run that ended before its first stop is a…
ryota-murakami Oct 22, 2026
11c0068
docs(readme): reword the Save-before-first-stop sentence (F228)
ryota-murakami Oct 22, 2026
896f281
fix(test replay): one summary read per history at a time, and a trans…
ryota-murakami Oct 22, 2026
37208cf
fix(test replay): a Save receipt returns to Save only for a greater s…
ryota-murakami Oct 22, 2026
c61be1d
merge: PR-1 review round 1, group A2 (F216 F217)
ryota-murakami Oct 22, 2026
161f738
test(test run): the passing preparation check asserts the member firs…
ryota-murakami Oct 22, 2026
2457eb5
fix(test run): the seal's transient codes derive from the file list (…
ryota-murakami Oct 22, 2026
f1d2cc1
fix(test run): the seal retry delay is injected, not a mutable field …
ryota-murakami Oct 22, 2026
f206505
fix(test run): a stop keeps an admission refusal (F222)
ryota-murakami Oct 22, 2026
b26d5b1
fix(test run): the declared column is tried first, the bound column s…
ryota-murakami Oct 22, 2026
1a124cb
test(wiki reader dom): compare the room's stills only once each has s…
ryota-murakami Oct 22, 2026
463d902
fix(test replay): Retry after a failed first debugger start restarts …
ryota-murakami Oct 22, 2026
0d90c22
merge: PR-1 review round 1, group B (F221 F225 F226 F228)
ryota-murakami Oct 22, 2026
68b4162
test(test replay): the untested cells of the replay's moves, opens, r…
ryota-murakami Oct 22, 2026
d381277
fix(test run): a failed release is stored and thrown sanitized (F218)
ryota-murakami Oct 22, 2026
e30802d
docs(readme): the test replay's user-visible changes of PR-2 group B;…
ryota-murakami Oct 22, 2026
f799758
test(study workspace): the reopened test replay's waits use a ten-sec…
ryota-murakami Oct 22, 2026
a751f57
test(wiki update): a second window acts only after the first window s…
ryota-murakami Oct 22, 2026
67d8e6b
fix(test run): causes of status, action, continue, the receipt, the a…
ryota-murakami Oct 23, 2026
37885d2
fix(test replay): only the newest seek commits when a presenting seek…
ryota-murakami Oct 23, 2026
07d0909
fix(test replay): closing the reader waits for its reader-position wr…
ryota-murakami Oct 23, 2026
5444158
fix(test run): a runtime's own and its evidence's failure show no pri…
ryota-murakami Oct 23, 2026
ec213b9
merge: PR-1 review round 1, group A1 (F218 F219 F220 F222 F223 F224 F…
ryota-murakami Oct 23, 2026
5511cf0
merge: Cycle 0050 PR-2 group P2A (F105 F106 F109 F114 F116 F120 F131 …
ryota-murakami Oct 23, 2026
005287a
merge: Cycle 0050 PR-2 group P2B (F110 F117 F118 F119 F121 F122 F123 …
ryota-murakami Oct 23, 2026
0bc9218
fix(test replay): the cells test reads the header line 1 without a ti…
ryota-murakami Oct 23, 2026
f7738f1
fix(study workspace): a recording load with no test replay selected a…
ryota-murakami Oct 23, 2026
d8790e5
test(study workspace): reopen the test replay through a new store onl…
ryota-murakami Oct 23, 2026
21f3a68
docs(agents): the bug-fix rule and the closing rule name the ship rev…
ryota-murakami Oct 23, 2026
125ad3c
fix(test replay): a failed first debugger start overtaken while its o…
ryota-murakami Oct 23, 2026
3beb381
test(test replay): the waits this PR added for the reader's results u…
ryota-murakami Oct 23, 2026
2c65f24
merge: PR-1 review round 2, group B (F237 F239)
ryota-murakami Oct 23, 2026
9d5c51b
test(study workspace): the reopen after a stopped historical debugger…
ryota-murakami Oct 23, 2026
46f1340
test(entry): observe the live entry's final arrangement from before t…
ryota-murakami Oct 23, 2026
5f71329
fix(test run): an article node with one citation is named as one sour…
ryota-murakami Oct 23, 2026
870b713
test(test run): start keys and study ids come from randomUUID, not li…
ryota-murakami Oct 23, 2026
a96ada1
fix(test run): MCP answers and test histories name no private path in…
ryota-murakami Oct 23, 2026
5c833cb
test(test run): a repository-browser run whose release failed offers …
ryota-murakami Oct 23, 2026
f7c6573
test(test run): every MCP answer path and a recording's broken-line r…
ryota-murakami Oct 23, 2026
0d336e5
fix(test run): a sealed history is removed only when its seal records…
ryota-murakami Oct 23, 2026
1350981
test(test run): the F256 test's start key comes from randomUUID, not …
ryota-murakami Oct 23, 2026
763bf0e
fix(test run): every MCP answer sanitizes domain errors too (F261); l…
ryota-murakami Oct 23, 2026
0ddd458
docs(readme): test replays: which runs offer read-history, kept and r…
ryota-murakami Oct 23, 2026
d10f77d
test(extension): the Save Learning Replay notice test's workspace sta…
ryota-murakami Oct 23, 2026
94aba4c
chore: bump version and changelog (v0.2.36.0)
ryota-murakami Oct 23, 2026
b187f71
Merge branch 'codex/cycle-0050-pr1-run-contracts-and-tests' into code…
ryota-murakami Oct 23, 2026
6328000
Merge remote-tracking branch 'origin/main' into codex/cycle-0050-pr2-…
ryota-murakami Oct 23, 2026
d38eb50
test(test replay): a render that settles while another replay opens i…
ryota-murakami Oct 23, 2026
9a456e6
test(study workspace): the reopen through a new history store names t…
ryota-murakami Oct 23, 2026
1135bbd
test(reader dom): the three DS20 follow cases read the host's reading…
ryota-murakami Oct 23, 2026
648e034
test(test replay): overtaken moves and an overtaken browser study are…
ryota-murakami Oct 23, 2026
72c5688
fix(test replay): a test history another live window records lists as…
ryota-murakami Oct 23, 2026
c41bc98
fix(test replay): the writer of a history another window records is j…
ryota-murakami Oct 23, 2026
74e7fca
Merge branch 'codex/c50-pr2-c' into codex/cycle-0050-pr2-application-…
ryota-murakami Oct 23, 2026
97e1a6f
test(test replay): an overtaken move is waited on through its own sel…
ryota-murakami Oct 23, 2026
8926e2d
test(test replay): waits for the reader's results use READER_RESULT_B…
ryota-murakami Oct 23, 2026
30c5f69
Merge branch 'codex/c50-pr2-d' into codex/cycle-0050-pr2-application-…
ryota-murakami Oct 23, 2026
6209ca5
fix(test replay): a withdrawn Play step commits nothing after a faile…
ryota-murakami Oct 23, 2026
beef25f
fix(test replay): strip stop source path, frame name, fact path and t…
ryota-murakami Oct 23, 2026
9bce411
fix(test replay): a clock stepped back no longer keeps a crashed writ…
ryota-murakami Oct 23, 2026
ef34cb1
fix(test replay): the slot label, tab title and debugger thread show …
ryota-murakami Oct 23, 2026
e6aa41a
fix(test replay): strip terminal controls in linear time on dense 8-b…
ryota-murakami Oct 23, 2026
e93600f
fix(test replay): count a surrogate pair split across output entries …
ryota-murakami Oct 23, 2026
3e25f2f
fix(study): Inspect hands its focus to the transport, sequence labels…
ryota-murakami Oct 23, 2026
873adb6
fix(test replay): keep the host's reading across queued output update…
ryota-murakami Oct 23, 2026
4c96c3b
test(test replay): waits of the moves, pane and browser files use REA…
ryota-murakami Oct 23, 2026
af1ee3d
test(test replay): Next stop after a Close or a browser recording tha…
ryota-murakami Oct 23, 2026
e6c1aeb
Merge branch 'codex/c50-pr2-e' into codex/cycle-0050-pr2-application-…
ryota-murakami Oct 23, 2026
bbb0bc5
Merge branch 'codex/c50-pr2-g' into codex/cycle-0050-pr2-application-…
ryota-murakami Oct 23, 2026
c7dd476
test(test replay): a refused Application view's re-post and another r…
ryota-murakami Oct 23, 2026
6805c9c
test(test replay): reader results are bounded by READER_RESULT_BOUND_…
ryota-murakami Oct 23, 2026
d966577
docs(changelog): 0.2.36.0 says which surfaces cut a long cause and th…
ryota-murakami Oct 23, 2026
230df80
refactor(test replay): the Application document's message handler che…
ryota-murakami Oct 23, 2026
da03157
refactor(study pane): the sticky bars share one observer, the test re…
ryota-murakami Oct 23, 2026
9466983
test(reader dom): the one-event fixture's stop is its first event (F3…
ryota-murakami Oct 23, 2026
ff9da7a
fix(study pane): Show recorded output gives a rebuilt Application pan…
ryota-murakami Oct 23, 2026
0a5fb7b
test(test replay): the 200,000-introducer case names its bound as F28…
ryota-murakami Oct 23, 2026
5d0f602
fix(test replay): /ship pre-landing review fixes: coverage tests F307…
ryota-murakami Oct 23, 2026
30739dc
docs(history store): fileSignals' example uses short times, which the…
ryota-murakami Oct 23, 2026
2bd0278
test(test replay): a replay's cited test file loses its controls and …
ryota-murakami Oct 23, 2026
04563b7
fix(test replay): /ship pre-landing review pass 2 fixes F321-F329, an…
ryota-murakami Oct 23, 2026
56dc1e4
fix(test replay): the capture reason's cut drops a lone high surrogat…
ryota-murakami Oct 23, 2026
f0ced4f
fix(test replay): /ship pre-landing review pass 3 fixes F334-F339: re…
ryota-murakami Oct 23, 2026
22c44df
fix(test replay): /ship Step 11 fixes F341, F343, F347, F348: the lea…
ryota-murakami Oct 23, 2026
1e7b7ce
docs(readme): the 0.2.37.0 behaviors in the packaged README: the row'…
ryota-murakami Oct 23, 2026
5820b1f
chore: bump version and changelog (v0.2.37.0)
ryota-murakami Oct 23, 2026
d631ffc
fix(test replay): CI and hosted CodeRabbit findings of #120 (F350 F35…
ryota-murakami Oct 23, 2026
d0ee451
docs(agents): the ship review limit is /ship's alone; CodeRabbit has …
ryota-murakami Oct 23, 2026
4c40bc3
docs: a sealed history of another window reads sealed; a Critical fin…
ryota-murakami Oct 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,15 +53,15 @@ The driving agent owns state, cycle selection and completion claims; GStack supp

**Background work.** `node extension/scripts/watch-background.mjs` (from the directory Claude Code started in, else with `--project <that directory>`) lists the current Claude Code session's background tasks and subagents (its `CLAUDE_CODE_SESSION_ID`), each with the time of its last output, and marks those silent for more than 20 minutes; a finished or stopped subagent is never marked, a shell's row stays marked after it ended (its task notification is the authority). Stop a review subagent that has written nothing for 20 minutes and dispatch it again on a narrower scope; dispatch a subagent that the API's safety filter stopped again at once, with the same brief, on the fallback model. While waiting longer than a few minutes, tell the owner what is awaited and since when.

**Ship review limit (owner, 2026-10-18; 2026-10-23).** The installed `/ship` runs at most three fixing cycles: no fourth cycle, no counter reset after a handoff, no round relabeled a repair. When the third cycle still leaves findings (`converged:false`), the owner's rule of 2026-10-23 applies, in a feature cycle and a bug-fix cycle alike: fix every finding of the last round, Minor and below included (so a Critical one is fixed before the merge in both, as the delivery rules above require); record only the Critical and Major defects still open in a GitHub Issue (the next cycle's tasks); then merge after required CI and the exact-HEAD gate, reporting `converged:false` in the PR. This overrides the no-carry rule for those recorded defects only.
**Ship review limit (owner, 2026-10-18; 2026-10-23).** The installed `/ship` runs at most three fixing cycles: no fourth cycle, no counter reset after a handoff, no round relabeled a repair. When the third cycle still leaves findings (`converged:false`), the owner's rule of 2026-10-23 applies, in a feature cycle and a bug-fix cycle alike: fix every finding of the last round, Minor and below included (so a Critical one is fixed before the merge in both, as the delivery rules above require); record only the Critical and Major defects still open in a GitHub Issue (the next cycle's tasks); then merge after required CI and the exact-HEAD gate, reporting `converged:false` in the PR. This overrides the no-carry rule for those recorded defects only. The limit is `/ship`'s alone (owner, 2026-10-23): one `/ship` round is long, and running it to full convergence would stall delivery. The defects it records are those of `/ship`'s review rounds that the pull request cannot close, such as a Major finding whose fix or proof needs a root cause still unknown or a native check. A Critical one never merges open: a Critical finding the pull request cannot close holds the merge until it is fixed, as the cycle rule and the delivery rules require. The local CodeRabbit CLI and the hosted CodeRabbit review have no round limit: their findings follow the cycle rule at every review, as do failures of the gate, CI and native checks.

**Skills.** Read each installed SKILL.md at invocation; this map guides and copies no workflow. Premise or final behavior: `/office-hours` or `/plan-ceo-review` (owner decision). Lasting API, MCP or integration change: `/plan-devex-review` (capability, error, lifecycle contract). Flow, layout, hierarchy, interaction: `/plan-design-review` (UX and state decisions). Architecture, concurrency, storage, meaningful code: `/plan-eng-review` after UX/API amendments (bounded implementation and test plan). Combined review on owner request: `/autoplan` (CEO → conditional Design → conditional DX → Eng). Unexplained failure: `/investigate` (root cause, new hypothesis). Working browser or webview flow: `/qa` or `/qa-only` (observed behavior, fixes). Implemented UI: `/design-review` (real visual and interaction evidence). Ready diff: `/review` (revision-bound findings, coverage limits). Releasable PR: `/ship` (actual commit, PR, checks). Merge or deploy: `/land-and-deploy` if available, else the established extension delivery. Changed public behavior: `/document-release`. Pause or handoff: `/context-save`, then `/context-restore`, reconciled with the repository and Issue. Ordinary coding is the agent's work; documentation-only changes need only the applicable reviews; a failed experiment may inform the next cycle before release. Browser QA, Reader DOM checks included, proves no native pixels, DAP targeting, MCP integration or installed VSIX behavior. Report a missing tool as missing coverage.

**Skills under the cycle rule** (each runs as installed). `/spec` plans a feature increment from PRODUCT_GOAL.md and the gap audit, or writes a bug-fix Issue from the previous closing comment: one task and acceptance criterion per carried defect, nothing ranked or selected. Plan reviews may change how a carried defect is fixed, never remove, merge away or defer one. In review steps (`/review`, `/ship`) a feature cycle answers non-critical findings Skip and applies no automatic fixes of informational findings; a bug-fix cycle answers none Skip. In `/ship`, the coverage audit's tests are committed; the plan completion audit counts an open bug-fix task NOT DONE and stops (no ship anyway, defer or drop); the TODOS step writes no TODOS.md; documentation-audit blockers are fixed before the commit. A test gap, deferral, non-blocking documentation debt or skill follow-up is carried in a feature cycle and fixed before the merge in a bug-fix cycle. A feature cycle's closing comment names every carried defect, and the bug-fix Issue comes before other work; a bug-fix cycle's states that nothing is carried, and `/spec` starts a feature cycle; when the ship review limit recorded defects, the closing comment names them and the next cycle is a bug-fix cycle.

**Invocation.** Pass the Issue, phase and bounded scope explicitly. PRODUCT_GOAL.md is the destination, not permission to build everything. Retired G08/G09 never return through an old prompt. Give design skills `## Design target` and the PNG. Honor scope gates without re-asking authorized routine choices or passing agent-chosen targets off as the user's; keep required reports; one approved recommendation authorizes no unrelated change. Shared-skill and Wiki-generation scope gets DX and engineering review; discovery, loaded identity, runtime connection and AI-owned results are separate checks; the Wiki works without runtime or debug MCP.

**CodeRabbit and OCR.** [.coderabbit.yaml](.coderabbit.yaml) holds policy and exclusions: keep its guidelines current, validate with `coderabbit config validate .coderabbit.yaml`, and with `--config` pass it beside the extra context. Required: the local CodeRabbit CLI, findings triage, CI and `open-code-review-delegate` (OCR picks files and rules, the host reviews; each eligible file reviewed or skipped with a reason; default exclusions reported apart; no independent external review). Review against the implementation base; record completion, source cut, covered files, findings. Hosted CodeRabbit findings fall under the cycle rule; if it did not run, report "not run", never APPROVED. Missing or private provider context is a coverage limit. Each user-visible behavior that a CHANGELOG entry names has a sentence in the packaged README (`extension/README.md`), as `.coderabbit.yaml`'s `CHANGELOG.md` instruction checks; a fix that changes a user-visible behavior changes that README in the same commit, and fixers' briefs say so. Claude Code CLI review stays owner-skipped and is no native chat acceptance.
**CodeRabbit and OCR.** [.coderabbit.yaml](.coderabbit.yaml) holds policy and exclusions: keep its guidelines current, validate with `coderabbit config validate .coderabbit.yaml`, and with `--config` pass it beside the extra context. Required: the local CodeRabbit CLI, findings triage, CI and `open-code-review-delegate` (OCR picks files and rules, the host reviews; each eligible file reviewed or skipped with a reason; default exclusions reported apart; no independent external review). Review against the implementation base; record completion, source cut, covered files, findings. The hosted CodeRabbit review is triggered on each pull request (owner, 2026-10-23): wait for it beside CI and fix its findings under the cycle rule at every review, with no round limit (the ship review limit is `/ship`'s alone); when a rate limit or a failed trigger keeps it from running, report it "not run", never APPROVED, and go on with the local review, which runs every cycle either way. Missing or private provider context is a coverage limit. Each user-visible behavior that a CHANGELOG entry names has a sentence in the packaged README (`extension/README.md`), as `.coderabbit.yaml`'s `CHANGELOG.md` instruction checks; a fix that changes a user-visible behavior changes that README in the same commit, and fixers' briefs say so. Claude Code CLI review stays owner-skipped and is no native chat acceptance.

**Status:** ready → planning → implementing → validating → closed, or blocked with its condition and unblocking action (say why work moves back). **Result:** pending, demonstrated, falsified, inconclusive. **Delivery:** not-applicable, local-only, committed, PR-open, merged, packaged, published, installed-verified. The three are independent.

Expand Down
31 changes: 30 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,34 @@
# Changelog

## [0.2.37.0] - 2026-10-23 (development candidate)

Cycle 0050's second pull request ([Issue #118](https://github.com/laststance/codebook/issues/118)): a test replay's Application pane and Study section. The recorded-source tab and the moves between moments come with the third.

**The Application pane of a test replay.**

- **Your place in the output is kept.** The choice to follow the latest output and the line you read are kept per replay by Codebook, not by the page, so a rebuilt pane, a Retry, a presentation change or a page VS Code reloads opens where you were, with **Jump to latest** when you were reading higher up. Scrolling up stops following and Jump to latest follows again, decided by the scroll position alone. While you read higher up, a later moment that drops the earliest kept lines leaves the line you read where it stood.
- **Show recorded output brings a closed pane back above the source.** It opens in a group of its own above the recorded-source tab's group, and no other pane moves; when your editor kept the emptied group (`workbench.editor.closeEmptyGroups` off), the pane returns into it.
- **Opening another test replay** leaves the replay you see as it is until the other one shows, and the loading line names the replay being opened. A view the page did not take is sent again.
- **Output reads as the test printed it.** Color sequences and terminal strings that the recording split across two pieces are removed whole, an unterminated one removes only itself, and a recording full of them is cleaned in time linear in its length. Lines with emoji count each emoji once, and the muted lines read `1 earlier character not shown` and `1 Node inspector line hidden` in the singular.
- **Faster in long recordings.** Moments in a burst are drawn once per frame, newest only, unchanged lines keep their place on the page, and the output is read once per opened replay.

**The Study section of a test replay.**

- **No hidden reordering.** Bidirectional and terminal controls are removed from every text the section, the Application header, Saved studies and the learning summary print: test titles and files, output and result lines, stop paths, frames and values, and the learning material's question, title, summary, participants and steps.
- **Why a capture is partial or interrupted** shows under the status, on one line in test replay words.
- **Inspect in native debugger beside Show Variables.** While the debugger shows the stop and its values are not loaded, the row says `Debugger stop selected`; once the debugger no longer shows the stop (you ended its session, or it could not start), **Inspect in native debugger** there starts it again. The button follows the selected stop, also while the event list shows another page.
- **Quick moves add up.** Two quick Next presses move two stops, and a move that fails, or that a Close, a reopen, Return to Live or a browser recording cuts off, gives its place back, so the next move starts from the moment shown.
- **Keyboard.** A long title is a tab stop that shows whole on focus, the Application pane's output region is a tab stop you can scroll by keyboard, a control that leaves during Play hands the focus to the transport, and a control you reach with Tab never hides under the sticky transport.
- **The sequence diagram** wraps names and labels at word boundaries, also Japanese and Chinese text, and scrolls by keyboard to its last participant.
- **Test replay words.** Saved studies rows read `Test replay · …`, and refusals say test replay where they said Node history: `Test replays cannot be deleted here yet.`, `There is no next stop in this test replay.`, `The replay debugger was stopped. Select this stop or use Inspect in native debugger to restart it.` (said by a seek or Play that reaches a stop after you stopped the debugger; Next stop, Previous stop or Inspect start it again).
- **A browser recording opened while a test replay is selected** retires the test replay, and the Application pane shows the recording's own pages.

**Another window of the same workspace.** A test history that another live window records is listed and opened as recording, not interrupted, and its journal is read only where it grew; once that window seals it, it reads with its sealed status, and if that window ends without sealing it, as in a crash, it reads interrupted. A writer record that could not be read for a moment is judged again a few seconds later.
Comment thread
coderabbitai[bot] marked this conversation as resolved.

**Compatibility.** The MCP API stays 1.8. A history being recorded now carries a small writer record in its folder, removed when it seals; earlier versions ignore it, and test histories, learning materials and reader positions open in both directions unchanged.

**Observed natively.** Show recorded output after closing the pane, in VS Code 1.142.0 and Cursor 3.26.16 on macOS: the pane returns alone above the source and nothing else moves. In VS Code, an output reached from a result read away from its end keeps following off and Jump to latest. Windows and Linux are not run.

## [0.2.36.0] - 2026-10-23 (development candidate)

Cycle 0050 is a bug-fix cycle ([Issue #118](https://github.com/laststance/codebook/issues/118)): it fixes the defects Cycle 0049 left, in three pull requests merged in order. This version holds the first: the test run's start, stops and refusals, saving and storing test replays, causes that name no private path, the bundled skill and the tests that failed under load. The Application pane and the Study section come with the second, the recorded-source tab and the moves between moments with the third.
Expand All @@ -23,7 +52,7 @@ Cycle 0050 is a bug-fix cycle ([Issue #118](https://github.com/laststance/codebo
- **A replay debugger that cannot start** (a declined workspace trust, the capture timeout) no longer fails the open: the replay opens on its moment, the Study pane says `The replay debugger could not start: <cause>. Select this stop or use Inspect in native debugger to restart it.`, and Retry starts it again. A debugger you stopped stays stopped when you move to an output or the result.
- **`codebook_playback` refuses a test replay** with `PLAYBACK_PROFILE_UNSUPPORTED`, also one of an earlier session that this window has not listed yet.

**Causes name no private path.** Every cause an agent or a learner reads (MCP answers and refusals, the run resource, `codebook_status`, Saved studies, the book catalog, notices, Output › Codebook) shows the extension's storage folder as `<storage>`, the opened repository as `<workspace>` and the home directory as `~`, also under their real paths. A long cause is cut between characters and ends with `… [cut]`; the run resource shows at most 300 characters of it.
**Causes name no private path.** Every cause an agent or a learner reads (MCP answers and refusals, the run resource, `codebook_status`, Saved studies, the book catalog, notices, Output › Codebook) shows the extension's storage folder as `<storage>`, the opened repository as `<workspace>` and the home directory as `~`, also under their real paths. A long cause that a tooltip, a notification, the run resource or an MCP message shows is cut between characters and ends with `… [cut]` (the run resource shows at most 300 characters of it); the Output › Codebook entry keeps the whole cause.

**The bundled skill (1.0.47).** In a new VS Code chat that runs in the Copilot harness, where Codebook's MCP tools are not reachable, the skill tells the learner to open a Local chat session, as **Codebook: Set Up AI Chat** says.

Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.2.36.0
0.2.37.0
Loading