Added
- Pi full hook parity extension (#157 by @TomXPRIME): the
.piadapter 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_startruns session catchup,before_agent_startinjects plan context,tool_calladds pre-tool recitation,tool_resultappends the post-write reminder,agent_endauto-continues incomplete plans (per-session+plan limit 3),session_before_compactflushes with the activePlan-SHA256,session_shutdownclears loop timers,inputresets the auto-continue counter. The package self-loads viapi.extensionsin.pi/skills/planning-with-files/package.json. - Mode system: four modes (
auto,parity,cache-safe,notify).autoreadsctx.model.providerandctx.model.id, pickscache-safefor DeepSeek to preserve KV-cache prefix, picksparityotherwise. Configurable viaPWF_MODEenv orplanningWithFiles.modein.pi/settings.jsonor~/.pi/agent/settings.json. - Attestation gate: the Pi runtime reads the same
.planning/<active-plan>/.attestationfile the canonical v2.37attest-plan.shwrites. 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 resolvesattest-plan.ps1on Windows andattest-plan.shon POSIX. .pinpm scheme bump:.pi/skills/planning-with-files/package.jsongoes 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.mdinstructed users to addcodex_hooks = trueunder[features]in~/.codex/config.toml. OpenAI's current Codex hooks docs makehooksthe canonical key andcodex_hooksa 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 thatcodex_hooks = truestill 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.cffviascripts/bump-version.py..continue,.gemini,.kirolag intentionally..picarries its own npm scheme bump insidepackage.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/.