Skip to content

Releases: dnouri/pi-coding-agent

v1.3.2

12 Feb 14:47

Choose a tag to compare

1.3.2

Improvements

  • Copy now defaults to visible textM-w/C-w/C-k strip hidden markdown markup by default; raw markdown copying remains available via customization. (#120, #116)
  • Markdown syntax highlighting for input prompts (opt-in) — GFM highlighting was introduced in this release and is available via customization. (#117, #120)

Fixes

  • Streaming tool output no longer flickers under markdown fontification — prevents temporary heading/bold rendering glitches while deltas stream in. (#119)
  • Extension status text strips ANSI escape sequences — header-line status is now clean and readable in Emacs; thanks @conornash. (#118)
  • Read/tool fence and thinking rendering stability improvements — more robust fenced block handling (including nested backticks) and improved file-line navigation from tool output. (#122)

v1.3.1

10 Feb 12:36

Choose a tag to compare

1.3.1

Features

  • Better display for extension tools — Tools outside of built-in tools (i.e. any extension tool like subagent) didn't show a lot of useful information neither in the header line, nor in body, depending on tool implementation. We fix that by now displaying all JSON args to the tool header (so you know what the tool has been called with exactly), and we also surface details payloads from the extension, below the normal tool output. (#112)

Performance

  • Speed up text output in tool calls by up to 23x — Several improvements inlcuding unnecessary updates were made, and tool output is back to being super responsive and fast from an earlier regression. (#113)

Internal

  • Modular source architecture — Split the 4,300-line monolith into six modules with a strict acyclic dependency chain; per-module test targets for faster feedback (#110)
  • Stabilized CI test suite and fixed broken nightly tests — See #114 and #115 for details

v1.3.0

08 Feb 01:23

Choose a tag to compare

1.3.0

Features

  • Live-streaming tool output — See code being written in real-time as the LLM generates it, with syntax highlighting and a stable rolling tail preview (#102)
  • Refined tool block styling — Successful tool blocks use a neutral theme-derived background instead of bright green; tool names are bold-italic, arguments are italic (#103)

Fixes

  • GUI scroll oscillation — Fixed a bug in GUI Emacs where the chat buffer would jump to a random position while scrolling, caused by an interaction between hl-line-mode and hidden markup (#100)
  • Transient menu crash with many commands — Projects with more than 9 skills, templates, or extensions no longer crash the transient menu (#109)
  • Transient menu key conflict — Stats key changed from S to i to avoid collision with the Skills submenu (#109)

v1.2.6

06 Feb 18:44

Choose a tag to compare

1.2.6

Fixes

  • Emacs 30 compatibility — Bumped minimum transient version to 0.9.0 (required for the 3-element group vector format), fixed phscroll test isolation, and added Emacs 30.1 to the CI matrix. (#99)
  • Theme-aware faces — Removed all hardcoded colors; faces now inherit from standard theme-aware faces (secondary-selection, diff-added, diff-removed) and headers are fontified by gfm-mode. Custom themes work properly out of the box. (#97)
  • Consistent blank lines between chat sections — Eliminated extra blank lines that appeared between the assistant header and response content. (#98)

v1.2.5

06 Feb 13:31

Choose a tag to compare

1.2.5

Features

  • Automatic phscroll install prompt — When horizontal table scrolling is enabled but phscroll is missing, offers to install it on first session start. (#95)

Fixes

  • Fixed navigating submenus in the command menu — Also corrected the minimum transient version. (#94)
  • Quit binding in menu moved to Q — Avoids accidentally terminating a session when dismissing the menu. (#96)

v1.2.4

06 Feb 11:03

Choose a tag to compare

1.2.4

Fixes

  • Template commands restored on pi 0.51.3+ — Pi v0.51.3 renamed SlashCommandSource from "template" to "prompt" in the get_commands RPC response, causing template-sourced slash commands to silently disappear from the command menu. Minimum pi version is now 0.51.3. (#93)

v1.2.3

06 Feb 10:09

Choose a tag to compare

1.2.3

Features

  • Horizontal scrolling for wide tables — Tables that exceed the window width can now scroll horizontally instead of wrapping awkwardly. Requires the optional phscroll package. Controlled by the new pi-coding-agent-table-horizontal-scroll customization (default: on). (#92)

Fixes

  • Table padding uses visible width — Completes the alignment fix from v1.2.2: cells are now padded based on visible text width, not raw string length. Previously, a cell with [link](url) was measured correctly but still padded to the wrong width. Also handles strikethrough (~~text~~) markup. (#92)

v1.2.2

03 Feb 14:35

Choose a tag to compare

1.2.2

Fixes

  • Table alignment respects hidden markup — Tables with markdown links, images, or formatting now align based on visible text width, not raw syntax. A cell with [#1](url) is now sized for #1, not the full 27-character link. Saves 75-93% column width in link-heavy tables. (#91)

  • Reload preserves current session — After switching sessions via new-session, resume, or fork, C-c C-p R now correctly stays in the new session instead of reverting to the previous one. (#90)

  • /compact slash command works — Typing /compact in the input buffer now triggers compaction, matching TUI behavior. Supports optional instructions: /compact focus on API design. Messages queued during compaction are processed after it completes. (#88)

  • Line navigation accounts for stripped blank lines — Pressing RET on collapsed tool output now jumps to the correct line even when blank lines were stripped for compact display. (#87)

  • Scroll position preserved on tool toggle — Expanding/collapsing tool output with TAB no longer jumps the window scroll position. (#86)

  • Abort clears follow-up queue — Queued messages are now discarded when aborting with C-c C-k, preventing unexpected messages after abort. (#85)

v1.2.1

30 Jan 17:42

Choose a tag to compare

1.2.1

Fixes

  • Session resume works with named sessions — Naming a session via direct file write corrupted the DAG (parentId was null); now uses the proper set_session_name RPC call (#83)
  • Extension UI dialogs now trigger follow-up messages — Confirm, select, and input dialogs from extensions were silently broken; the RPC layer was overwriting request IDs, so pi couldn't match responses to pending promises (#80)

Testing

  • Faster, more reliable CI — Added /no_think to all test prompts; qwen3's internal reasoning mode was causing flaky tests and slower execution (#81, #82)

v1.2.0

28 Jan 18:06

Choose a tag to compare

📺 Watch the demo video (5 min)

1.2.0

Features

  • Unified command menu — Browse and run all skills, prompt templates, and extension commands from one place; edit any command's source with Shift+number (#76)
  • Steering messages (C-c C-s) — Redirect the agent mid-task after the current tool completes (#69)
  • Visit file from tool output (RET) — Jump from diff or read output directly to the file at the correct line; thanks @SayreBlades (#73)
  • File reference (@) and path completion — Type @ to search project files or Tab-complete paths; thanks @jwintz (#68)
  • Session names — Label sessions for easier identification when resuming (#76)
  • Readline-style history search (C-r) — Search input history incrementally, just like bash (#78)
  • Extension UI support — Extensions can now prompt for confirmation, selection, and input (#76)

Performance

  • 10-25x faster in long conversations — Fixed O(n) markdown scanning that caused input lag in large buffers (#72)

Fixes

  • @ completion respects word boundaries — No longer triggers in email addresses (#77)
  • Slash commands only at buffer start — Matches pi's actual expansion behavior; thanks @SayreBlades (#75)
  • Path completion cleaner — Filters out ./ and ../ noise (#79)
  • Custom commands scoped per session — No longer bleed between sessions (#71)