@ozancakir/pi-pop

Pop open a floating viewer to read Pi coding agent panels: Shift+Alt+arrow (or /pop) shows any collapsed panel's content without expanding it or snapping the scroll (cross-platform, works over SSH); scroll with the mouse wheel. Ask the agent to "show the

Packages

Package details

extension

Install @ozancakir/pi-pop from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:@ozancakir/pi-pop
Package
@ozancakir/pi-pop
Version
0.1.2
Published
Jul 10, 2026
Downloads
414/mo · 414/wk
Author
ozancakir
License
MIT
Types
extension
Size
34.8 KB
Dependencies
0 dependencies · 2 peers
Pi manifest JSON
{
  "extensions": [
    "./extensions/pi-pop/index.ts"
  ],
  "image": "https://raw.githubusercontent.com/ozancakir/pi-pop/main/screenshots/with-pi-pop.gif"
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

pi-pop

Pop open a floating viewer to read Pi's collapsible panels — without your scroll jumping around.

Pi's conversation fills up with collapsible panels (tool calls, outputs, context). pi-pop gives you a pop-up viewer to read the full contents of any of them, right where you are. It shows a panel's expanded content without actually expanding it, so nothing in the conversation moves and your scroll position is never touched.

pi-pop in action

Install

pi install npm:@ozancakir/pi-pop

Or from git: pi install git:github.com/ozancakir/pi-pop

Pi extensions run with full system access — review the source before installing. pi-pop ships no dependencies and no native code; it's a handful of small files under extensions/pi-pop/.

Use it

Press Shift + Alt + ↓ or Ctrl + Q (or run /pop) to open the viewer. Inside:

Key Action
← / → previous / next panel
↑ / ↓ or mouse wheel scroll the content
Shift + ↑ / ↓ or PgUp / PgDn jump a page
Esc close

Every collapsible panel also gets a dim / in the left margin so you can spot what's worth opening.

Ask for a specific panel

Just tell Pi in plain language and it opens the viewer on the panel you mean — it calls the pi-pop-show tool for you:

  • "show the hypa result" → opens the newest panel titled hypa
  • "show the last python3 output" → opens it in the viewer

Because the agent opens it (no keypress), your scroll position is never touched. Or do it directly:

/pop hypa        # open the newest panel whose title matches "hypa"

Choose which panels show up

By default the viewer lists panels that hide content. Change that just by asking Pi in plain language — it calls the pi-pop-config tool for you:

  • "show python3 outputs in the panel viewer" → added
  • "stop showing grep results in panels" → hidden

Or do it directly:

/pop-config show python3     # force-show panels whose title matches
/pop-config hide Grep        # hide matching panels
/pop-config remove python3   # drop a rule you added
/pop-config maxlines 3       # cap collapsed panels at 3 lines (0 = off)
/pop-config list             # show current config
/pop-config reset            # clear rules

Rules are case-insensitive text or regex matched against a panel's first line, saved to ~/.pi/pi-pop.json.

Keep the conversation tight

Long panels take up a lot of room even when collapsed, so pi-pop caps them at 5 lines by default, with a dim …N more lines (pi-pop) footer — the viewer still reads the full thing. Change the cap:

/pop-config maxlines 3     # or any number
/pop-config maxlines 0     # turn the cap off

Or just ask: "cap collapsed panels at 3 lines".

Change the shortcut

The default is Shift+Alt+↓ and Ctrl+Q — two keys because no single one survives every terminal (macOS Terminal.app strips modifier+arrow combos; VS Code grabs some single Ctrl keys). Use whichever fires in your terminal, or set your own in ~/.pi/pi-pop.json (any of Pi's key specs — restart Pi after editing):

{ "keys": ["shift+alt+down", "ctrl+q"] }

In a stubborn terminal, /pop always works with no key at all.

Why a pop-up?

Pi renders into the normal terminal buffer (so scrollback, copy, and search keep working). The cost: re-drawing an off-screen panel snaps your view to the bottom. Toggling a panel in place — or any in-conversation navigation — hits that.

Without pi-pop, reading a long collapsed panel means scrolling around and getting yanked back to the bottom:

without pi-pop

pi-pop sidesteps it entirely: it reads content into a floating overlay and never mutates the conversation, so there is nothing to snap. Works everywhere — any OS, and over SSH.

Why not just click a panel to open it?

Because it can't be made reliable, for the same reason. To know which panel you clicked, the click has to be forwarded to the app — which means turning on terminal mouse reporting. But when the terminal forwards a click to the app while you're scrolled up, it first snaps your viewport to the bottom (that's the terminal's own behavior, before the app ever sees the event — there's no preventDefault in a terminal). So clicking a scrolled-up panel yanks you away from it.

The clicks that don't snap — plain click, Cmd-click, Shift-click — are the ones the terminal handles itself (native selection, opening links) and never sends to the app, so pi can't tell which panel they hit. Forwarded-and-snaps vs native-and-invisible: you can't have both.

This isn't Pi refusing the feature — it's a consequence of Pi rendering into the normal buffer on purpose (so your scrollback and copy keep working) rather than taking over the whole screen. The keyboard shortcut opens the viewer over any panel without a click, so nothing is lost.

License

MIT © Ozan Cakir