Skip to content

Releases: CynaCons/powerplan

v0.7.0 — Batch mutations

Choose a tag to compare

@CynaCons CynaCons released this 26 Aug 16:15

Changelog

0.7.0 — 2026-08-26

Batch mutations.

  • add_tasks(version, tasks) — append several checkbox tasks in one locked
    write. Prefer this over repeated add_task. Shared done / agent apply
    to every item; empty list or blank items refuse the whole batch.
  • Arity-independent mutations: complete_task, reopen_task, remove_task,
    and defer_task accept indexes[] or tasks[] for several items in one
    write (resolve-all then apply; cap 100; duplicates refused). update_task
    takes changes[] of {text, index|task, expect?}. add_to_backlog takes
    texts[]. Singular index/task/text still work. No new *_tasks tools.

0.6.1 — 2026-08-22

  • MCP Registry namespace is io.github.CynaCons/powerplan (GitHub org casing;
    lowercase cynacons is rejected by OIDC).

0.6.0 — 2026-08-22

Public distribution.

  • PyPI project name powerplan-mcp (PyPI powerplan is an unrelated Windows
    powercfg wrapper). Import and MCP server name stay powerplan.
  • Console script powerplan-mcp so uvx powerplan-mcp starts the stdio server.
  • server.json for official MCP Registry namespace io.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

Choose a tag to compare

@CynaCons CynaCons released this 22 Aug 21:21

MCP Registry OIDC allows io.github.CynaCons/*, not lowercase. PyPI 0.6.1 README mcp-name matches.

v0.6.0 — Public distribution

Choose a tag to compare

@CynaCons CynaCons released this 22 Aug 20:57

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

Choose a tag to compare

@CynaCons CynaCons released this 10 Aug 15:42

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 tag
  • remove_task — delete a task from an iteration
  • defer_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_plan gained a content_after_backlog lint 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.