github OthmanAdi/planning-with-files v2.39.0
v2.39.0 - Pi full hook parity extension + Codex hooks flag fix

latest release: v2.40.0
5 hours ago

Added

  • Pi full hook parity extension (#157 by @TomXPRIME): the .pi adapter previously shipped only the markdown skill, with a docs note that hook automation was Claude Code only. v2.39.0 adds a bundled TypeScript extension under .pi/skills/planning-with-files/extensions/planning-with-files/ that maps eight Pi lifecycle events onto Claude-style behavior: session_start runs session catchup, before_agent_start injects plan context, tool_call adds pre-tool recitation, tool_result appends the post-write reminder, agent_end auto-continues incomplete plans (per-session+plan limit 3), session_before_compact flushes with the active Plan-SHA256, session_shutdown clears loop timers, input resets the auto-continue counter. The package self-loads via pi.extensions in .pi/skills/planning-with-files/package.json.
  • Mode system: four modes (auto, parity, cache-safe, notify). auto reads ctx.model.provider and ctx.model.id, picks cache-safe for DeepSeek to preserve KV-cache prefix, picks parity otherwise. Configurable via PWF_MODE env or planningWithFiles.mode in .pi/settings.json or ~/.pi/agent/settings.json.
  • Attestation gate: the Pi runtime reads the same .planning/<active-plan>/.attestation file the canonical v2.37 attest-plan.sh writes. On hash mismatch, injection is blocked with the [PLAN TAMPERED] warning carrying expected/actual hashes and the re-approve path. One attestation locks the plan across Claude Code and Pi.
  • Pi slash commands: /plan-status, /plan-attest [--show|--clear], /plan-goal <text|default|clear>, /plan-loop [interval] [prompt|stop]. The attest helper resolves attest-plan.ps1 on Windows and attest-plan.sh on POSIX.
  • .pi npm scheme bump: .pi/skills/planning-with-files/package.json goes 1.0.1 to 1.1.0 to reflect the extension surface addition. The npm scheme stays independent of the canonical 2.x version.
  • docs/cache-safe-diagram.md: ASCII diagram showing how cache-safe mode keeps the KV-cache prefix stable across turns.
  • 12 contract tests: tests/test_pi_extension_packaging.py (3), tests/test_pi_extension_capabilities.py (5), tests/test_pi_docs_hook_support.py (4) covering packaging shape, declared event surface, declared command surface, and docs.

Fixed

  • Codex [features] canonical key (#154 by @DLI1996): docs/codex.md instructed users to add codex_hooks = true under [features] in ~/.codex/config.toml. OpenAI's current Codex hooks docs make hooks the canonical key and codex_hooks a deprecated alias. v2.39.0 swaps the docs in four sites (callout, code block, follow-up prose, troubleshooting checklist), and adds a one-line note in each spot that codex_hooks = true still works as a deprecated alias, so users on older configs are not pushed to migrate.

Changed

  • Version bumped to 2.39.0 across 14 SKILL.md variants, plugin.json, marketplace.json, CITATION.cff via scripts/bump-version.py. .continue, .gemini, .kiro lag intentionally. .pi carries its own npm scheme bump inside package.json (see above).

Verification scope

Python contract tests (110 pass, 2 pre-existing Windows exec-bit fails unrelated to this release) cover the Pi extension's packaging, declared event surface, declared command surface, and documentation. The TypeScript runtime itself runs only when loaded by a live Pi Coding Agent process; behavior under Pi was validated by the PR author. No CI runtime test exists for the Pi extension code path yet. Pi-specific regressions should be filed as new issues against .pi/skills/planning-with-files/extensions/.

Thanks

  • @TomXPRIME for the Pi extension implementation (#157), iterated through PRs #155 and #156 to land code-only and version-clean in #157.
  • @DLI1996 for catching the Codex flag drift against OpenAI's canonical docs (#154).

Don't miss a new planning-with-files release

NewReleases is sending notifications on new releases.