Five weeks of merged work in one drop. The headline: /ponytail default <mode> makes your chosen mode survive restarts, and a bare /ponytail now reports the active level instead of resetting it. Also new: Qoder support, subagent scoping via PONYTAIL_SUBAGENT_MATCHER, pi status bar controls, and about 30 fixes across Windows, Codex, OpenCode, and the uninstaller.
What's Changed
- fix: copilot-plugin test checks all 6 command files by @nanaubusiness in #393
- docs(benchmarks): add Independent benchmarks section by @DietrichGebert in #460
- fix: exec lifecycle hook commands by @sanmaxdev in #474
- fix: handle stdin error in ponytail-mode-tracker to avoid uncaught crash by @Megashubham in #227
- fix: prevent Windows session freeze from stdin EOF deadlock (#443) by @DietrichGebert in #477
- fix: strip UTF-8 BOM before parsing config.json (#375) by @DietrichGebert in #478
- fix: don't destroy combined statuslines on uninstall (#374) by @DietrichGebert in #479
- docs(help): list all 6 skills and fix OpenCode command count (#437, #438) by @DietrichGebert in #480
- fix: don't crash uninstall on malformed settings.json (#434) by @DietrichGebert in #481
- fix: guard pi before_agent_start against bad event and missing systemPrompt (#439, #440) by @DietrichGebert in #482
- fix: ship scripts/uninstall.js in the npm package by @DietrichGebert in #538
- docs(help): add /ponytail-gain to the OpenCode help card by @DietrichGebert in #539
- fix: handle CRLF in loc.js fence regex and remove dead codeOf (#339) by @dhedhialy in #518
- fix: hermes test hardcoding python3 (fails on Windows) (#498) by @dhedhialy in #513
- fix: writeDefaultMode merges config instead of overwriting (#490) by @dhedhialy in #514
- fix: statusline setup nudge honors CLAUDE_CONFIG_DIR by @Lakshya77089 in #338
- feat: add /ponytail default to persist the default (#329) by @DietrichGebert in #541
- feat: hide the pi status bar indicator while keeping ponytail active (#324) by @DietrichGebert in #544
- Update Spanish README with improved wording by @lorensation in #560
- docs: clarify that GitHub Copilot Chat (VS Code/JetBrains) is supported (#497) by @yashrao2607 in #526
- docs: reword Copilot Chat note without em dash by @DietrichGebert in #562
- docs: add Zed to the agent portability table by @Lakshya77089 in #190
- docs: align benchmark prerequisites with promptfoo's Node requirement by @hamza-ali-shahjahan in #205
- ux: make the ultra statusline badge stand out by @Lakshya77089 in #192
- check-rule-copies: pin the reuse rung as an invariant by @Rafaelpta in #281
- test: run ponytail-mcp suite under root npm test (wire MCP tests into CI) by @KC-Explore in #235
- fix: ignore invalid opencode mode arguments by @sanmaxdev in #302
- fix(benchmarks): make agentic fixture path portable via PONYTAIL_TMPL by @hamza-ali-shahjahan in #206
- fix(pi-extension): list ponytail modes by @HannesOberreiter in #237
- Fix test coverage and plugin metadata by @yjk0510 in #503
- feat: report active level on bare /ponytail instead of resetting to default by @Jay-1409 in #99
- fix(opencode): stop exporting parseCommandFile from plugin module by @ayushere in #301
- fix: preserve combined statusLine on uninstall by @ousamabenyounes in #550
- docs: update Claude Code Desktop install steps to match the current UI (#342) by @yashrao2607 in #525
- pi-extension: make startup 'Ponytail loaded' toast opt-out via quietStartup by @blissini in #308
- docs: add JetBrains Junie, Amp, and Jules support (native AGENTS.md readers) by @hamza-ali-shahjahan in #326
- feat: add Qoder hooks support (UserPromptSubmit + PreToolUse) by @shixiaoding in #529
- feat(hooks): opt-in agent-type scoping for SubagentStart injection (#… by @krishrathi1 in #522
- fix(pi-extension): guard theme access with try-catch for pi-web compatibility by @huantian233 in #336
- Revise Ponytail plugin installation steps by @Minibrams in #545
- fix: catch fs errors when writing default mode in pi-extension by @guyoron1 in #559
- fix: guard against non-string input.arguments in OpenCode plugin by @guyoron1 in #557
- fix: merge system entries in OpenCode plugin for Qwen compat (#296) by @guyoron1 in #536
- fix: Codex CLI SessionStart additionalContext at top level (#505) by @dhedhialy in #508
- fix: read MCP server version from package.json by @nanaubusiness in #354
- fix: drop bash-only
execfrom hooks so they run under PowerShell (#527, #569) by @Mrsandeep27 in #572 - Fix Codex hook output schema by @saime428 in #574
- fix: reject review as a default mode (pi-extension + config) by @DietrichGebert in #576
- fix: narrow the
ponytail:marker to real corner-cuts, keep the prefix (#120) by @DietrichGebert in #577 - fix: stop filterSkillBodyForMode from swallowing rule bullets that st… by @Dhruvy0804 in #571
- fix(benchmarks): kill timed-out agent cells cross-platform by @codysj in #225
- Emit statusline setup nudge at most once per user by @gglucass in #483
- docs: FAQ entry on using caveman with ponytail by @DietrichGebert in #599
- chore: release v4.9.0 by @DietrichGebert in #703
New Contributors
- @nanaubusiness made their first contribution in #393
- @sanmaxdev made their first contribution in #474
- @Megashubham made their first contribution in #227
- @dhedhialy made their first contribution in #518
- @lorensation made their first contribution in #560
- @yashrao2607 made their first contribution in #526
- @Rafaelpta made their first contribution in #281
- @KC-Explore made their first contribution in #235
- @yjk0510 made their first contribution in #503
- @Jay-1409 made their first contribution in #99
- @ayushere made their first contribution in #301
- @blissini made their first contribution in #308
- @shixiaoding made their first contribution in #529
- @krishrathi1 made their first contribution in #522
- @huantian233 made their first contribution in #336
- @Minibrams made their first contribution in #545
- @guyoron1 made their first contribution in #559
- @Mrsandeep27 made their first contribution in #572
- @saime428 made their first contribution in #574
- @Dhruvy0804 made their first contribution in #571
- @codysj made their first contribution in #225
- @gglucass made their first contribution in #483
Full Changelog: v4.8.4...v4.9.0