v0.19.0Latest
Agents sidebar and plan usage
Agents in the sidebar, plan usage in view
Paneflow 0.19.0 puts the agents you run in one place. An Agents section at the bottom of the sidebar lists the agents of the active space, most urgent first, and Cmd/Ctrl+Shift+J walks the same order across every workspace. A plan usage capsule in the sidebar footer shows how much of your Claude Code or Codex subscription is left, and Settings › Usage adds the limits and a year of daily activity for every account. Settings › Agents now updates each agent's CLI with the tool that installed it.
Panes recover on their own: a session restore relaunches shells the host lost, and a busy host makes new panes wait instead of refusing them. The terminal engine moves to Ghostty 1.4.0, which fixes three memory safety advisories. The Composer, broadcast groups, the Attention queue, keyboard pane swap, hide pane and copy mode are removed.
Upgrade notes
- Removed shortcuts and actions.
Cmd/Ctrl+Shift+Space(Composer),Cmd/Ctrl+Shift+BandCmd/Ctrl+Shift+M(broadcast groups),Cmd/Ctrl+Shift+U(Attention queue),Cmd/Ctrl+Shift+S(swap pane) andCtrl+Shift+X(copy mode) are no longer bound by Paneflow, so in a terminal those keys now reach the shell or the agent. A custom entry inshortcutsnamingopen_composer,toggle_broadcast_member,open_broadcast_groups,open_attention_queue,swap_pane,hide_pane,resume_ended_sessions,remove_ended_sessionsortoggle_copy_modeis skipped with a warning in the log and the rest of the file loads normally; delete it to silence the warning. None of these features kept state, so nothing else needs migrating. What replaces them is listed under Removed. - Sessions that outlive the update end as
Incompatible. The session host embeds the terminal engine, and a host started by 0.18.1 cannot serve a desktop built on Ghostty 1.4.0. Updating from inside Paneflow stops the host before restarting, so this only happens after an update made outside the app (a system package, Homebrew, or an MSI installed by hand) or when you choose Keep sessions running before updating. Each such session ends withRetryandStop host and restart; chooseStop host and restartto start the new host, or let the sessions finish first. - Windows: the interface style you had is now called Mica. Settings › Appearance › Interface style offers Themed, Mica, Blended on Windows. Mica is the former Blended, with the same look, and an existing configuration keeps it. The new Blended uses the Acrylic backdrop under a veil of theme color, as on Linux; pick it again to try it. It is stored in the new key
windows_material_veil. - A finished clone no longer opens by itself. The clone dialog closes as soon as the clone starts and the clone continues in a bubble at the bottom right; click Open in the bubble to add the workspace.
- Listing
Noto Color Emojiinfont_fallbacksno longer brings emoji back on Linux. Distributions such as Fedora 43 and later ship that font only in the COLRv1 format, which the Linux renderer cannot draw, so emoji cells stay blank. The setting used to help by accident: it removed the font from the font database, which let a monochrome emoji font such as Noto Emoji draw the emoji instead. The font now stays loaded, as with the default settings. With Noto Emoji installed, uninstalling the COLRv1 font or hiding it from fontconfig brings monochrome emoji back. - Scripts: the session host now answers
-32025(checkpoint too large) for an attach whose checkpoint would exceed 64 MiB, where it used to answer-32000, which now only means capacity that frees itself.surface.send_keystrokerejects a chord with modifiers and no key, such asctrl-, with-32602andinvalid keystroke: <chord>.
Added
- An Agents section at the bottom of the sidebar lists the agents of the active space by urgency. Agents waiting for input come first, then failed ones, finished ones whose result you have not seen yet, working ones, idle ones, and last the agents that report no status. Each row shows the agent's logo, the tab title, its status and the workspace name; clicking a row, or pressing Enter on it from the sidebar's keyboard cursor, takes you to the agent's pane, and opening a finished agent's tab marks its result as seen. Collapse the section from its
Agentsheader, and drag its top edge to resize it, or focus the edge with Tab and use the arrow keys (16 px steps), Home, End and Enter. The height stays between 95 px and 620 px, and Paneflow remembers it and the collapsed state across restarts. Screen readers get a name and a role for every row. No statustells a silent agent apart from an idle one. The state of an agent comes only from the OSC 7501 program status it declares. An agent that has not answered the protocol's support query nor declared a status after 3 seconds is labeledNo status, with a tooltip naming the first version that reports it when Paneflow knows it, such as Claude Code 2.1.295.sidebar_show.agentsshows or hides the section (on by default), from Customize sidebar › Show › Agents, the Show the Agents section in the sidebar command, orpaneflow.json.- A plan usage capsule in the sidebar footer shows how much of your Claude Code or Codex subscription is left. Between the filter and the Settings button, a ring and a percentage give the most constraining limit of the active space's accounts, in the accent color below 80 %, amber from 80 % and red from 95 %. Clicking it, or pressing Enter on it, opens a bubble with every account: the session, weekly and (for Codex plans that have one) monthly windows, when each resets, and whether your pace reaches the weekly limit before the reset. An account without data says why and what to do. Hide the capsule from Customize sidebar › Show › Usage or with
sidebar_show.usage. - Settings › Usage gathers the limits and the activity of every account. One tile per account shows its week and session rings, reset times and pace. Below, a 53-week register per account counts your turns, tokens or active time each day on one shared scale; move through the days with the arrow keys. Activity is counted by Paneflow on this computer and kept in
~/.paneflow/usage/(plans.jsonandledger.json); no prompt or response text is stored. - Import past activity fills the registers from your existing transcripts. The first time the worker starts with an empty ledger, and whenever you choose Import past activity on the Usage page, Paneflow reads your Claude Code transcripts and Codex rollouts in the background, up to 10,000 files or 2 GB, and books the days it does not count yet. Importing again never counts a day twice. Claude Code keeps transcripts for 30 days by default, so older days stay empty. Scripts can run the same import through the worker's
usage.importmethod. - Paneflow reads Claude Code limits through a managed status line. Installing the Claude integration now sets your
statusLinetopaneflow-ai-hook StatusLinewhen you have none, which passes the limits Claude Code reports after each response to Paneflow and prints nothing. A status line of your own is never changed: Paneflow then reads the limits by asking the installed Claude Code binary (claude -p, with no prompt), and Codex limits come fromcodex app-serverand the Codex session files. These probes run at most once every 30 seconds per account, two at a time, with a 10 second deadline. Paneflow never reads your credentials or tokens, and never calls a usage API itself. usage.plan_limits: falsehides the capsule and removes the managed status line (on by default).- Settings › Agents updates each agent's CLI. Click an installed agent to unfold its settings: an Update button, where the CLI lives with a copy of its update command, and the Paneflow hooks toggle for Claude Code and Codex. When a newer release exists on npm (Paneflow asks
registry.npmjs.orgwhen the page opens), the row shows the version it would install and its own Update button. Paneflow works out who installed the CLI from where it really lives and updates it with that tool: npm into its own prefix, bun, pnpm, Yarn, Volta, Homebrew, or the agent's own updater (claude update,opencode upgrade,pi update --self). It never touches an install it cannot prove, such as a WinGet, Chocolatey or mise install or a copy inside a project'snode_modules, and says how to update it instead. Update with lets you pick the tool instead: the agent's built-in updater, npm, bun, pnpm, Yarn, or its official installer (PowerShell on Windows, curl elsewhere), saved inagents.update_methods; a tool other than the one that installed the CLI is flagged because it installs a second copy. The Update button only shows when an update is available, or when Paneflow cannot know the latest release. Open sessions keep the old version until they restart. - Restore relaunches the panes the host lost. When Paneflow restores a session after a reboot, a host crash, a Windows shutdown or
paneflow host stop --force, a terminal pane whose process the host lost, or whose shell ended with a non-zero code or a signal, starts a fresh shell once in its saved directory (or your home directory if that directory is gone) instead of showing Restart. A pane the host no longer knows is recreated. Nothing is replayed, a shell you ended withexitkeeps its button, and agent panes keep resuming their conversation as before. - Windows: a Blended interface style with an Acrylic backdrop. Blended now blurs what lies behind the window and paints a theme veil over it (0.72 on dark themes, 0.80 on light ones), with a 0.35 shade under the terminal, as on Linux.
windows_material_veil: trueselects it; Mica stays the default for existing configurations. - The clone dialog runs clones in the background. It now looks like the command palette (560 px wide, no dimmed backdrop) and closes when the clone starts. A 224 × 44 px pill at the bottom right shows the progress; click it for a 320 × 152 px card with Cancel while it runs, Close, Show in Folder and Open once it is done, and Retry after a failure. Cancel stops the git or gh process tree and deletes the partial folder. Starting a second clone while one runs says
A clone is already in progress.
Changed
- The command palette opens on categories. With an empty query it lists the commands that apply right now (an open search, a conversation offer, a pending write request), then nine categories: Panes, Tabs, Workspaces, Sidebar, Terminal, Markdown, Agents, Appearance and Paneflow. Opening one scopes the search to it, and Escape or Backspace on an empty query steps back. Typing at the top level still searches every command. The palette is a fixed 560 px wide, and every command now has a Hugeicons glyph. Fourteen rows for commands you reach by shortcut or menu (such as Toggle zoom, Copy, Paste, scroll by page and jump between prompts) leave the palette; their actions and shortcuts are unchanged.
- Settings is rebuilt on new controls. Buttons come in raised, soft and ghost styles with animated hovers, selects open a bordered menu with a check on the chosen option, and switches slide over 180 ms. Destructive buttons such as Delete space, the worktree Remove and the snapshot Delete are red. The Settings sidebar and pages use Hugeicons glyphs, theme presets are drawn as tab-style badges in each theme's code colors, and the Zed logo in the editor select is a tinted SVG.
- Settings follows the interface material. On Windows and Linux, opening Settings no longer turns the terminal material off: the page takes the pane card color. Settings cards on every platform use the menu panel surface with a 1 px border at 0.6.
- Light themes lift cards off the page. The Settings page is tinted 5 % toward the text color so cards stand out, the active tab in a detached pane window sits on the card color, and on Linux the translucent light window veil goes from 0.62 to 0.80.
- The right dock follows the interface material on Windows and Linux (macOS stays opaque), reuses the pane tab chips (64 to 208 px wide, scrolling with fades, the + button on the right) and uses Hugeicons glyphs.
- Switching density animates. Moving between compact and comfortable panes blends the gutters, dividers and card corners over 280 ms, and instantly with
reduce_motion. In a comfortable card the drag and drop veil now follows the card's corner at a 16 px radius instead of 8 px, and compact tab chips use 4 px corners. - The title bar is 40 px tall and the panes and sidebar sit closer to it. The window buttons now have the same space above and below them, the pane grid starts right under the title bar, and the first sidebar row moves up by 4 px. On macOS the traffic lights move down 4 px to stay centered.
- The window buttons sit on the right in round buttons. Where Paneflow draws its own title bar (GNOME on Wayland, for instance), minimize, maximize and close now always appear on the right in that order, as 24 px tinted round buttons, whatever button layout the desktop sets. Detached pane windows match.
- Windows: the window buttons use the system's own glyphs. Minimize, maximize, restore and close are drawn with Segoe Fluent Icons (Segoe MDL2 Assets on Windows 10), the glyphs Windows draws on its own caption buttons, instead of Paneflow's icons.
- The Install hooks button leaves the agent row. The Paneflow hooks of Claude Code and Codex are now a toggle in the agent's unfolded settings, with the step Codex still asks for after installing.
- Agent states in the sidebar are badges. An agent waiting for you now reads
Need youinstead ofInput, andNeed you,Error,DoneandNo statussit in a tinted badge of their color, without the bell, cross or dot in front, in the workspace tree and in the Agents section. Pull request states and the working spinner are unchanged. Cmd/Ctrl+Shift+Jreaches every agent that needs you, in the Agents section order. It used to cycle only agents waiting for input, in workspace order. It now goes through agents waiting for input, then failed agents, then finished agents whose result you have not seen, the most recent first, over every workspace with the active space first, whether the Agents section is shown, collapsed or hidden.- An agent's pane is released as soon as it exits. When an agent such as Claude Code quits, its tab icon, title and Agents row return to the shell within milliseconds of the prompt coming back, instead of about half a second.
- A busy host makes new panes wait instead of refusing them. With 8 launches already pending, the session host queues a new or restarted pane for up to 5 seconds instead of failing with
launches are still unresolved, so restoring many panes at once no longer leaves some of them ended. The desktop also retries a busy host and a pending launch on its own for up to 60 seconds, showingReconnecting to the local hostafter the first second, and Retry replays what the pane was first asked to do. - The terminal engine moves to Ghostty 1.4.0. The pinned
libghostty-vtarchive moves from Ghosttyb699ea79to thev1.4.0tag (83fb9562), built with Zig 0.17.0. - A soft reset (DECSTR,
CSI ! p) now resets the terminal state a program left behind, where it used to be ignored: cursor and keyboard modes, origin and insert modes, line wrap, the scroll region and margins, text attributes, the cursor shape, and the 256-color palette, which returns to your theme's colors. The screen content and the cursor position stay. CSI 19 tis answered with the screen size in characters (CSI 9 ; rows ; columns t).- DECRQM answers
4(permanently reset) for the twelve ANSI modes that xterm reports that way, such as SRTM (mode 5) and GATM (mode 1), instead of0(not recognized). - The OSC 7501 support query lists what Paneflow accepts.
OSC 7501 ; ?is now answered with?:states=idle,working,done,blocked,error:kinds=permission,question,auth, as revision 0.4 of the program status protocol specifies, instead of a bare?. - Shortcuts on Windows follow the active keyboard layout. Default and custom shortcuts are now resolved through the Windows keyboard mapper, so a chord on a shifted symbol is matched against the layout in use (AZERTY as well as US) instead of a fixed US mapping, and switching layouts with Win+Space takes effect without a restart.
- An invalid custom shortcut no longer disables the default one. A chord in
shortcutsthat cannot be parsed, such as"ctrl-", is skipped with a warning and the action keeps its default shortcut; it used to remove it. - Animations run at up to 30 frames per second in power-saving mode. When the operating system reports a power-saving state, GPUI caps frame-by-frame animations, such as hover and sidebar transitions, at 30 per second. The agent spinner and keystroke echo keep their usual rate; a keystroke typed while such an animation runs can wait one 33 ms frame instead of a 16.7 ms one.
Fixed
- Fallback fonts stay available on Linux. A fallback font without an
mglyph, such as a Nerd Font symbols font, is no longer removed from the font database for the rest of the session after it is first used. - No more Vulkan panic when a surface is destroyed on Linux ("SwapchainAcquireSemaphore still in use").
- No more crash on Windows when text contains U+2028 or U+2029, the Unicode line and paragraph separators.
- A memory leak in the text system is fixed: line wrappers no longer keep a text system alive after it is dropped.
Removed
- The Composer and broadcast groups are gone.
Cmd/Ctrl+Shift+Spaceno longer opens a prompt input over the pane,Cmd/Ctrl+Shift+BandCmd/Ctrl+Shift+Mno longer manage broadcast groups, panes lose their colored group stripe, and the matching command palette entries are removed. Prompts are no longer queued for a busy agent, so the1 queuedchip and the pane menu's Cancel queued prompt item are gone too. To send one prompt to several agents, usepaneflow send <selector> "..." --broadcast. - The Attention queue is gone.
Cmd/Ctrl+Shift+Uand the Attention queue… command palette entry no longer open the overlay that listed waiting agents, failed programs, and write requests. The Agents section andCmd/Ctrl+Shift+Jnow cover waiting and failed agents, the button beside the space name still points to agents that need you in a hidden space, and write requests are still answered in the target pane or from the command palette. - Keyboard pane swap is gone.
Cmd/Ctrl+Shift+Sand the Swap pane command no longer arm a swap; drag a pane onto another to swap them. - Hide pane from layout is gone, from the pane menu and the command palette, with no replacement: a pane can no longer leave the layout while its session keeps running.
- The bulk ended-session actions are gone. Resume ended sessions in the workspace menu and the Resume every ended session and Remove every ended session commands are removed; resume or remove ended sessions one by one from their sidebar rows.
- Copy mode is gone.
Ctrl+Shift+X, the Toggle copy mode command and theCOPYbadge are removed. Select with the mouse and copy with the Copy shortcut.
Security
- The terminal engine fixes three memory safety defects that Ghostty published on 2026-10-27:
- GHSA-qjfx-r533-6vx3: a use-after-free when the scrollback limit prunes the page that holds the cursor, which Paneflow's bounded scrollback could trigger on ordinary output.
- GHSA-w9q4-5jvv-mcv4: an invalid cursor style and hyperlink after a scrollback clear prunes the cursor's page, reachable with
CSI 22 JorCSI 2 Jat a shell prompt. - GHSA-jqr7-69mm-v35h: a row count truncated to 16 bits when a very wide page is narrowed.
Install and validation
Download the signed artifacts from this release or use the installation instructions.
Every primary artifact carries a .sha256 sidecar and a minisign .minisig; each AppImage also ships an .AppImage.zsync for delta updates. 35 assets in total.
Pipeline: run 41421859986.
Legs that passed:
- Build:
x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,aarch64-apple-darwin,x86_64-pc-windows-msvc, each gated bycargo fmt --checkandcargo clippy --workspace --locked --target <target> -- -D warnings - Release test gate on Linux x86_64:
cargo test --workspace --locked - Package smoke tests: Debian 12 and Ubuntu 22.04 (
.debpostinst), Fedora 40 and openSUSE Tumbleweed (.rpmpostinst), Arch Linux (tar.gzbinary), Windows MSI install and relay - Auto-update end to end on Linux x86_64
Full Changelog: https://github.com/arthjean/paneflow/compare/v0.18.1...v0.19.0