diff --git a/CHANGELOG.md b/CHANGELOG.md index 3e5b556c..34e10404 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,16 @@ All notable changes to LocalCode will be documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). +## 0.4.6 — 2026-09-26 + +### Fixed + +- **0.4.5 could fail a turn once a plan had open items.** The open-todo list + that 0.4.5 moved onto the user turn was added without a part identity, so the + runtime refused to save the message ("invalid user part before save") and the + continuation nudge failed. Parts a plugin appends now get their id and + session/message identity before the save. Upgrade from 0.4.5. + ## 0.4.5 — 2026-09-26 ### Fixed diff --git a/pyproject.toml b/pyproject.toml index cbc0e938..cf5e2714 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "localcode" -version = "0.4.5" +version = "0.4.6" description = "High-performance AI coding on consumer hardware." readme = "README.md" requires-python = ">=3.10" diff --git a/src/localcode/__init__.py b/src/localcode/__init__.py index 5f818996..2b91e283 100644 --- a/src/localcode/__init__.py +++ b/src/localcode/__init__.py @@ -8,4 +8,4 @@ try: __version__ = _pkg_version("localcode") except PackageNotFoundError: # not installed (e.g. raw source checkout) - __version__ = "0.4.5" + __version__ = "0.4.6" diff --git a/src/localcode/bin/localcode-ui b/src/localcode/bin/localcode-ui index 6762d4d8..e2536768 100755 Binary files a/src/localcode/bin/localcode-ui and b/src/localcode/bin/localcode-ui differ diff --git a/src/localcode/ui/FORK_COMMIT b/src/localcode/ui/FORK_COMMIT index e588fcef..817e891c 100644 --- a/src/localcode/ui/FORK_COMMIT +++ b/src/localcode/ui/FORK_COMMIT @@ -1 +1 @@ -f65ef33d195169f749bf406b50cdde8c819253f8 +32c4172bc967b9e0c6be111dd7ba27f3ace7e2d5 diff --git a/src/localcode/ui/plugin/localcode.ts b/src/localcode/ui/plugin/localcode.ts index cdfe6d26..bcfdb697 100644 --- a/src/localcode/ui/plugin/localcode.ts +++ b/src/localcode/ui/plugin/localcode.ts @@ -538,7 +538,7 @@ const LocalcodePlugin: Plugin = async ({ client, directory }) => { // Open todos travel with the turn (user message or nudge), never in the // system prompt, so the cached prefix stays stable across todo updates. const open = renderTodos(todos); - if (open) output.parts.push({ type: "text", text: open, synthetic: true } as any); + if (open) output.parts.push({ type: "text", text: open, synthetic: true, sessionID: input.sessionID, messageID: input.messageID } as any); }, "tool.execute.after": async (input, output) => {