Skip to content

Releases: xseman/pando

v0.9.0

Choose a tag to compare

@xseman xseman released this 01 Nov 10:21
9dd45f2

0.9.0 (2026-11-01)

Features

  • cli: session send and keys wake an asleep session (bc51e1b)
  • daemon: a worktree's shells move among each other, whatever their parent (0844ecc)
  • daemon: sessions sleep after an hour by default (c16104b)
  • ui: a + after the editor tabs opens a file or a session (dfcb69f)
  • ui: a click on any Spaces project's name switches to it (5cbeccc)
  • ui: a Customizations tab beside Sessions (3c38b76)
  • ui: a double click past the tabs shows the welcome screen (38cc6ac)
  • ui: a Spaces project's chevron under the pointer is raised as a button (43a58f1)
  • ui: a tab held at the bottom's middle opens a row under all groups (d0af04d)
  • ui: a worktree's sessions share its Terminal panel's shells (92c6216)
  • ui: alt+a goes to the next session waiting on you (3eab59f)
  • ui: alt+n opens the + beside the tabs, and the palette has it (16c60d7)
  • ui: ctrl+shift+d deletes the line in the editor (484ff9f)
  • ui: Resume Session in the + menu (7f4bdd2)
  • ui: Spaces is called Sessions (90fb580)
  • ui: the drawers sit under a TOOLS strip, as NO SESSIONS in Spaces (73cc994)
  • ui: the empty area has the +, alt+s starts a session anywhere (5f38a7f)
  • ui: the focused group's content is framed on every side (f858819)
  • ui: the focused group's frame is drawn heavy (7d6c151)
  • ui: the panel is framed apart and moves into the sidebars (c36992d)
  • ui: the sidebar strips read in title case (7aca2a9)
  • ui: tree chevrons are VS Code's codicon twisties with Nerd Font icons (d1930b9)

Bug Fixes

  • daemon: asleep sessions keep their name (f973339)
  • daemon: only an agent sleeps on its own (482cb93)
  • daemon: Updated moves on real work, not on a redraw's flip (4eb1a40)
  • lsp: inserts at one position keep the server's order (4dc3d21)
  • ui: a long session name no longer drops its tab off the strip (690df0d)
  • ui: a selected folded header with whitespace marks keeps its ⋯ (c11e09d)
  • ui: a session dropped on a session joins its strip (8278c1e)
  • ui: a session in a group without the keyboard keeps drawing (783f524)
  • ui: a terminal's screen no longer fetches the other terminals (dfa6354)
  • ui: an esc with a mouse report behind it stays an esc under tmux (df69687)
  • ui: dimmed text is a color, not SGR faint (7f87f8f)
  • ui: key hints say alt+, not M- (c3467c1)
  • ui: output no longer resizes a session between two TUIs (867981d)

Performance Improvements

  • ui: a file's indent guides are counted once per text (702e85a)
  • ui: a frame takes what the last frame drew (0abc389)
  • ui: a gutter's line number styles are built once per color pair (86efe6b)
  • ui: a modal measures its items once, not on every frame (0f10cd0)
  • ui: a screen event fetches only the terminals of its session (864971f)
  • ui: keys typed into a modal draw it over the frame drawn once (f22b788)

Documentation

  • demo: hero shows two sessions at work (846528f)
  • demo: re-record every GIF with panel borders (6c0e20f)
  • demo: re-record the GIFs after a frame by frame review (6f6e709)
  • demo: record the tapes with panel borders (8ffbc36)
  • keys: alt+n's row names the resumed session too (2cc3db8)

Build System

  • deps: bubbletea v2.1.1, its renderer's flush about a quarter faster (99a4039)

Maintenance

  • ui: pickers of sessions build their rows in sessionItems (4d314c2)

Testing

  • daemon: the sleep goroutine reads no session the loop rewrites (6e9be0a)
  • daemon: torn sessions file without a race (e56f507)

v0.8.0

Choose a tag to compare

@xseman xseman released this 29 Oct 13:58
b965058

0.8.0 (2026-10-29)

Features

  • daemon: a first config picks nerd icons when a Nerd Font is installed (1f9c17e)
  • font: install Symbols Nerd Font Mono from the nerd-fonts release (6618195)
  • ui: a file or a session dragged out carries its tab under the pointer (505093e)
  • ui: a folded Spaces project counts its sessions (efa1b62)
  • ui: a Spaces project folds on its chevron only, its name switches to it (6e911e5)
  • ui: a title starting with the session name's issue key replaces the name (f0f3b28)
  • ui: drag an Explorer file or a Spaces session into editor groups (e7ef84b)
  • ui: session tabs move among the files' tabs (2e88b39)
  • ui: the harness picker lists the newest sessions' harnesses first (819b398)
  • ui: the status bar offers a Nerd Font when none is installed (c5f04f2)

Bug Fixes

  • daemon: an agent's screen says blocked where /proc is missing (a5e5227)
  • ui: a lit group divider no longer panics on an empty frame list (eb93b32)

Performance Improvements

  • ui: a drag draws only its overlays over a frame drawn once (4be9186)
  • ui: mouse motion draws a frame per 1/60 s, not per motion (ffa44e9)
  • ui: wcSafe line by line, a line the last frame had reused (fbdd830)

Testing

  • font: the offer test installs into the platform's own font directory (052e646)

v0.7.0

Choose a tag to compare

@xseman xseman released this 28 Oct 11:30
b5c141b

0.7.0 (2026-10-28)

Features

  • config: Spaces docks on the right by default (b357326)
  • daemon: list codex, agy and grok subagents too (d91649c)
  • list a claude session's running subagents in Spaces (9260c9d)
  • ui: a double click on a divider evens the two groups beside it (36744e7)
  • ui: a group added or closed shares the room evenly (87acc79)
  • ui: a linked worktree's ✕ in Spaces on hover deletes it (b227a87)
  • ui: a rule over No Sessions folded too (5bc05fc)
  • ui: a search button in Spaces' header (6b5c8fd)
  • ui: a session's ✕ in Spaces on hover kills it (c1fc850)
  • ui: carry a dragged tab under the pointer, as VS Code does (2c263d7)
  • ui: collapse or fold the Source Control drawers at once (2ce0cb8)
  • ui: compare HEAD with a picked branch, tag or typed revision (e1d4d26)
  • ui: ctrl+p and ctrl+shift+p reach their palettes from anywhere (1c0d1b5)
  • ui: ctrl+w or ctrl+d closes a split's group showing nothing (2ae6a0a)
  • ui: discard a folder's changes in Source Control (da68dd5)
  • ui: editor groups in place of the docked session column (bf85723)
  • ui: frame the focused group, pulse one whose session needs you (c82a617)
  • ui: light a diff's hidden-lines row under the mouse (4603941)
  • ui: n on the welcome screen starts a session (74146ef)
  • ui: No Sessions lists its projects a dimmed row each (4186e1b)
  • ui: session tabs in their Spaces glyph color (4fd03de)
  • ui: show a tab's close button while the mouse is on it (ec7dba8)
  • ui: Spaces holds a lone checkout on its heading, groups by state (db9cdc2)
  • ui: Split Sessions in Spaces opens a worktree's sessions side by side (59fe12e)
  • ui: tint session tabs apart from file tabs (d63e08b)
  • ui: toggle comments in every language chroma colours (501a7e5)
  • ui: w, a and 3 on the welcome screen do what its text says (351d9f6)

Bug Fixes

  • daemon: a redraw under claude's idle prompt is not running (21c313e)
  • daemon: a restart keeps a session's Updated (eab0e3e)
  • proto: start the daemon in a systemd scope of its own (eecc07d)
  • ui: a click on the session on screen keeps its tab (0474ebc)
  • ui: a darker green for ok in the light theme (0d08c4e)
  • ui: a session shown without a tab keeps one when another opens (1ebd5d2)
  • ui: ctrl+/ comments a whole selection and takes it back (18626c7)
  • ui: keep the folder picker's path readable without focus (49b3c12)
  • ui: offer no split for a group's only tab dragged over its own group (b5a0fe4)
  • ui: put the status bar's border right on the bar (da66fd8)

Documentation

  • bring the docs in line with the last week's changes (2fecdfe)
  • demo: a hero still with Spaces on the right, tui.gif in the tour (2367e5f)
  • demo: hero with a file and a session side by side, groups.gif (66c44ce)
  • demo: hero with the activity bar (8be7869)
  • demo: re-record every GIF and the hero (76013bc)
  • editor groups replace the session column (a4af052)
  • skill: name sessions after the house style, branch or task (27dcee9)

Testing

  • e2e: pin the right sidebar empty, Spaces starts there now (fe65877)
  • windows: give PowerShell 45s to start on a slow runner (bf13824)

v0.6.0

Choose a tag to compare

@xseman xseman released this 20 Oct 12:44
6d30374

0.6.0 (2026-10-20)

Features

  • config: put the activity bar down the sidebar edge by default (8e4ea57)
  • daemon: keep named databases in config.toml's [databases] (6db19f0)
  • daemon: keep pinned Spaces sessions in state.json (38f2fdb)
  • daemon: put sessions to sleep and wake them (924d119)
  • daemon: tell a screen's width and the directory in front (bbe71e6)
  • db: read and edit SQLite, Postgres and MariaDB through their clients (f6b0fd8)
  • git: blame one line of the editor's text (f6cabb6)
  • git: list files by name pattern, ignored ones too (ecb6f44)
  • keep a scrolled-back session page on its text (db3ff64)
  • lsp: ask for hover, signature help and formatting (5d41bd0)
  • open FILE:LINE:COL from the command line (6312f31)
  • refuse a nested TUI inside a pando session (e52b3c1)
  • run separate pando instances with --instance (292eeb6)
  • show language servers' diagnostics (7a2cdca)
  • ui: a bottom panel with Problems and Output; references inline (855d48b)
  • ui: a prompt header and streaming results in Search (89e2c62)
  • ui: add a Databases view and a table grid (375047f)
  • ui: add a tooltips setting to turn the button tips off (22e71c0)
  • ui: add projects from a folder picker (efb7503)
  • ui: blame the cursor's line in the status bar (dbc1339)
  • ui: describe binary files instead of their bytes (faed33c)
  • ui: dock a session beside an empty editor (62ca895)
  • ui: draw a border over the bottom Terminal panel (cd1f220)
  • ui: draw a rule over each open Spaces project (c58f316)
  • ui: draw indent guides in every tree (f748829)
  • ui: draw indent guides in the editor (9bb7152)
  • ui: draw indent guides in the Explorer tree (351f079)
  • ui: draw the status bar's rule through the middle of a row (0432679)
  • ui: drop New Tab in Session and the Spaces tab count (f0491e4)
  • ui: expand a diff's hidden lines in place (32e9cb4)
  • ui: fold code, light the cursor line, finer scrollbars (c5628d3)
  • ui: format with the language server when no tool is set (d2bd5fd)
  • ui: frame Spaces' Pinned as a resizable pane, under its worktrees (638dff9)
  • ui: group context menus, square corners at the pointer (8e501d2)
  • ui: indent as .editorconfig and the file's own lines say (58d7592)
  • ui: keep a worktree's maximized session, file or Terminal across restarts (2ec4565)
  • ui: keep each project's GitHub lists and fetch them again when old (c6210cb)
  • ui: keep each session's own maximized state (210669d)
  • ui: lay a GitHub pull request or issue out as its conversation (c4978d6)
  • ui: lay the activity bar and status bar out as VS Code's (3d3e357)
  • ui: leave scrolling to a session app that takes the mouse (440e0b5)
  • ui: light status bar items and dialog buttons under the pointer (d2ae7ca)
  • ui: light the Explorer's active indent guide (3fdf529)
  • ui: Light+ code colors on a light terminal (f37fe1f)
  • ui: mark a diff's changes on its scrollbar (9c319b1)
  • ui: mark a file's changes on its scrollbar (af14a09)
  • ui: mark changed lines in the editor's gutter, VS Code's quick diff (d74a808)
  • ui: mark the session on screen in Spaces, untinted rows (5de0977)
  • ui: mark what a picker's query matched, and say when nothing does (9b03964)
  • ui: name an icon button and its key when the pointer rests on it (da5e520)
  • ui: open a terminal's links with ctrl+click (bb9171e)
  • ui: open the GitHub view with only pull requests unfolded (37e3e87)
  • ui: pick the indentation in one dialog (a1a9d90)
  • ui: pin sessions on top of Spaces (021d8c4)
  • ui: resume a conversation from a worktree in Spaces (888c6fe)
  • ui: resume from Spaces' header (b0337a7)
  • ui: reveal the editor's file in Explorer (5e5299c)
  • ui: rule the inline References off the code around them (ab56491)
  • ui: say in the merge dialog when a pull request's checks fail (651060e)
  • ui: sessions as tabs in the editor strip, dragged out to dock (7c46580)
  • ui: set Spaces' Pinned apart by one heavy border, no resize (d9d641a)
  • ui: Settings as a tab, a Manage menu under the gear and F10 (98c4d27)
  • ui: show a cut session name whole in a tip (2ce07e6)
  • ui: show a GitHub page's button tips by the pointer (1fbdc4f)
  • ui: show an agent's state on a tab or terminal that runs it (7231ea7)
  • ui: show the language server's hover and parameter hints ([43f2532](43f2532bcd558cd1ca1f9dc300e5...
Read more

v0.5.0

Choose a tag to compare

@xseman xseman released this 09 Oct 21:06
e242d74

0.5.0 (2026-10-09)

Features

  • a new session runs a terminal or an agent profile (612cec7)
  • a session running a shell command shows as shell (d544a00)
  • daemon: session.screen reports the cursor style the app asked for (b5c170c)
  • pando builds and runs on Windows (#16) (20368fb)
  • ui: ↑ and ↓ in the message box walk the commit messages (6554c42)
  • ui: a + after a project's or a worktree's name starts a session (b020a1a)
  • ui: a click away closes an empty filter (88c3e3a)
  • ui: a click on a session row opens its tab with the news (aac7c1c)
  • ui: a drawer commit shows its whole message on hover and copies it (e74a32e)
  • ui: a file clicked open takes the preview tab until it is kept (1784579)
  • ui: a file's diff shows the whole file with z (e9111c5)
  • ui: a new branch's name is sanitized as VS Code does (e270e88)
  • ui: a new session runs an installed agent, never a bare shell (fd0a4ff)
  • ui: a session's Spaces row counts its tabs (b2256af)
  • ui: a Spaces drag marks the drop with a tinted row between rows (4740bfd)
  • ui: a Spaces drag marks where the row lands, moves it on release (7a7ff17)
  • ui: a tab under the mouse tints in hover_bg (b614371)
  • ui: an unfolded space goes last among the open ones (3863ceb)
  • ui: draw session and terminal tabs like the editor's (ea0476c)
  • ui: give the session's tab strip the buttons and a rule, drop its header (a233865)
  • ui: give the Terminal panel's strip the buttons and a rule (540e6c9)
  • ui: group the Spaces and session context menus by action (628fffa)
  • ui: label the Spaces hover buttons (374910f)
  • ui: light the Terminal's sash on the rule under its strip (8b2577a)
  • ui: list recently opened files first in quick open (41f8d8c)
  • ui: maximize a session stretched over the editor (7f6c6fe)
  • ui: maximize the session or the file over the editor area (d36a69d)
  • ui: raise the active tab's close button under the mouse (b603443)
  • ui: sort Explorer files by type, from its menu or explorer_sort (6571271)
  • ui: Source Control drawers stack like Spaces' projects (0bdfb5b)
  • ui: Source Control's context menu comes in groups (405010f)
  • ui: Spaces sorts projects manually or by their last output (2a7b2b7)
  • ui: text boxes framed in a thin line, the accent while typing (84d8f89)
  • ui: the Commit button greys out until something is staged (d8f8ec1)
  • ui: the Compare drawer lists the files a commit or a pull request changed (200ca0a)
  • ui: the Compare drawer's ✕ drops the comparison (23e01fb)
  • ui: the cursor is the terminal's, in text boxes and sessions too (7b26e8b)
  • ui: the message scramble settles once, then only its dots pulse (6f14f98)
  • ui: the Settings modal groups its toggles under headings (e61ea0c)
  • ui: tint the + button of the session and terminal strips on hover (dacf6aa)
  • ui: VS Code style editor tabs, breadcrumbs and buttons in the strip (3504339)

Bug Fixes

  • daemon: wait for a shell to be listed before handling its exit (7a58287)
  • ui: a drawer line's menu leaves out View as Tree and Collapse All (36d9c18)
  • ui: a selected session row pulses for its tab's new state (a8485b1)
  • ui: each project keeps its own Compare drawer comparison (449fa09)
  • ui: key hint columns fit their widest key and description (4b71e64)
  • ui: only an agent's tab shows a status glyph (438cb16)
  • ui: the commit message keeps its color without focus (fbf9008)

Documentation

  • demo: re-record the GIFs with the new tabs, strips and breadcrumbs (f7c29f7)
  • demo: run the demo's claude in a config directory of its own (75cd179)
  • readme: lay the tour out as a two-column table of GIFs (fa4c1c3)
  • readme: move install section before features (bb53ef8)

Maintenance

Testing

  • the e2e session picks a harness of its own (9c5d84a)

v0.4.0

Choose a tag to compare

@xseman xseman released this 02 Oct 22:11
22b7efc

0.4.0 (2026-10-02)

Features

  • daemon: a shell command under an agent reads running (d5844e5)
  • daemon: session.move reorders a session's tabs (15d5f21)
  • scm: Untracked Changes discards, deleting the files after asking (f1a9103)
  • ui: a faint border parts the activity bar from the view (04ccf0f)
  • ui: a folded project tops the folded list and unfolds to its place (1a3c67d)
  • ui: a GitHub view where gh is installed (e73cc6c)
  • ui: a narrow screen gives the session the editor area and keeps Spaces (e9c6fe3)
  • ui: a pane header that resizes lights as a sash (ea920b5)
  • ui: a scrollbar's slider shades under the pointer (27d17de)
  • ui: drag a tab along its strip, dropped where a mark shows (26f515c)
  • ui: folded projects sit on the Spaces panel's bottom edge (c42ba1d)
  • ui: folded Spaces projects stay folded across restarts (988afee)
  • ui: Move Tab Left / Right, for editors, session tabs and shells (8bf7d52)
  • ui: questions ask with a row of buttons, as VS Code's dialog (9a940f4)
  • ui: Sort Lines Ascending sorts the selected lines, or the file (ae2fa3c)
  • ui: the active tab stands out of its strip (8bf2ce6)
  • ui: the branch picker groups its matches, the best one first (232a8fc)
  • ui: the open view's icon hides its sidebar, leaving the activity bar (baaff89)

Bug Fixes

  • daemon: a background shell under an attached claude job reads running (e3ff97e)
  • daemon: a claude permission prompt in a narrow column reads blocked (37dd157)
  • daemon: a claude session with a live subagent reads running (18a08d1)
  • daemon: a worktree a gone claude locked can be deleted (0a8d1f3)
  • daemon: an agent run as its session resumes in place of a fresh one (3358680)
  • daemon: session input reaches the app in the order it was sent (8e93c3b)
  • ui: a second click on a session in Spaces leaves no row selected (eaa9a22)
  • ui: ctrl+v pastes into a find box and every other text box (c64ecfe)
  • ui: pgup and pgdn page a terminal's scrollback (00c59df)
  • ui: pgup and pgdn page the Spaces and Search lists (35528b2)
  • ui: the help lists alt+, alt+. for back and forward (bd3b678)
  • ui: the Spaces selection stays on its session when the list re-sorts (7b49a3f)

Documentation

  • a shorter README and a user guide, every doc terse with diagrams (c3b0cd0)
  • demo: re-record the GIFs with every panel on the left (73a8f10)
  • demo: record the GIFs light in a blue gradient, with a README still (09bfdae)
  • re-cut the demo GIFs around what pando is for (dd87f64)
  • skill: pass a message to another session, after proving the target (71b8402)
  • trim the README, fix what went stale in docs/ (e6fbfc8)

v0.3.0

Choose a tag to compare

@xseman xseman released this 28 Sep 07:15
d3b548e

0.3.0 (2026-09-27)

Features

  • claude resumes as a background session, in its own config dir (569d3cd)
  • config: word_wrap setting (fba3d7d)
  • daemon: icons default to ascii (2079022)
  • every worktree keeps its own session column (cff757b)
  • ui: a margin left of a file's line numbers (d17300a)
  • ui: a session column dragged nearly off the screen closes (f4a50ce)
  • ui: cut, copy and paste files in Explorer (867df4f)
  • ui: double click selects a word, triple click the line (b40ec20)
  • ui: drag a session within its worktree (ff20cde)
  • ui: drag a worktree within its project (a1e5701)
  • ui: editor_limit closes the least recently used tab (a2b469b)
  • ui: editor.changeIndentation opens the Tab Size menu (76ab8d8)
  • ui: find in a session's or the Terminal's scrollback (2c45c10)
  • ui: horizontal scrollbar and a word wrap toggle in the editor (f7a0e12)
  • ui: light a divider under a resting pointer (3c96500)
  • ui: markdown_width caps rendered Markdown at 80 cells (a470d5e)
  • ui: render_whitespace draws spaces and tabs (69652bc)
  • ui: rendered Markdown in glow's layout (95c6bec)
  • ui: sidebar list scrollbars drag as the editor's does (28e25af)
  • ui: source control tints only the status letter, folders get a dot (cdd322b)
  • ui: subtler line numbers, the cursor's line lit (25e239d)
  • ui: text effects for names, counts and busy labels (cc329a7)
  • ui: the status bar shows Ln, Col and sets the tab size (7e62ba3)
  • ui: VS Code's context menu in Explorer (46cda74)

Bug Fixes

  • daemon: a restart attaches to a background job it read half written (03cf08c)
  • daemon: an attached session is named after its conversation (a6a0c77)
  • ui: a Commit button with nothing to do is grey, not tinted (ef4cc79)
  • ui: keep a terminal selection on its text as it scrolls (cd374f4)
  • ui: keep the Terminal panel open or shut per worktree (047e683)
  • ui: leave ctrl+j to a session or a shell (dbcb503)

Documentation

  • re-record the markdown, edit, vim and tui demos (bec15ef)
  • the icons need only Nerd Font glyphs, not a patched font (e1e34cd)

Testing

  • daemon: give waitFor 15 s on a slow runner (526f94b)

v0.2.0

Choose a tag to compare

@xseman xseman released this 23 Sep 23:17
013ab69

0.2.0 (2026-09-23)

Features

  • daemon: attach to background jobs and keep a session's claude config (7735b9a)
  • daemon: resume each session's own conversation (fb550e1)
  • give every session its own terminal tabs (b0aea6c)
  • name new worktrees at random, as herdr does (7522571)
  • open every terminal in one configurable shell, falling back on bash (da59ea7)
  • scm: continue a merge with git's prepared message (d4c0920)
  • ui: add VS Code's scrollbar to the editor and terminals (ee92c13)
  • ui: filter, sort and group Spaces sessions from a view menu (b3aab72)
  • ui: frame the tabs of every strip (4b99378)
  • ui: give every session tabs of its own, as herdr does (87b4920)
  • ui: keep session tabs inside their space (6e7062c)
  • ui: let the focused part own its keys, as VS Code's when clauses do (4d49dec)
  • ui: multi-line commit message box with generate menu (8488e53)
  • ui: pulse a session's tint until it is clicked (3a98759)
  • ui: select and copy text in terminals by dragging (f3be4cc)
  • ui: split Commit button hover and match the message box's ∨ to it (50c7eef)
  • ui: tell a project's checkout from its worktrees in Spaces (c983061)
  • ui: tint sessions that wait or finished unseen (a391031)

Bug Fixes

  • daemon: resolve session names in focus (325cc4d)
  • daemon: send modified special keys to the session (080dff4)
  • daemon: stop an agent that lost its terminal before resuming (0426bc7)
  • leave the scrollbar and the wheel to an app on the alternate screen (8bc089b)
  • ui: attach the terminal panel to its shell at start (9d68885)
  • ui: copy to the desktop's clipboard, not only through OSC 52 (83a9bd9)
  • ui: keep a tab's width when it becomes active (15c034e)
  • ui: keep the active tab on a narrow session strip (6c629a6)
  • ui: keep the hover under a menu where the right click left it (4713395)
  • ui: paste into a session docked in its own column (e9d1d08)
  • ui: space out Source Control row buttons and widen their hover (368485c)

Documentation

  • re-record diff, lsp and tui demos (698102a)
  • re-record the demos with the features since v0.1.0 (ede5069)

v0.1.0

Choose a tag to compare

@xseman xseman released this 19 Sep 10:50
35b0c86

0.1.0 (2026-09-19)

Features

  • terminal workspace for AI agent sessions (c3e926c)