docs(CHANGELOG): Unreleased — the todo extension gains an edit action
Lint / hadolint (push) Successful in 9s
Lint / actionlint (push) Successful in 23s

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.
This commit is contained in:
2026-08-17 22:49:13 +02:00
parent 3a509077c2
commit c3b6d36778
+41
View File
@@ -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