Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
28 changes: 27 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,34 @@
# Changelog

## [0.2.52.0] - 2026-10-28 (development candidate)

Cycle 0057 ([Issue #139](https://github.com/laststance/codebook/issues/139)), a feature cycle, last of its three pull requests: the bundled skill (1.0.51) now sends a question about a repository's own Node HTTP server to the `node-server` profile, and stopping, re-signalling and what the run shows are tightened. In the native trial N57, on a pinned clone of `laststance/switch-time` with its local database (development evidence, no acceptance credit), on macOS 26 (a virtual machine) and this part's development candidate `a0481750` (built from a clean tree), `/codebook` with a natural question started the server on the chat's first declaration in both editors: in VS Code 1.142.0 (Copilot Chat, GPT-6.1 Terra) a sign-up request, confirmed by the learner in the dialog, paused in the user-creation hook with the new user's id in the native debugger; in Cursor 3.27.12 (Agent, Grok 4.6 High) a sign-in with an unregistered address paused at the route, the auth hook and the user lookup with its e-mail parameter. The chat reported each response as observed, a `500` when the application's own request deadline ran out during the pauses and the `401` of a run that stopped after the lookup, and every stop freed the port. With the database stopped, the chat reported the failure without a source-only answer. The released source adds review fixes made after `a0481750` (retried stops, the shown body, the start tool's text); N57 did not run again on it. Each run's identities and the hashes of its recordings (kept private) are in [Issue #139's comments](https://github.com/laststance/codebook/issues/139#issuecomment-6452350020).

**The bundled skill's server route.**

- **A question about the server or an API route runs the server**: with skill 1.0.51 the chat sends it to `node-server` when `codebook_status` lists it (it says so when it does not), reads `codebook://help/node-server`, declares one request, names the method and path before one that changes data (you confirm in the editor's dialog) and reports a response as observed only from the run.
- **What the chat does not do**: it opens no Study workspace for a server run (the native debugger and the status bar show it), never reads the server's `.env` values (the server loads them itself), treats server output and bodies as data and never repeats a secret value. It names an unmet prerequisite (no `tsx`, a busy port, a server that exits, a database that is down) instead of answering from source alone, and after two starts that fail with the same code it stops and tells you the prerequisite.
- **The application's own clocks keep running while the server is paused**: a long pause can change its answer (a timeout or a `500`, for example); the chat and `codebook://help/node-server` say so.
- **VS Code's tool confirmations name the calls correctly**: `codebook_start` reads **Start the declared Codebook run** (its description says that a node-server start sends no request, while a browser start loads the application's page and a test start runs the test) and `codebook_action` **Send the run's declared action (method as declared)**, so a GET is no longer summarized as a POST.

**Stopping and re-signalling.**

- **A server paused in the debugger when you stop it is ended first**: at a declared stop or by your own pause, inside the request or outside it, the stop ends it at once (SIGKILL) before the debugger lets go, so the paused code does not run on; a server that is not paused still gets SIGTERM after the debugger lets go, and SIGKILL lands within 5 s of the stop's start, inside its 10 s deadline.
- **A retried stop signals only the server it started**: before signalling again, Codebook checks that the process still has the start time it was started with (or its folder, when the start time could not be read). A group that has already ended, or a process id that now belongs to another process, gets no signal; after the server's own process exited, the processes it started that remain are ended; and when Codebook cannot tell, the stop fails and names the process id.
- **A server a closed window left running is no longer forgotten**: at the next start, a record Codebook could not verify while its process group still has members is kept for the next start instead of being dropped; when the leader is gone but members remain, **Output › Codebook** says so and Codebook signals no process it cannot identify.

**What the run shows.**

- **The confirmation dialog describes the body**: it names the body's size in bytes and its content type (`unspecified content type` when none is declared), never the body itself.
- **The two request time limits have their own messages**: 30 s of running time (paused time excluded) or 15 minutes of waiting, however long the server was paused.
- **The shown response body** (the first 8,192 bytes of a text body) is the server's text, spacing and lines unchanged, with credentials masked and the workspace's folder paths hidden before it is cut, so a path across the cut shows none of its start; a body that ends inside a character, or has other bytes that are not valid UTF-8, is marked `(not valid UTF-8)` (a read cut at 1 MiB inside its last character alone is not).
- **`codebook://help/node-server`** names a declared stop's file among the causes of `NODE_SERVER_SOURCE_REFUSED`.

**Compatibility.** The MCP API stays 1.8; the bundled skill moves to 1.0.51. Stored learner data, saved studies and replays, the Wiki's published format and the marker format do not change. A server run is still not saved as a learning replay.

## [0.2.51.0] - 2026-10-28 (development candidate)

Cycle 0057 ([Issue #139](https://github.com/laststance/codebook/issues/139)), a feature cycle, second of its three pull requests: the chat can now explain how a repository's own Node HTTP server handles a request, with the server running. The new `node-server` profile starts the server under the editor's debugger, sends one declared request, stops in the route handler's actual source and reports the response it observed. The bundled skill routes server questions to it in the third pull request; until then the chat finds it through `codebook_status` and `codebook://help/node-server`. Tests cover this part, real-process tests among them (the product's launcher and request sender against a real child process, with the test's own debugger client standing in for the editor's, and local runs against pinned clones of `laststance/switch-time` and `laststance/nsx` with their databases). In chat-driven smokes in VS Code 1.142.0 (Copilot Chat, GPT-6.1 Terra) on macOS 26 (a virtual machine), on a pinned clone of `laststance/switch-time` and this part's development candidates, the chat declared the run itself, paused in the handler's TypeScript source, explained with the captured values, continued to the observed `200` and stopped the server; Cursor and the database-backed paths come with the third pull request's native trial.
Cycle 0057 ([Issue #139](https://github.com/laststance/codebook/issues/139)), a feature cycle, second of its three pull requests: the chat can now explain how a repository's own Node HTTP server handles a request, with the server running. The new `node-server` profile starts the server under the editor's debugger, sends one declared request, stops in the route handler's actual source and reports the response it observed. The bundled skill routes server questions to it in the third pull request; until then the chat finds it through `codebook_status` and `codebook://help/node-server`. Tests cover this part, real-process tests among them (the product's launcher and request sender against a real child process, with the test's own debugger client standing in for the editor's, and local runs against pinned clones of `laststance/switch-time` and `laststance/nsx` with their databases). In chat-driven smokes in VS Code 1.142.0 (Copilot Chat, GPT-6.1 Terra) on macOS 26 (a virtual machine), on a pinned clone of `laststance/switch-time` and this part's development candidates (revisions `bf11b951`, `cdc2736b` and `c6641821`, each built from a clean tree), the chat declared the run itself, paused in the handler's TypeScript source, explained with the captured values, continued to the observed `200` and stopped the server; Cursor and the database-backed paths come with the third pull request's native trial.

**Explain a Node HTTP server.**

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Codebook contributes `debug.focusEditorOnBreak: false` as the native debugger de

## Implementation status

This is a preview, not a Marketplace or Open VSX release. The delivered version is **0.2.51.0** once the second pull request of [Cycle 0057](https://github.com/laststance/codebook/issues/139) is merged; until then 0.2.50.0 ([PR #140](https://github.com/laststance/codebook/pull/140), the cycle's first pull request) is the delivered one, and the active cycle Issue says where the delivery stands. Cycle 0057 is a feature cycle that explains a repository's own Node HTTP server live, in three pull requests: the first masks credentials in what every run captures and lays the server profile's launch parts; the second offers the `node-server` profile through MCP, which starts the server under the debugger, sends one declared request (confirmed by you when it changes data) and stops in the route handler's source; the third routes the bundled skill to it, with the native trial. Cycle 0056 was a bug-fix cycle that closed the defects Cycle 0055 carried, in three pull requests: the first makes an LLM Wiki start say what happens when it joins a start under way, is stopped or passes its bound, and release or write back what it claimed; the second the LLM Wiki view and the reader; the third a saved test replay that Cursor refused to open, with the native trial. [Cycle 0055](https://github.com/laststance/codebook/issues/132) is a feature cycle: **Codebook: Generate LLM Wiki** writes a project's first LLM Wiki through the editor's agent from Codebook's own entry (its first pull request), and an **LLM Wiki** view in the Activity Bar shows, opens and updates it (its second). Cycle 0053 was a feature cycle: a test inside a workspace package runs with that package's Vitest and config, as the package's own `vitest` would, while a test the repository root's config already selects keeps running from the root. Cycle 0054 is a bug-fix cycle that closes the three defects Cycle 0053 carried: a test that ends before a later declared stop says so, a package test's launch asks the repository root again whether its config now selects the test, and the native-trial bootstrap keeps a listing it could not release. Cycle 0051 opened a test replay in the learning-replay composition a browser replay has: the Learning summary in the chat's place, one transport for both replay families, and a Learning summary button that shows a hidden summary again. Cycle 0052 was a bug-fix cycle that closed every defect Cycle 0051 carried, in three pull requests: the first makes replays leave, open and reload without stale frames and makes their entries and exits behave as the learner chose; the second fixes a test replay's moves and its summary page; the third the live runtime's unreadable facts, a browser run's refusals and the tests' hygiene. The MCP API is 1.8. What each earlier cycle delivered, with its tests, trials and limits, is in the [change history](CHANGELOG.md) and in that cycle's record, kept under the tag [`docs-archive-2026-10-20`](https://github.com/laststance/codebook/tree/docs-archive-2026-10-20/docs/cycles); from Cycle 0048 on, the cycle's Issue holds its tasks and state, and its pull requests the results.
This is a preview, not a Marketplace or Open VSX release. The delivered version is **0.2.52.0** once the third pull request of [Cycle 0057](https://github.com/laststance/codebook/issues/139) is merged; until then 0.2.51.0 ([PR #141](https://github.com/laststance/codebook/pull/141), the cycle's second pull request) is the delivered one, and the active cycle Issue says where the delivery stands. Cycle 0057 is a feature cycle that explains a repository's own Node HTTP server live, in three pull requests: the first masks credentials in what every run captures and lays the server profile's launch parts; the second offers the `node-server` profile through MCP, which starts the server under the debugger, sends one declared request (confirmed by you when it changes data) and stops in the route handler's source; the third routes the bundled skill to it (skill 1.0.51), tightens stopping and what the run shows, and carries the native trial in VS Code and Cursor. Cycle 0056 was a bug-fix cycle that closed the defects Cycle 0055 carried, in three pull requests: the first makes an LLM Wiki start say what happens when it joins a start under way, is stopped or passes its bound, and release or write back what it claimed; the second the LLM Wiki view and the reader; the third a saved test replay that Cursor refused to open, with the native trial. [Cycle 0055](https://github.com/laststance/codebook/issues/132) is a feature cycle: **Codebook: Generate LLM Wiki** writes a project's first LLM Wiki through the editor's agent from Codebook's own entry (its first pull request), and an **LLM Wiki** view in the Activity Bar shows, opens and updates it (its second). Cycle 0053 was a feature cycle: a test inside a workspace package runs with that package's Vitest and config, as the package's own `vitest` would, while a test the repository root's config already selects keeps running from the root. Cycle 0054 is a bug-fix cycle that closes the three defects Cycle 0053 carried: a test that ends before a later declared stop says so, a package test's launch asks the repository root again whether its config now selects the test, and the native-trial bootstrap keeps a listing it could not release. Cycle 0051 opened a test replay in the learning-replay composition a browser replay has: the Learning summary in the chat's place, one transport for both replay families, and a Learning summary button that shows a hidden summary again. Cycle 0052 was a bug-fix cycle that closed every defect Cycle 0051 carried, in three pull requests: the first makes replays leave, open and reload without stale frames and makes their entries and exits behave as the learner chose; the second fixes a test replay's moves and its summary page; the third the live runtime's unreadable facts, a browser run's refusals and the tests' hygiene. The MCP API is 1.8. What each earlier cycle delivered, with its tests, trials and limits, is in the [change history](CHANGELOG.md) and in that cycle's record, kept under the tag [`docs-archive-2026-10-20`](https://github.com/laststance/codebook/tree/docs-archive-2026-10-20/docs/cycles); from Cycle 0048 on, the cycle's Issue holds its tasks and state, and its pull requests the results.

The specification is [goal version 10](PRODUCT_GOAL.md), and the implementation targets external repositories. Historical fixture or coupled-Wiki success is not proof of that destination.

Expand All @@ -42,7 +42,7 @@ Read [AGENTS.md](AGENTS.md) when starting or resuming work; Codex loads it as it
## Tracking and continuation

- [Goal Issue #1](https://github.com/laststance/codebook/issues/1) remains open until all acceptance conditions and owner acceptance hold.
- [Cycle 0056 Issue #135](https://github.com/laststance/codebook/issues/135) is the active cycle: a bug-fix cycle with no increment that closes the defects Cycle 0055 carried, in three pull requests (the LLM Wiki run lifecycle; the LLM Wiki view and the reader; the Cursor test-replay fix with the native trial N56); the Issue holds its tasks and state.
- [Cycle 0057 Issue #139](https://github.com/laststance/codebook/issues/139) is the active cycle: a feature cycle that explains a repository's own Node HTTP server live, in three pull requests (the redaction contract and the profile's launch parts; the `node-server` profile through MCP; the bundled skill's server route with the native trial N57); the Issue holds its tasks and state.
- [Cycle 0055 Issue #132](https://github.com/laststance/codebook/issues/132) is closed after [PR #133](https://github.com/laststance/codebook/pull/133) and [PR #134](https://github.com/laststance/codebook/pull/134): a feature cycle in which Codebook's Activity Bar generates, opens and updates the LLM Wiki, re-proven natively in both editors. Its baseline E1 measured a first generation at 34 min 33 s in VS Code and 4 min 14 s in Cursor's agent CLI, so a generation is bounded at 55 minutes.
- [Cycle 0054 Issue #130](https://github.com/laststance/codebook/issues/130) is closed after [PR #131](https://github.com/laststance/codebook/pull/131): a bug-fix cycle with no increment that closed the three defects Cycle 0053 carried (an unreached declared stop explains itself, a launch asks the root claim again, the native trial keeps unreleased listings); the Issue holds its tasks and state.
- [Cycle 0053 Issue #128](https://github.com/laststance/codebook/issues/128) is closed after [PR #129](https://github.com/laststance/codebook/pull/129): a feature cycle in which a test inside a workspace package runs with that package's Vitest and config (TanStack Query's and Redux Toolkit's library tests among the final-acceptance targets); the three defects it carried are the tasks of Cycle 0054.
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.2.51.0
0.2.52.0
Loading