# Oh My Pi v17.2.12: memory leak fix, hashline breaking change, builtin consolidation

> Fixes a long-standing memory leak in long-running sessions where disposed subagents' sessions stayed pinned for the process lifetime. Hashline gets a breaking change: PUT over a span now throws when the register was never captured instead of silently deleting content. Shell builtins are consolidated into a single crate, and several other fixes land across Codex sessions, Z.AI search, /handoff, and shell minimization.

| | |
|---|---|
| **Tool** | Oh My Pi |
| **Version** | v17.2.12 |
| **Kind** | release |
| **Published** | 2026-08-09 |
| **Observed** | 2026-08-21 |
| **Significance** | 3/5 |
| **Breaking** | yes |
| **Categories** | fix, breaking, feature |

## What changed


- **Memory leak fixed** (pi-coding-agent): disposed subagent `AgentSession` stayed pinned through lifecycle adoption record reviver closure; `dispose()` never released message array, append-only transcript, session-manager entries, or raw-SSE debug buffer ([#8003](https://github.com/can1357/oh-my-pi/issues/8003)).
- **Hashline breaking change**: `PUT N.=M @name` over a span now throws when `@name` was never captured (was silent content deletion). Gap pastes keep the warned no-op behaviour.
- **Hashline added**: `applyEdits` now uses tree-sitter parser for delimiter-boundary repairs, auto-repair for replacement ranges starting one line early on a structural closer, and warnings for balanced payloads over ranges ending mid-block or for `+` body rows that are valid hunk headers.
- **Shell builtins consolidated** (pi-natives): 46 vendored `uu-*` crates, `jaq`, `pi-uu-grep`, `pi-uu-diff`, and accumulated inline builtins in `pi-shell` moved into one `crates/pi-builtins` crate. `pi-shell/src/shell.rs` shrank by ~4,200 lines.
- **Fixed** (pi-ai): account-scoped Codex cyber-policy denials now try every configured account before surfacing the error.
- **Fixed** (pi-catalog): `alibaba-token-plan/qwen3.8-max` metadata now has thinking controls and image input; `opencode-go/deepseek-v4-flash` routed through OpenAI responses API.
- **Fixed** (pi-coding-agent): shell minimization no longer replaces `rustc --print` output with `OK`; outputs under 1,000 chars pass through unchanged; Codex sessions fall back to sibling accounts before other providers; `/models` TPS/TTFT aggregates now include subagent turns; terminal-title spinner CPU fix on WSL/ConPTY; Z.AI web search double-encode fix; `/handoff` empty/whitespace masking fix.
- **Fixed** (pi-natives): `sort --compress-program` now spawns with shell's working directory and environment; `realpath -q` exits non-zero after failed operand.


## Sources

- [github_release](https://github.com/can1357/oh-my-pi/releases/tag/v17.2.12) — retrieved 2026-08-21


## Community

_No curated reactions recorded. Facts and community takes are kept in separate layers
and never blended._

---
Canonical: https://changelogs.info/oh-my-pi/v17-2-12
Entity: https://changelogs.info/oh-my-pi
Event ID: `evt_2026-08-09_oh-my-pi_v17-2-12`
Licence: event synthesis © changelogs.info, CC BY 4.0. Linked sources belong to their vendors.
