Skip to content

v0.4.3

Choose a tag to compare

@github-actions github-actions released this 11 Jun 16:38
· 1307 commits to main since this release

Paneflow 0.4.3

Added

  • Composer: a bottom-anchored multi-line input (secondary-shift-space) over
    the focused pane. Enter pre-fills the agent through bracketed paste
    without submitting, so the prompt is yours to review before it is sent;
    secondary-enter pre-fills and submits in one keystroke.

  • Named broadcast groups: assign panes to a group (secondary-shift-b to
    toggle membership, secondary-shift-m for the picker), each marked by a
    3px coloured edge stripe. The Composer fans one prompt out to every live
    member of the active group and shows a transient recap of who received
    it, so a broadcast is never silent.

  • Queued prompts for busy agents: a prompt sent to a generating agent is
    held ("1 queued" tab chip) and flushed automatically on that session's
    next idle transition, instead of being dropped or spliced into the
    running turn.

  • Attention Queue (secondary-shift-k): a single overlay listing every agent
    waiting for input across all workspaces, with its question and how long
    it has waited, longest-waiting first. Enter warps straight to that pane.

  • Launch Pad (secondary-shift-l): worktree, split, agent launch and
    first-prompt prefill in one gesture.

  • Agent status beyond Claude Code and Codex: the sidebar states, tab dots
    and notifications now apply to any agent CLI launched through the shimmed
    PATH, identified by its binary name; an unrecognized tool is reported as
    itself instead of being mislabeled as Claude.

  • Scrollbar match rail: an active search projects every match as a tick on
    the scrollbar track (decimated to the pixel grid, so 10 000 matches cost
    the same as 10), with the existing proportional track click to jump.

  • Fleet grep: from any pane's find bar, the "Fleet" toggle (or Alt+F) runs
    the same query across every pane of every workspace off the render
    thread, lists the matching panes with counts, flashes a transient match
    badge on their tabs, and Enter teleports with the local search pre-armed.

  • Per-pane font zoom: Ctrl+= / Ctrl+- / Ctrl+0 (Cmd on macOS) change the
    focused pane's font size by 1 px steps within 8-32 px, with the PTY grid
    reflowing like a window resize. Persisted per pane across restarts;
    panes without an override keep following the global setting.

  • Fleet observability: the port/process scan now attributes results to each
    pane. Tabs show a compact identity pill for the agent CLI running inside
    (PID-detected across 16 known agents, persisted across restarts as a
    dimmed "last known" until confirmed) and per-pane port badges, clickable
    when the port belongs to a frontend dev server. When a pane announces a
    URL whose port is actually owned by another pane, its badge turns into an
    alert naming the owner.

  • Errored agent state: when an agent CLI launched through the shimmed PATH
    exits non-zero, its session turns red (tab dot + sidebar badge) and the
    desktop notification says "agent exited (exit N)" instead of a false
    "agent finished". Human interrupts (Ctrl+C, pane close, external kill)
    still count as finished, never as errors.

  • Stalled agent detection (on by default): a thinking agent that emits no
    hook activity for 5 minutes is flagged "stalled" in the sidebar, with one
    desktop notification per stall episode. Threshold configurable via
    agent_stall_threshold_secs; kill switch via agent_stall_detection.

Changed

  • Dev-server detection is now OS-authoritative. A port badge's clickable
    link is derived from the command line of the process that owns the
    socket, so it no longer depends on catching the dev server's banner line
    in the terminal output. The link survives an in-shell restart (nodemon, a
    plain re-run) that re-binds the port, and sustained agent output no longer
    starves the scan that picks up new ports.

Fixed

  • Agent sessions are reaped the moment their pane closes instead of
    lingering up to 30s for the periodic sweep, covering the cases where the
    exit hook never arrives (shim killed, agent started without the shim).
  • A recycled process id can no longer keep a finished agent's status alive:
    a session pins its process start time, and a reused pid whose start time
    differs is treated as gone.

Full changelog: v0.4.2...v0.4.3