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