diff --git a/CHANGELOG.md b/CHANGELOG.md index 9738caa3..7aab4ee6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,30 @@ # Changelog +## [0.2.48.0] - 2026-10-27 (development candidate) + +Cycle 0056 ([Issue #135](https://github.com/laststance/codebook/issues/135)), a bug-fix cycle, second of its three pull requests: the LLM Wiki view and the browser reader say what is true in the states the cycle's tasks list. The Cursor test-replay fix and the native trial N56 follow in the third. + +**The reader.** + +- **A question waits with** `Asking the editor model… The editor may first ask you to allow Codebook to use it; answer there.` in both editors, since the editor may ask for consent before its model answers. + +**The LLM Wiki view.** + +- **The message above the tree changes in the same render as the rows**, so a row never shows beside the previous state's message. +- **A collapsed or hidden view does no background work**: no 30-second poll and no freshness check (not even one that was waiting when it was hidden), and one read as soon as it is shown again. +- **The 30-second poll goes on across an error row** that follows a run row, so the view finds the run's end after a failed read; a read failure that persists is written to Output › Codebook once (again after a good read, or for a different failure), and a freshness check that keeps failing is written there once too. +- **Reveal Wiki Folder says why it opened nothing**: + - a folder that does not exist yet (`… does not exist (yet). Generate LLM Wiki creates it.`); + - a file in the folder's place; + - a link whose target is missing; + - a path that cannot be read (with its error code, also when the disk does not answer within 3 seconds); + - a folder in a remote window (`Reveal Wiki Folder opens folders on this computer only; the Wiki folder is on . …`). + A WSL window reveals the folder like a local one. +- **View actions have decided names and icons**: inline actions in Title Case (**Stop Watching** with an eye-closed icon, **Try Again** with a restart icon, **Change Location**, **Open Chat**, **Open Folder**, **Show Output**, **Copy Recovery Request**); **Cancel** keeps the stop icon because it stops the agent. +- **The welcome names the default folder**: `The Wiki is written to .codebook/wiki unless the setting codebook.wikiOutputDirectory names another folder.` with the **Change location** link, and a click on the **Output** row opens the same setting. + +**Compatibility.** The MCP API stays 1.8; the Wiki's published format, the marker format, stored learner data and the bundled skill (1.0.50) do not change. + ## [0.2.47.0] - 2026-10-27 (development candidate) Cycle 0056 ([Issue #135](https://github.com/laststance/codebook/issues/135)), a bug-fix cycle, first of its three pull requests: the LLM Wiki run lifecycle says what happens on a joined, stopped or bounded start and releases what it claimed. The LLM Wiki view and the reader (second pull request) and the Cursor test-replay fix with the native trial N56 (third) follow. diff --git a/README.md b/README.md index ba3ee80b..aaedd996 100644 --- a/README.md +++ b/README.md @@ -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.47.0** once the first pull request of [Cycle 0056](https://github.com/laststance/codebook/issues/135) is merged; until then 0.2.46.0 ([PR #134](https://github.com/laststance/codebook/pull/134), Cycle 0055's second pull request) is the delivered one, and the active cycle Issue says where the delivery stands. Cycle 0056 is a bug-fix cycle that closes 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.48.0** once the second pull request of [Cycle 0056](https://github.com/laststance/codebook/issues/135) is merged; until then 0.2.47.0 ([PR #136](https://github.com/laststance/codebook/pull/136), the cycle's first pull request) is the delivered one, and the active cycle Issue says where the delivery stands. Cycle 0056 is a bug-fix cycle that closes 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. diff --git a/VERSION b/VERSION index 8c070137..8a3198e4 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.2.47.0 +0.2.48.0 diff --git a/extension/README.md b/extension/README.md index 7a5c835d..4345e1b0 100644 --- a/extension/README.md +++ b/extension/README.md @@ -184,6 +184,8 @@ To write the Wiki elsewhere, set the folder in your settings (a path inside the **Codebook: Open LLM Wiki in Browser** serves the generated site from a loopback reader in your browser. The reader answers only on this computer: a request whose Host is its own loopback address, or any loopback address the editor has forwarded it to (each stays accepted if the editor forwards it again). A window whose forward goes to another host (a tunnel, a browser-based editor) gets no page, only a 403 that says so. The reader removes the effect of a page's own `referrerpolicy` attributes and `` element, so a Wiki page cannot send the reader's private address to another site. **Update LLM Wiki** (the button in the right rail of that page, or **Codebook: Update LLM Wiki** in the Command Palette) asks the editor agent to regenerate the site. The button asks for confirmation in the editor first; in VS Code the confirmation says where the request goes: `Copilot Chat receives the update request for this project in a new chat; the chat you have open keeps its place in the chat list. If the Chat view has not been opened in this window yet, the request may go into the chat it restores. A draft you typed into an empty chat is replaced by the request; a draft in a chat with messages stays with that chat.` The command starts at once and asks nothing: its request goes into a new chat in the same way (into the chat the Chat view restores, if that view opens only now) and replaces a draft in an empty chat in the same way; the Chat view shows the chat with the request. When the watch ends and what to do after you refused a step of the chat are in the row **Updating LLM Wiki…** below. The page then shows the run and its result under the button without a reload; the site stays readable the whole time. +A question asked on the page waits with `Asking the editor model… The editor may first ask you to allow Codebook to use it; answer there.` in both editors, because the editor may ask for your consent before its model answers the first question; the page cannot know whether you gave it. + | The page says | What happened | What to do | | ------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Confirm the update in your editor | You pressed the button and the editor is asking whether to start. | Confirm in the editor. | @@ -243,17 +245,17 @@ For tools: `GET /api/update-status` answers the current state as JSON (` The **LLM Wiki** view in Codebook's Activity Bar shows where the generated site of the opened project stands and the next step; it sits below the **Repository Wiki** view, which lists repository articles, not the generated site. Its rows come and go with the facts they show, in a fixed order, and the tooltip of a row has its full text: - With no folder open the view says `Open a folder to use the LLM Wiki` with **Open Folder**; in a folder you have not trusted it says `Trust this folder to use the LLM Wiki` with **Manage Workspace Trust**. -- In a folder with no Wiki and no run the view shows a welcome with a **Generate LLM Wiki** button, what runs it in your editor (Copilot Chat in VS Code, `cursor-agent` in Cursor) and the output folder with a **Change location** link. +- In a folder with no Wiki and no run the view shows a welcome with a **Generate LLM Wiki** button, what runs it in your editor (Copilot Chat in VS Code, `cursor-agent` in Cursor) and the output folder with a **Change location** link (`The Wiki is written to .codebook/wiki unless the setting codebook.wikiOutputDirectory names another folder.`). A click on the **Output** row opens the same setting. - **` Wiki`** is the published Wiki. A click opens it in the browser. Its description is the freshness label of the reader page (`Wiki source current`, `Source changed · Update available`, `Wiki freshness unknown: …`, or `Checking freshness…` while the check runs), and its tooltip names the generation: `Generated from on `, `Generated on (no Git revision)` in a folder without Git, or `Generated from ` when the date cannot be read; when the Wiki records no Git revision, the tooltip also says in full that added files are not checked, which the description may cut off in a narrow sidebar. **Update LLM Wiki** is its action while no run shows. The row stays while a run works, so you can read the Wiki during an update. -- **`Generating…` or `Updating…`** is this window's run. In VS Code it reads `Waiting for the chat to start` and then `In chat · min of `, with the actions **Stop watching**, **Open Chat** (the chat that waits for an approval or never started is one click away) and **Show Output**; the message above the tree says that Stop watching does not stop the chat. In Cursor it reads `cursor-agent · min of ` with **Cancel** and **Show Output**. The description is read again every 30 seconds. If the start time cannot be read, the row shows no minutes (`In chat` or `cursor-agent`) rather than a wrong number. +- **`Generating…` or `Updating…`** is this window's run. In VS Code it reads `Waiting for the chat to start` and then `In chat · min of `, with the actions **Stop Watching** (an eye-closed icon), **Open Chat** (the chat that waits for an approval or never started is one click away) and **Show Output**; the message above the tree says that Stop watching does not stop the chat. A failed generation's row offers **Try Again** (a restart icon). Inline action names are in Title Case (**Stop Watching**, **Change Location**, **Open Chat**, **Open Folder**, **Show Output**, **Try Again**, **Copy Recovery Request**); **Cancel** keeps the stop icon because it stops the agent. In Cursor it reads `cursor-agent · min of ` with **Cancel** and **Show Output**. The description is read again every 30 seconds. If the start time cannot be read, the row shows no minutes (`In chat` or `cursor-agent`) rather than a wrong number. - **`Generating in another window`** or **`Updating in another window`** shows a run of another editor window on the same folder, with its start time. - **`Waiting for chat`** shows the reservation a stopped VS Code watch leaves, from any window: `retry after