Pendant

v0.21.0

# Download .vsix

Added

  • Turkish, Polish, Czech, and Hungarian translations are now available throughout Pendant.
  • Exported HTML chats have been improved visually, with export options and filtering available.
  • Large Edit tools now open in native VS Code diff tabs when clicked. Entries in "Changed files" summaries open native text or image diffs.
  • Many UI improvements throughout Pendant.

Changed

  • Updated the bundled Pi runtime to 0.80.7.
  • Opening and switching sessions you have not opened yet, and creating a new chat, are now much faster, backed by pre-warmed background processes and avoiding redundant disk reads. Tune how many are kept ready with the Warm Spare Processes setting.
  • Long transcripts render faster.
  • Mermaid diagrams now open in a dedicated VS Code tab.

Fixed

  • Pinned file context pills no longer open files; only their remove buttons are interactive.
  • Shift-dragged files and folders from VS Code Explorer now attach reliably.
  • Long-running prompts and context compaction no longer fail with a spurious timeout after about 30 seconds.
  • Stop requests now appear immediately, disable repeated stops until the work settles, and reliably cancel active Pi work.
  • Extension status values now appear before the first message instead of waiting for an agent response.
  • Extension status popovers no longer repeat the same value in both columns when no separate label is provided.
  • Chat streaming stays smooth during fast responses and heavy tool use instead of falling behind the agent, and turning the screen off or hiding the panel mid-task no longer freezes the UI while it catches up on resume.

v0.20.0

# Download .vsix

Milestone

This release brings major new features like making Pendant available for multiple languages, compact tool calls, multi-root setups, and an overhauled file context attachment behavior, a few bug fixes, and a substantial improvement in performance.

Many computation-heavy and data-transforming parts of Pendant have been ported to highly optimized Rust, which is then compiled to optimized WebAssembly.

You may notice quicker startup times, session load times, and quicker tool call processing. Overall memory consumption of Pendant has been reduced by ~15%, profiled on Windows x64+ARM64, macOS ARM64, and Linux x64+ARM64.

I took great care to not break existing functionality and extended the unit test suite greatly with various new tests, many of them covering new edge cases.

Still, if something you relied on seems broken or missing, please feel free to submit a ticket so we can take care of it.

Going forward, bug fixes will have top priority and will be released more frequently.

Added

  • Pendant now follows the VS Code display language, with translations for German, French, Spanish, Italian, Japanese, Korean, Brazilian Portuguese, Russian, Simplified Chinese, and Ukrainian. If you see something translated incorrectly, please do not hesitate to submit a ticket.
  • Multi-root workspace support.
  • Consecutive file-reading and search tools now collapse into a compact exploration row that expands only when clicked, configurable with pendant.groupFileExplorationToolCalls or directly from tool context menus.
  • Added pendant.extensionStatus.surface.keys to selectively surface statusKey values published by Pi extensions. When unset, all published statuses remain visible.
  • Added an opt-in setting to restore the most recently used session when Pendant starts.
  • Various UI improvements.

Fixed

  • Composer thinking and model controls now compact one at a time as space narrows, with fully rounded icon-only buttons that avoid overlaps.
  • Steered messages now remain visibly pending until Pi consumes them and settle in the correct transcript order when several are queued.
  • Session headers, timestamps, pinned controls, header hover states, and model and dictation tooltips now render more consistently.
  • Editor-tab session headers now stay synchronized when a session is renamed elsewhere.
  • Pendant now starts correctly with Pi 0.80.6 and later, and Max thinking is selectable when the chosen Pi model supports it.
  • Background agent jobs now stay alive long enough to deliver their final follow-up response after you switch to a new chat.
  • Extension-published status values no longer duplicate when starting new chats.
  • Edit from here stays available after editing a previous message and sending another prompt.
  • Custom notification hooks now log their command, output, errors, exits, and timeouts to a VS Code Output channel for easier debugging.
  • Added a command to open the custom notification hook log directly, called "Pendant: Show Hook Log".
  • The Sessions section now collapses into a dropdown-style menu when vertical space is limited.

v0.19.1

# Download .vsix

Added

  • Files and folders can now be dragged into the composer to attach them as prompt context.
  • Sessions can now be pinned from the start page or session popover, keeping important chats at the top until you unpin them.
  • Active Pi skills and extensions are now available from hoverable controls on the start page and in sessions, replacing the /skills command.
  • Pi extensions can now send normal user messages through sendUserMessage, including steered and queued follow-ups.
  • Re-added an opt-in way to see extension-published status values (from setStatus extension UI requests, e.g. statusKey/statusText values that security or performance extensions in Pi publish). The new pendant.extensionStatus.surface setting controls where they appear: off (default), statusBar (VS Code status bar), panel (shown directly in the Pendant panel footer), or both. A single-line status appears inline in the footer by default (falling back to an icon when it would crowd the layout); a multi-line status renders each line in its own row below the composer.
  • Dictation now lets you choose a built-in Whisper model or a custom local model file before downloading, with each built-in option showing its language support, speed, size, and download URL.

Notifications and sounds now also fire when an extension asks for input via a ui.select or ui.input prompt, not just when the agent finishes working.

Custom notification hook

  • Added a custom notification hook for scenarios where native OS notifications can't reach you.
  • The pendant.notifications.customHook, pendant.notifications.customHookEvents, and pendant.extensionStatus.surface settings are marked experimental; their behavior may change in future releases.
  • Configure it with the new pendant.notifications.customHook setting: an absolute path to a script or executable that Pendant spawns when it needs your attention. The script receives the event as environment variables (PENDANT_EVENT, PENDANT_TITLE, PENDANT_MESSAGE, PENDANT_SESSION_PATH) and as a JSON object on stdin, so you can forward it to any channel you like - ntfy, Pushover, Telegram, a webhook, email, etc.
  • The new pendant.notifications.customHookEvents setting controls which events trigger the hook: input_request (the default) fires whenever Pendant shows a ui.select or ui.input prompt, regardless of window focus; add agent_finished to also be notified when the agent completes a run (focus-guarded, like native completion notifications).
  • The hook is best-effort: it runs with a 10-second timeout, and spawn errors, non-zero exits, or timeouts never block the agent. A failed run only shows a VS Code notification.

Changed

  • Provider Login now opens directly to a searchable, compact provider picker with Subscription and API key tabs.
  • The start page now includes Quick controls for offline mode, completion notifications and sound, context-file and resource discovery, and Git context. Runtime-related changes apply after restarting VS Code instead of interrupting Pi.
  • The active editor file now appears as an unpinned context candidate in the composer, preserves selected line ranges when pinned, and stays out of the way as you switch documents.
  • Q&A dialog answer options now render Markdown and visually mark model-recommended choices.
  • Updated the bundled Pi runtime to 0.80.6.
  • Assistant responses that begin with a Plannotator-style [DONE:N] plan-step marker now display a badge at the top of the message instead of silently hiding the marker.
  • The thinking-level footer button now shows a brain icon next to the label in full-label mode instead of the level letter (the letter still appears in compact/icon-only mode).

Fixed

  • Upstream HTTP errors with a flattened body shape (e.g. 400: {"message":"…","code":400} from OpenRouter and similar gateways) now render as a proper error card instead of falling through to raw text.
  • The plan progress tracker is now removed from the composer when switching to the start page, instead of lingering from the session that was tracking the plan.
  • The Pi install command suggested when Pi is not installed now uses the current @earendil-works/pi-coding-agent npm package, matching the official Pi install instructions.
  • Retry and similar action notifications now display their icon and text properly spaced apart and vertically centered, with colors that follow the active theme.
  • Edit from here is now available on every user message, including when fork metadata arrives after the transcript renders or message text is transformed for display.
  • enabledModels are now parsed properly.
  • Fixed a timeout issue when steering before or after context auto-compaction.

v0.19.0

# Download .vsix

Added

  • A major UI design overhaul and various consistency improvements around the extension. Feedback is welcome.
  • Skill invocation notifications now appear inside the user message bubble instead of as a separate status block.
  • Pi extension custom UI updates and rendered result details now display in Pendant when they are available over RPC.
  • Pendant now supports the rpiv-ask-user-question Pi extension and similar question asking extensions with native Q&A dialogs.
  • Agent responses can now be copied directly from the chat transcript. This does not include tool calls yet.
  • Added an opt-in start-page toggle to generate short session names from the first message in a new chat.
  • Reloading Pi config now shows a confirmation dialog before restarting the Pi process.

Fixed

  • The startup logo is no longer incorrectly inverted on dark VS Code themes.
  • The "tool finished but stopped before returning a response" warning now correctly attributes the interruption to Pi (the agent), not Pendant. The message now says "Pi stopped" instead of "Pendant stopped" and provides distinct explanations for tool errors vs. clean tool completions.
  • Tool calls now only expand and collapse when clicking the tool name or icon, not the entire summary row, preventing accidental toggles while browsing the transcript.
  • Newer OMP runtimes no longer crash startup or lose command, thinking-level, model, context, and credential compatibility.
  • Newer OMP session history and branch/edit actions now work in Pendant, including home-relative session folders and title-first session files.
  • "Working..." badges on the start page now align with their session titles.
  • Newly started chats now appear as working on the start page as soon as their run begins.
  • Pi runtime crash notifications now show readable crash details instead of raw HTML markup.
  • Extension input prompts now respect the configured chat send shortcut, such as Ctrl+Enter.
  • The model selector no longer opens its dropdown after logging into a provider.
  • Context compaction timeout has been increased from 30 seconds to 5 minutes, configurable via a new setting pendant.compactTimeout.
  • Steering during context compaction no longer causes a timeout warning. Steer messages are now queued and dispatched after compaction completes, and the prompt RPC command no longer has a hard 30-second timeout that could fire when the runtime is blocked by compaction.
  • External Pi now defaults an empty agent directory to Pi's normal user storage instead of Pendant's bundled runtime storage.
  • Extension tool results with empty details now finish cleanly instead of leaving the chat in a working state.
  • Newer Pi RPC events that Pendant does not recognize yet no longer kill the active runtime.

Removed

  • Removed the "Show Diagnostics Log" and "Export Diagnostics Log…" commands.
  • Removed the "Export diagnostics" button from the runtime status card.
  • Removed the "Log Diagnostics" extension setting (pendant.diagnostics.enabled). Diagnostic logging is no longer supported.

v0.18.0

# Download .vsix

Added

  • Added a chat box plus button for attaching multiple files as prompt context.
  • Added a raw message viewer to the user message context menu with read-only text and JSON editors for inspecting hidden prompt context.
  • Added a theme diagnostics command to help troubleshoot webview colors. (Pendant: Show Theme Diagnostics)
  • Added /skills to show the currently loaded skills and extensions without mixing in built-in chat commands. Rudimentary initial design without further iteration.

Changed

  • Dictation now defaults to the Base multilingual voice model.
  • Edit from here can now open forks in the current chat or a new editor tab, configurable via setting or right-click on the fork button.
  • Edit diffs now default to the line-by-line layout.
  • Thinking-level slider badges now show provider-specific values when a model maps a Pi thinking level to one.
  • The start page no longer suggests /new or /compact in chat autocomplete.
  • New font and other various UI adjustments. Feedback is welcome.

Fixed

  • Disabling automatic context compaction no longer prevents Pi from starting.
  • OpenRouter MiniMax M2 models no longer over-reserve output tokens near the context limit.
  • The go to previous message button now stays on the previous message when used from the bottom of a chat.
  • Code spans, code blocks, and monospaced UI now more closely match the surrounding text size.
  • Edit tool output now keeps line numbers aligned with their content, preserves indentation and syntax highlighting in diffs, removes extra spacing between paired diff rows, passes vertical scrolling through to the transcript even immediately after expanding the block, and scrolls horizontally instead of wrapping long lines.
  • Messages can be forked again after context compaction.
  • Shift+Tab now cycles the thinking level while the Pendant panel is focused.
  • OMP no longer receives Pi-only extra skill or prompt-template startup settings, avoiding startup failures when those settings are configured.
  • OMP no longer receives Pi update checks or update prompts.
  • DeepSeek tool-call markup no longer leak into chat transcripts.
  • User messages now preserve intentional spaces and repeated blank lines, and assistant messages preserve intentional spaces when rendered in the transcript.

v0.17.3

# Download .vsix

Added

  • Added Export Chat for saving the current conversation as a standalone HTML page.

Changed

General

  • Updated the bundled Pi runtime to 0.80.3.
  • Compacting a chat now asks for confirmation before proceeding.
  • Large Edit tool diffs now stay collapsed when the View button is available.

UI

  • The chat input now inserts a tab character when pressing Tab.
  • The chat box now mentions that right-click opens options.
  • Short user message bubbles now use a slightly wider default width.
  • The start page now keeps Delete all sessions inside the recent sessions header.
  • Tool call groups no longer show a vertical connector thread.
  • Bash tool summaries now recognize more common developer, package-manager, and shell commands, with official or symbolic icons for supported tools.
  • Bash command highlighting now makes quoted strings and escaped characters easier to read.
  • Confirmation dialog buttons now align with the right edge of the dialog.
  • Changed-file summaries now end with a subtle separator so completed agent work is easier to spot.
  • Other subtle UI improvements and polish.

Fixed

  • Pi update notifications now use the correct product name.
  • Moving a sidebar session to a tab now returns the sidebar to the start page instead of opening a replacement chat.
  • Start page autocomplete now stays within the panel instead of growing too tall.
  • User messages that contain tab characters now render visibly in the chat transcript.
  • Pasted code blocks at the start of user messages no longer disappear from the live chat transcript.
  • The chat no longer jumps to the bottom when the file context pill appears or hides while you are reading earlier messages.
  • First-run setup now gives the included Pi runtime enough time to finish its initial startup before showing an error.
  • Model selector arrow-key navigation now follows the same order shown in the menu.
  • Keyboard-highlighted model selector rows now use a dimmer background than the currently active model.
  • Clipped Bash tool summaries now show the full raw command in a delayed hover tooltip.
  • Clipped Bash tool text now ends with a clearer three-dot continuation marker.
  • Edit tool blocks no longer capture scroll focus when viewing diffs.

v0.17.2

# Download .vsix

Added

  • The bundled Pi runtime now keeps its config in dedicated storage that persists across Pendant updates, separate from any external Pi setup.
  • When the bundled Pi runtime has no credentials configured yet, Pendant now offers to import them from an existing standalone Pi setup such as ~/.pi/agent/auth.json.
  • Chat send and steer keybindings are now fully configurable via pendant.sendKeybinding and pendant.steerKeybinding (right-click the chat box or steer button for quick access).
  • Added pendant.contextWindowAlignment so the context window widget can stay right-aligned by default or move to the left side of the composer. You can change the alignment easily by right-clicking the context widget.
  • The dictation button menu now includes a bottom Settings item that opens Pendant's Dictation settings directly.

Fixed

  • The dictation menu no longer shows the predefined whisper.cpp model list when a custom pendant.voice.modelPath is configured.
  • Dictation startup errors are now shown clearly in the UI when no microphone or input device is available, instead of only appearing in diagnostics.
  • ui.select dialogs now keep long titles, messages, options, and fenced code blocks contained inside the panel without overflowing the webview.

v0.17.1

# Download .vsix

Fixed

  • Fixed Edit from here in long chats after older messages have been compacted away. Previously, clicking edit on a visible prompt could accidentally open an older hidden prompt, so the replacement message could branch from the wrong point in the conversation. The edit button now only appears when Pendant can safely edit the prompt you clicked.
  • Pendant now recovers from startup stalls instead of leaving the splash screen loading forever; if startup still fails, it shows an error screen with an easy diagnostics export.

v0.17.0

# Download .vsix

Added

  • Queued messages now support message steering.
  • Added a Pendant: Steer Next Message command that marks the next submitted chat message for Pi's official steering behavior without assigning a default keyboard shortcut.
  • Added pendant.voice.modelPath for using an absolute local whisper.cpp model file for dictation without downloading or validating a catalog model.
  • Added pendant.editDiffViewMode for choosing side-by-side or line-by-line edit diffs in tool output, the diff viewer, and changed-files previews.

Fixed

  • Fresh installs now recover from the first-run release presentation directly to the ready start page, including when the user chooses the already-selected bundled Pi runtime.
  • The splash screen no longer gets stuck loading forever after startup recovery.
  • Thinking blocks no longer expose horizontal scrollbars; long code, tables, and tokens wrap inside the block while preserving vertical-only scrolling.
  • Dictation now works correctly offline with existing local model files, fails clearly when the selected model is missing, and avoids prompting or fetching while pendant.offline is enabled.
  • Network-dependent features now respect pendant.offline, including external runtime updates, ChatGPT/Kimi usage, and OpenRouter credits.

v0.16.0

# Download .vsix

Rebranding

This release focuses on a major redesign and rebranding of vscode-pi, now called Pendant.

The new website is available under pendant.run. Pendant is still under active development and in a pre-release state.

Some previously available features might not be available in this version or might be temporarily disabled until they are in a mature, polished state.

Feedback about the rebranding and issues is always welcome. You can log in via GitHub or Google.

Pendant will remain a free extension with a focus on freedom of model choice, especially local agentic development, powered by Pi combined with an easy-to-use interface.

Added

  • Pendant now bundles the Pi agent runtime.
  • OpenRouter credit balance can be fetched from the status bar when an OpenRouter model is active.
  • Scoped models now come from Pi's enabledModels setting, with a model-picker scope toggle and file watcher.
  • New first-run release presentation for 0.16.0.
  • Bun install and update support now works when npm is unavailable.
  • oh-my-pi (omp) agent support.
  • New /settings slash command.
  • ChatGPT subscription rate limits are shown when hovering the model selector, when ChatGPT model is selected. On by default, can be turned off in the settings.
  • Kimi subscription rate limits are shown when hovering the model selector, when a Kimi For Coding model is selected. On by default, can be turned off in the settings.
  • Cached read/write tokens are shown in the context info tooltip.
  • New pendant.visibleToolCalls setting for hiding or filtering tool calls.
  • Configurable completion notifications and sounds.
  • New Changed files summary for runs that touch multiple files.
  • The working indicator and Changed files summary now show elapsed duration.
  • Model selector dropdown now shows provider-specific icons for OpenRouter models.
  • Settings now show defaults, modified-state accents, and reset buttons more consistently.
  • Bash tools are now displayed as "Run" and allow command copying via right-click.
  • New info-menu toggle: "Show thinking blocks".
  • New info-menu toggle: "Auto compact".
  • New info-menu item: "Changelog".

Changed

  • Read tool content is lazy-rendered on first expand.
  • Plannotator statistics have been removed from the status bar.
  • Thinking blocks only capture scroll when focused.
  • Streaming thinking code blocks skip syntax highlighting until complete.
  • Large pasted text now appears as an input badge.
  • Pi update actions now appear inline in chat instead of the info menu.
  • Auth, models, and settings file actions moved to Command Palette commands.
  • Model selector search now uses fuzzy matching with highlighted matches.
  • Tab accepts the highlighted model, and GPT-family models sort more naturally.
  • The thinking-level footer control is now a compact draggable slider.
  • The start page was redesigned and remembers model/thinking choices.
  • Session history now uses a title-anchored popover with improved ordering and branch expansion.
  • Editor-tab sessions are isolated more strictly from sidebar session state.
  • Runtime steering and queue delivery controls have been removed.
  • The experimental sticky latest user message feature has been removed.
  • Several legacy appearance and ChatGPT usage display settings have been removed.
  • Tool blocks, notifications, queues, and streaming indicators are visually quieter.
  • Improved release packaging and distribution.
  • The context info tooltip is now titled "Context info" instead of "Context window".
  • Several subtle UI improvements and clean-ups.
  • Session startup, management, and memory usage are more efficient.

Fixed

  • The model picker now correctly reflects the configured enabledModels scope.
  • DeepSeek V4 Flash models now correctly offer the xhigh thinking level.
  • The model selector shows full names and strips redundant provider prefixes.
  • The package management UI has been removed from the extension.
  • Update notifications now appear as inline chat messages with an "Update now" action.
  • Session sidebar now shows the correct name for sessions that have been renamed.
  • Windows PowerShell startup no longer fails on /d; pi.comspec can override the launch shell.
  • Pi crashes now show crash details and an expandable log in the sidebar.
  • Slash-command prompts and skills now include editor context.
  • Clicking empty chat panel space now focuses the textbox.
  • Voice model downloads use the corrected URL.
  • Context stats refresh correctly after context compaction.
  • Subagent transcript state and fallback TODO/progress rendering are more robust.

v0.15.0

#

Added

  • First-time users can choose an appearance preset before starting their first chat.
  • New setting pi.autoCollapseFinishedThinking can collapse thinking blocks after pi finishes streaming them.

Changed

  • Thinking blocks now stay expanded by default, including restored transcript thinking.
  • User message bubbles now use a subtler trailing corner in rounded mode.
  • The settings dialog now uses a category rail, grouped rows, and custom switches, chips, and inputs instead of native-looking controls.
  • Settings dropdowns now use an in-extension custom combobox instead of the native OS menu.
  • The font size setting now uses a numeric spinner and is limited to 8 through 300 px.
  • The context window button now displays a circular progress ring with the percentage in the center, replacing the previous text-based progress and percentage display modes. The pi.contextUsageDisplay setting has been removed.

Fixed

  • Double-clicking a sent user message now opens it for same-session editing from that point, matching pi's session tree behavior when supported by the runtime
  • Session history now shows forked chats as collapsed, expandable branches under their parent session, including pi sessions that record parentSession metadata
  • Update notifications now run pi update from a visible terminal.
  • Editor chat tabs can now run as independent pi sessions alongside the sidebar chat
  • Restored sidebars now recover from stalled pi startup or history loading instead of staying on the loading logo indefinitely
  • Rechecking pi now distinguishes missing installs from runtimes that were found but crashed, including Windows npm paths used from remote extension hosts
  • Restored transcripts now keep tool blocks collapsed and show multiline bash commands as compact one-line summaries.
  • Bash tools that run node -e now show the evaluated JavaScript with syntax highlighting inside the expanded tool details.
  • User and Pi message timestamps are now always visible, and the pi.showTimestamps setting has been removed.
  • Tool blocks no longer snap shorter after their expand animation completes.
  • Collapsed tool blocks now have stronger contrast against the extension background in light themes.
  • Bash command summaries now keep a visible space between the command and its arguments
  • Repeated Pi messages no longer show orphan timestamps when the repeated Pi label is hidden.
  • Web search and fetch tool blocks now use clearer labels and matching icons.
  • Append system prompts now preserve multiline text and continue to include pi's discovered project or global APPEND_SYSTEM.md file

v0.14.0

#

Added

  • Chat input message history can now recall recent prompts per session from the composer button or Up/Down keys
  • Inline code spans that look like functions, qualified names, and generic types now get deterministic entity highlighting without broad auto-detection
  • Mermaid diagrams in chat can now be toggled between the rendered diagram and source text from an inline button
  • New Style setting pi.transparentChatInputArea makes the chat input area semitransparent with backdrop blur, enabled by default.

Changed

  • Onboarding now focuses on installing or updating pi with a cross-platform npm command and a recheck action, instead of showing the previous multi-step setup surface
  • Several UI adjustments for better contrast and clarity
    • Markdown tables in chat now use rounded corners in rounded-corner mode, with subtle alternating row colors for longer tables.

Fixed

  • Bare URLs in chat messages now render as clickable links
  • MiniMax-style <think> and <read-files> tags now render cleanly in chat, thinking blocks, and compaction summaries
  • Read tool headers now include the line range inside the clickable file link
  • Windows npm installs are now detected when pi.binaryPath is installed beside Node.js in Program Files
  • Missing pi on Windows now opens the install onboarding surface immediately instead of switching to chat with only a "pi is not installed" message.

v0.13.0

#

Added

  • Sessions can now be opened in VS Code editor tabs
  • New Pi: New Chat in Editor command for starting a fresh chat directly in an editor tab
  • Large transcripts now render recent conversation groups first, with a configurable Show more... control for revealing older history on demand
  • An improved settings dialog
  • Extension checklist widgets, including Plannotator TODO/progress lists, now render as compact expandable widgets. Supports live progress update.

Changed

  • The regular new-chat command is now exposed as pendant.newChat ("pi: New Chat") instead of pendant.newSession ("pi: New Session")
  • Sticky latest user messages are now disabled by default and marked experimental
  • Very large transcripts now skip expensive tool expand/collapse animations so tool blocks respond immediately
  • Various UI improvements/polish

Fixed

  • File autocomplete lists are now scrollable
  • File autocomplete now filters files ignored by the workspace .gitignore
  • Claude, GPT, Grok, and Gemini models now show the correct provider family logos
  • User message thinking-level badges now appear above the message bubble instead of beside message actions
  • Git context auto-attach is now disabled by default, and unavailable VS Code Git models no longer fail sidebar actions

v0.12.0

#

Added

  • Support for ask_user tool requests
  • Sticky latest user prompts while reading long pi responses, configurable with pi.stickyLatestUserMessage
  • Configurable context usage indicator with a neutral percentage label option
  • Queue delivery modes button visibility can now be configured with pi.showQueueDeliveryModesButton
  • Syntax highlighting for common keywords and literals in inline code spans
  • MathJax rendering for TeX math in chat

Fixed

  • Extension UI widgets now strip terminal control sequences and render text lines safely in the composer area

v0.11.0

#

This release focuses on many Quality-of-Life improvements, general stability, and improved pi crash recovery. It also features several UI improvements such as reduced visual noise (too many borders).

Added

  • File and folder mentions now appear as compact badges in the composer and user messages
  • Thinking level controls now support XHigh when available, plus settings for always showing, compacting, and using letter icons in the thinking bar
  • Write tool blocks are now streamed while the agent is composing the write
    • New setting pi.syntaxHighlightWriteToolContent: highlight Write tool code previews when the filename language is detected, using a lighter green background
  • Large Edit tool blocks now include a View button for opening a wider diff viewer with surrounding file context
  • New setting pi.alwaysShowBlockBorders: always show thinking, tool, and user message borders
  • Model selector icons now show Google for Gemma models and Alibaba for Qwen models, including local provider entries
  • More UI improvements and better visual consistency across the extension. Too many to list here.
  • Several performance improvements, including reduced memory consumption

Changed

  • pi.spacing now defaults to compact; the previous default spacing is available as relaxed
  • Various block borders now appear only on hover by default. Configurable via a newly added setting.
  • Thinking level controls now use letter symbols by default. Configurable via a newly added setting.

Fixed

  • File context pills with line ranges now open the file at the correct location when clicked
  • File links in tool headers now open the file without expanding or collapsing the tool block
  • Edit tool blocks now stay collapsed while pending and open only after there is result content to show
  • Read tool blocks now stay collapsed by default
  • MiniMax-style <think> tags in pi text now render as Thinking blocks instead of raw message text
    • They also render as regular italic text inside tool output
  • Uncategorized tool blocks (this includes "Subagent" from the pi-subagents extension) now:
    • Expand automatically when they stream content
    • Stream Markdown, preserve progress across updates, and show failed Subagent child runs as failed
  • Subagents:
    • Parallel Subagent runs now display each child run as its own tool block
    • Long-running Subagent tool blocks no longer show stalled-update warnings when they are still running quietly
    • Subagent streaming output now renders multiline <think> text without stray Markdown markers and keeps autoscroll pinned
  • Thinking blocks now:
    • Stay collapsed until they have content to show
    • Stay expanded after content has been shown
    • Use more compact and subtle styling
    • Render Markdown and code highlighting while streaming, with a taller and more consistent text size
  • User message bubbles now show a badge for the thinking level that was used when the message was sent, except when thinking is Off
  • User message file context pills now share a row with the left-aligned You label and align to the right edge
  • The chat textbox now grows up to 10 lines
  • Pressing Enter in model search now selects the single filtered result
  • Added alternative modes for the text caret (line, underline, and block), configurable via newly added settings
  • The session sidebar now opens below the header instead of covering it
  • Composer action buttons now hide while context compaction is running
  • web_search tool blocks now display as Web Search
  • Improved stability with certain Ollama models
  • Improved chat autoscroll stability, including in thinking blocks
  • Failed Edit tool blocks now show the actual error instead of a proposed diff preview
  • The chat now warns when pi stops immediately after a tool result without returning a final response
  • Fixed the number of added and removed lines in "Changed files" summaries
  • "Reload pi config" now refreshes auth/provider setup status, models, prompts, skills, extensions, and the current session snapshot
  • Crash recovery now resumes the interrupted session instead of the fresh session opened after pi restarts
  • Selecting text in the chat transcript no longer causes that text or stale editor selections to be attached as prompt context

v0.10.0

#

Fixed

  • Duplicate thinking blocks and repeated pi update notices no longer appear during sidebar refreshes
  • Thinking blocks now show complete reasoning text more reliably
  • File context pill tooltips now show reliably on Windows and Linux
  • Background process completion notices with unknown exits now restore as Bash blocks instead of Custom messages
  • Adjacent restored background process completion notices now visually merge without extra gaps
  • Tool and thinking blocks now expand and collapse smoothly when animations are enabled
  • Chat auto-scroll now stays pinned while thinking and tool blocks expand or settle
  • Expanded context compaction blocks now show subtle scroll shadows when more content is available
  • Context compaction blocks now expand and collapse smoothly when animations are enabled

Changed

  • Tool and thinking block borders are clearer in light and dark themes

Added

  • New setting pi.enableAnimations: control animated UI transitions in the pi sidebar
  • New settings pi.autoExpandSmallEdits and pi.autoExpandEditLineThreshold: control when edit tool blocks open automatically
  • New setting pi.alignUserMessagesRight: align your message bubbles to the right side of the chat by default
  • New setting pi.showTimestamps: show chat timestamps on hover, always, or never
  • New setting pi.toolDisplayMode: choose compact, normal, or verbose tool block expansion

v0.9.0

#

Added

  • Images can now be pasted into chat messages
  • Local dictation is now available on Windows x64/arm64 and Linux x64/arm64
  • pi.diagnostics.enabled: write optional troubleshooting logs to the Pendant Diagnostics output channel, with a command to export them to a file
  • Diagnostics now include model, thinking level, compaction, token, context, and cost progress details
  • DeepSeek provider setup in onboarding and API-key helpers

Changed

  • Rounded chat surfaces now use slightly tighter corners

Fixed

  • Linked files in chat now match surrounding text styling and use only link color
  • Code block copy buttons now sit inside code blocks
  • File context pill text is now easier to read
  • Image attachments in user messages are now centered
  • macOS dictation now includes its required local speech runtime
  • Closing the package manager now stays closed while background refreshes finish
  • Tool block headers are now vertically aligned
  • Sidebar updates no longer duplicate after VS Code recreates the pi view
  • Package manager refreshes now stay responsive when checking many changed packages
  • Workspace file and image links now reject symlink paths that resolve outside the open workspace
  • File context pills now reveal the full path on hover

v0.8.1

#

Added

  • Local microphone dictation in the composer using on-device speech-to-text on macOS, based on whisper.cpp
  • A modal dialog for managing pi packages
  • pi.voice.enabled: show or hide the local microphone dictation button
  • pi.voice.model: choose which built-in local dictation model to use for faster or more accurate on-device transcription
  • pi.restoreLastSession: reopen your last chat session automatically when one exists, with a fresh chat opening by default if you do not have any saved sessions yet

Changed

  • UI Improvements
    • Long streaming responses render more smoothly
    • Long user messages are now shortened and expandable/collapsible
    • Steering and Follow-up delivery controls now live in one dropdown with clearer options
    • The thinking-level dropdown now marks the current level more clearly and is much more compact
    • Choosing a thinking level now returns focus to the chat input automatically
    • The model selector dropdown now reanchors itself while filtering so it stays aligned with the model button
    • The chat input text and placeholder are slightly larger for readability, with optional semibold styling
    • Clicking empty space in the chat input area now focuses the textbox
    • Clicking the file context pill now returns focus to the textbox
    • File autocomplete now reacts much faster while you type
    • Folder mentions selected from file autocomplete can now be opened from their message badges too
    • The scroll-to-bottom button now always stays above the full composer area
    • Focusing the chat input no longer changes the composer border color
    • User-message copy and fork buttons now sit inside the bubble with subtler styling and reserved text space
    • The info button menu now uses much more compact items
    • New setting pi.compactChatBox: when disabled, shows a 2-line chat textbox by default
    • New setting pi.semiboldChatInput: keep or disable semibold text in the chat input and its placeholder
    • New setting pi.accentUserMessageBubbleBorder: keep or disable the accented border color on your own message bubbles
  • Fixed an issue that caused the scrollbar to disappear below the chat box
  • Settings are now grouped into concrete categories such as Runtime, Sessions, Tools, Prompts, Resources, Discovery, Export, Dictation, Context, and Style
  • The Disable Theme Discovery setting has been removed

Fixed

  • The transcript now resumes live auto-scroll more reliably after you jump back to the latest output
  • Session titles now stay consistent between the session list and the chat header when reopening a saved chat
  • Expanding and collapsing long user message bubbles now animates smoothly
  • Mermaid diagram modals now open edge-to-edge in the sidebar without rounded card borders or drop shadows
  • Routine update checks no longer show a redundant "pi is up to date" notification
  • MiniMax models now show the proper MiniMax logo in the model selector
  • Ollama models now show the proper Ollama logo in the model selector
  • File autocomplete matching is now fully case-insensitive
  • Folder matches now appear correctly in file autocomplete results
  • File autocomplete now finds looser fuzzy matches
  • File context pills in the chat log now match the composer pill style exactly
  • In-chat notifications can now be dismissed with a subtle close button, and warning messages no longer repeat a leading warning emoji
  • Command failures now surface in the sidebar when it is open, with VS Code message fallbacks when needed
  • File and session links outside the current workspace now explain why they cannot be opened
  • Missing inline image previews now show an in-place unavailable state
  • The Previous 7 Days section now starts expanded in both the session start page and the session sidebar
  • In-chat error and warning notifications now keep their icon, text, and close button vertically aligned

v0.7.3

#

Added

  • New Settings:
    • pi.toolPreset: choose how pi starts with tools enabled (default, review, none, or custom)
    • pi.customTools: choose which tools are available when pi.toolPreset is set to custom
    • pi.offline: start pi in offline mode and skip startup network operations
    • pi.disableContextFiles: disable loading AGENTS.md and CLAUDE.md
    • pi.systemPrompt: replace pi's default system prompt for new runs
    • pi.appendSystemPrompts: append extra prompt text to pi's active system prompt
    • pi.extraExtensions: add extra pi extension paths to load on startup
    • pi.extraSkills: add extra pi skill paths to load on startup
    • pi.extraPromptTemplates: add extra prompt template paths to load on startup
    • pi.disableExtensionDiscovery: disable automatic pi extension discovery
    • pi.disableSkillDiscovery: disable automatic pi skill discovery
    • pi.disablePromptTemplateDiscovery: disable automatic prompt template discovery
    • pi.disableThemeDiscovery: disable pi theme discovery without affecting the extension's own UI theme
    • pi.spacing: control vertical spacing between chat elements (compact, normal, relaxed)
    • pi.showSeparators: show or hide horizontal separator lines when an agent finishes
    • pi.cornerStyle: choose between rounded and sharp corners for UI elements
  • Command palette and info-menu actions to list, install, remove, update, and manage pi resources

Changed

  • Tool block content area now has a clearer contrasting background than the header in both dark and light themes
  • sharp corner style applies to all UI elements including buttons, model selector, thinking level controls, and context bar
  • Stop is now more reliable during retries and active bash runs
  • Session restores and long runs feel smoother in the sidebar
  • File autocomplete feels more responsive while you type
  • Find in chat now stays responsive in long transcripts by jumping between matches without repainting every result

Fixed

  • Fresh sessions started with prompts or skills now keep readable titles
  • Fresh sessions started by directly invoking a skill now keep the skill name as the title
  • Fresh sessions with auto-attached editor or git context now keep the typed first message as the title
  • Session titles now drop leading slash-command prefixes like /command and /command:mode
  • Sharp corner mode now also applies to the session start page, onboarding wizard, and session sidebar surfaces
  • The onboarding wizard once again resumes correctly after install and shows provider, auth, review, and model steps
  • Incompatible pi installs no longer force the onboarding screen to appear automatically
  • The session start page no longer gets replaced by an empty chat during startup
  • Streaming sessions once again show the elapsed working time next to the live cursor
  • Exported HTML chats now open correctly from the info menu
  • pi.context.includeGit once again affects the auto-attached context preview and prompt content
  • An empty custom tool list now correctly disables tools

v0.7.2

#

Added

  • Font customization settings: pi.fontFamily, pi.fontSize, pi.fontWeight, pi.fontStyle
  • /compact slash command to trigger context compaction from the chat input
  • HTML exports are now stored in a .cache folder instead of the project root by default (pi.exportFolder)

Changed

  • Updating pi from the info menu now runs in the background
  • System messages and error cards no longer have a left border accent line

Fixed

  • Bottom padding near the composer now updates correctly when messages are queued

v0.7.1

#

Added

  • Kimi For Coding and MiniMax providers in the onboarding picker
  • Drag to reorder queued messages via a grip handle on the left side

Changed

  • Increased bottom padding in the message list for better readability near the composer

Fixed

  • Streaming indicator no longer gets stuck after long-running agent work
  • Sessions restore correctly on extension startup
  • Background process completions, such as rm -rf, render as tool results instead of info notifications
  • Thinking blocks no longer stutter during streaming
  • File autocomplete shows full paths for duplicates so they are easier to distinguish
  • Update notifications are announced in chat and the info button is badged when a new version is available
  • Session start page is shown on startup instead of jumping into a blank chat
  • Queued messages now behave correctly after compaction, while switching sessions, and during background work
  • No duplicate progress indicators when switching between working sessions

v0.7.0

#
  • Initial release