Releases: CynaCons/powerplan
Release list
v0.7.0 — Batch mutations
Changelog
0.7.0 — 2026-08-26
Batch mutations.
add_tasks(version, tasks)— append several checkbox tasks in one locked
write. Prefer this over repeatedadd_task. Shareddone/agentapply
to every item; empty list or blank items refuse the whole batch.- Arity-independent mutations:
complete_task,reopen_task,remove_task,
anddefer_taskacceptindexes[]ortasks[]for several items in one
write (resolve-all then apply; cap 100; duplicates refused).update_task
takeschanges[]of{text, index|task, expect?}.add_to_backlogtakes
texts[]. Singularindex/task/textstill work. No new*_taskstools.
0.6.1 — 2026-08-22
- MCP Registry namespace is
io.github.CynaCons/powerplan(GitHub org casing;
lowercasecynaconsis rejected by OIDC).
0.6.0 — 2026-08-22
Public distribution.
- PyPI project name
powerplan-mcp(PyPIpowerplanis an unrelated Windows
powercfg wrapper). Import and MCP server name staypowerplan. - Console script
powerplan-mcpsouvx powerplan-mcpstarts the stdio server. server.jsonfor official MCP Registry namespaceio.github.cynacons/powerplan.- README and site lead with the public install path.
- Tag-triggered publish workflow: PyPI trusted publishing, then
mcp-publisher. - Pin the Python MCP SDK to
mcp>=1.0.0,<2(v2 changed the Server API).
0.5.1 — 2026-08-10
Task editing CRUD: update_task / remove_task / defer_task with text or
1-based index, plus an optional expect compare-and-swap guard.
0.5.0 — 2026-08-07
Backlog is always the last section of a plan. Mutations insert before it and
normalize a misplaced backlog.
0.3.2
Site polish and GitHub Pages deploy.
0.3.1
Scroll-driven “how agents use powerplan” story.
0.3.0
Plan example gallery on the landing page.
0.2.2
Lifecycle finish: start_iteration / close_iteration / check_plan; dogfood
this repo’s PLAN.md through the tools.
0.2.1
create_plan bootstrap tool.
0.2.0
Optional plan_path on every tool; default walk-up from cwd.
0.1.3
Lifecycle tools and minimal check_plan.
0.1.2
Mutation tools, optional [agent: …] tags, surgical writer.
0.1.1
Read/show tools.
0.1.0
Server scaffold, plan model, tolerant parser.
v0.6.1 — Registry namespace casing
MCP Registry OIDC allows io.github.CynaCons/*, not lowercase. PyPI 0.6.1 README mcp-name matches.
v0.6.0 — Public distribution
0.6.0 — Public distribution
- PyPI project name powerplan-mcp (uvx powerplan-mcp). MCP server name stays powerplan.
- Official registry manifest io.github.cynacons/powerplan in server.json.
- README and site lead with the public install path.
- Pin mcp SDK to 1.x.
- Tag-triggered workflow publishes to PyPI then the MCP Registry.
v0.5.1 — Task editing CRUD
First tagged release of powerplan. Covers the v0.5 plan-structure work: the backlog-last invariant and the task editing tools.
Task editing (v0.5.1)
Tasks could be ticked but never edited. Three new MCP tools:
update_task— rewrite a task's text, preserving its done state and any existing agent tagremove_task— delete a task from an iterationdefer_task— move a task to the backlog, stamped with its origin iteration and an optional reason
Addressing
Address a task by task (the existing substring matcher) or a 1-based index within the iteration — exactly one per call. get_iteration now returns that index per task.
No task ids: they would pollute a human-readable document. No line numbers: they go stale on every mutation and would force the full-file reads the agent-first tools exist to avoid. Across 147 iterations in the three reference plans there are zero duplicate task texts within an iteration, so text stays the ergonomic default and index is the disambiguator.
Compare-and-swap guard
All edit tools take an optional expect — the task's current text must match or the edit is refused, guarding against a plan that moved underneath the caller. Agent tags are ignored in that comparison.
complete_task and reopen_task accept index and expect too; positional task still works for existing callers.
Backlog pinned last (v0.5.0)
The backlog is now always the final section of a plan. Previously every top-level mutation appended blindly, so once a backlog existed any later create_major / create_iteration / append_prose landed after it and stranded it mid-document.
- New top-level inserts go above the backlog
- Existing plans are healed on their first mutation; a plain parse → write is untouched, so the byte-identical round-trip guarantee holds
- A divider that separated the backlog from later sections is dropped on relocation rather than trailing at end of file
check_plangained acontent_after_backloglint code
Verification
73 tests, plus an MCP stdio smoke exercising all 22 tools. Every error path returns a clean error envelope rather than crashing, and a rejected edit leaves the plan file byte-identical.
Known gaps
Backlog entries are still append-only — update_backlog_item / remove_backlog_item are on the backlog.