From c3b6d367780a5a81cfd04f65e8aecc42a54a0e7d Mon Sep 17 00:00:00 2001 From: Joakim Persson Date: Mon, 17 Aug 2026 22:49:13 +0200 Subject: [PATCH] =?UTF-8?q?docs(CHANGELOG):=20Unreleased=20=E2=80=94=20the?= =?UTF-8?q?=20todo=20extension=20gains=20an=20edit=20action?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The commit itself lives in pi-extensions (2022887), but /opt/pi-extensions is baked into this image, so "which todo behaviour does this image have" is an image question. PI_EXTENSIONS_REF=main means the next build picks it up with no pin to bump -- worth stating explicitly, since a reader who expects a version bump will otherwise go looking for one. Also recorded, because it confused a session today: pi-atelier's tool_result hook replaces todo output with "N/M done - see sidebar" whenever the sidebar panel is visible, so an agent sees the counter and not the item text. Upstream's list returns every item; the terseness is atelier's deliberate context saving, not a limitation of the tool. --- CHANGELOG.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0179b29..5bb3384 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,47 @@ Pre-v1.0.0 tags followed the pi npm version (`v{pi_version}[letter]`). --- +## Unreleased + +Patch-shaped so far. Headline: **the bundled `todo` extension can finally edit +an item.** Nothing in the image itself changed — `pi-extensions` is fetched at +`PI_EXTENSIONS_REF=main`, so the next build bakes this with no pin to bump. +Recorded here because `/opt/pi-extensions` is baked, so "which behaviour does +this image have" is an image question even when the commit lives elsewhere. + +### Added + +- **`todo` extension: an `edit` action** (`pi-extensions` `2022887`). The tool is + a verbatim vendored copy of pi's own `examples/extensions/todo.ts`, which + offers list/add/toggle/clear and no way to change an item's text. On a + long-lived list that forces either a "patch" item describing a *different* + item, or clear-and-re-add of everything — both hit for real on 2026-08-17 while + tracking a 17-item fleet plan, which ended up with `#18` correcting `#17`. + `edit` takes `id` + `text` and keeps the id and the done status; `nextId` is + untouched. Id stability is the point, because ids are the only handle a palace + snapshot of a plan can refer to. +- Verified live in-container before committing, by repointing + `~/.pi/agent/extensions/todo.ts` at a working copy for one session (unknown + id and missing text both error as intended; editing a completed item kept its + id and its `done` state), then reverting the symlink to the image copy. + +### Notes + +- **No pi-atelier change was needed.** Its `tool_result` hook only checks that + `details.todos` is a well-shaped array and ignores the action string, so the + new action flows through its normalizer and sidebar untouched. Worth knowing + while reading agent transcripts: that hook *replaces* todo tool output with + `N/M done · see sidebar` whenever the sidebar todo panel is visible + (`showSidebarTodos`), so an agent sees only the counter and not the item text + — upstream's `list` otherwise returns every item. That is a deliberate + context saving, not a tool limitation. +- The vendored copy now carries a numbered **LOCAL DELTAS** list in its header + (the earlier `ctx.mode !== "tui"` → `!ctx.hasUI` API fix, and this action), so + reconciling a future upstream version stays mechanical rather than + archaeological. + +--- + ## v1.8.3 — 2026-08-16 Patch release. **Bumps mempalace to `3.7.1`** and closes the gap that made the