Skip to content

Releases: atomicstack/tmux-popup-control

v0.9.5

16 Apr 22:47

Choose a tag to compare

fixed

  • autosave: don't snapshot freshly-started empty sessions. when the last autosave predated the current tmux server's start time — e.g., starting a new tmux server more than the autosave interval after the previous one exited — the status-line worker would save immediately, capturing a near-empty session and wasting an autosave slot. the worker now detects "first save of a new tmux server lifetime" via #{start_time} and waits the full interval before the first save, so freshly-started sessions have a chance to be populated before being captured.

full changelog: v0.9.4...v0.9.5

v0.9.4

14 Apr 14:06

Choose a tag to compare

improvements

  • show seconds in session restore timestamps so saves taken in quick succession can be told apart
  • include the queried scope in show-options / show-hooks empty placeholder messages (e.g. "in scope -g", "in session scope") so it's clear which scope was searched

fixes

  • resolve the active pane/window per preview level via a live tmux topology fetch, so switch and tree previews target the correct active pane even when the cached backend state is stale
  • focus the session tree on the current session/window/pane when it opens, for both direct loads and root-menu startup hydration
  • treat show-options "invalid option" responses (e.g. querying an unset user option) as empty output and render the placeholder instead of surfacing an error
  • suppress macOS xattr and metadata headers in release tarballs so extraction on linux no longer warns about LIBARCHIVE.xattr.com.apple.provenance

v0.9.3

13 Apr 21:17

Choose a tag to compare

improvements

  • replace the static scope legend underneath the autocomplete popup with the currently selected item's full help text; colour scope names in both the popup's description column and the help text below

fixes

  • parse quoted strings in command input using tmux lexer rules — previously quote characters were passed literally to tmux and double-quoted strings with spaces were split into multiple arguments
  • trigger completion when the cursor is mid-text — previously the popup only appeared when the cursor was at the end of the filter input

v0.9.2

12 Apr 17:50

Choose a tag to compare

improvements

  • inline colour rendering — colour values (colour33, color196, #ff5500, etc.) in show-options output are now rendered in their actual colour instead of a swatch block preceding the name
  • hook scope colour — hooks have their own dedicated scope colour (muted purple), visible in show-options, show-hooks, and the scope legend
  • scope-coloured help text — command summaries for set-option, show-options, and related commands now highlight scope words (server, session, window, pane, user, hook) in their scope colour, including plural forms
  • style attribute colour rendering — compound style values like fg=colour33,bg=red,bold now render their colour components in the actual colour
  • exported cmdparse helpersSchemaHasArgFlag and PositionalAt are now exported for use outside the cmdparse package

fixes

  • option scope colour persistence — scope colour on option names in the fuzzy filter no longer disappears when the cursor moves away or a space is pressed; the colour now persists regardless of cursor position
  • inherited option name handlingshow-options -A output with *-suffixed inherited names (e.g. display-panes-active-colour*) is now correctly recognised and coloured
  • show-hooks empty outputshow-hooks with empty output now shows [no hooks found] (or [no hooks found in scope -g]) instead of silently hiding the popup

v0.9.1

12 Apr 03:21

Choose a tag to compare

improvements

  • live user-defined options (@plugin …) are now queried from the running tmux server via control mode and merged into the option-name completion catalog.
  • the option completion popup colours each candidate by scope (server / session / window / pane / user) and shows a one-line scope legend underneath the bordered popup.
  • the option token inside the filter input follows the highlighted candidate live and falls back to a catalog lookup once the dropdown dismisses on exact match.
  • value completion for colour-typed options (status-fg, cursor-colour, …) now decorates each candidate with a coloured swatch for basic names, colourN forms, and #rrggbb hex.
  • show-options / show-window-options / show-hooks results render each option name in its scope colour, and colour-typed values get a swatch prepended when the value resolves to a known tmux colour.

fixes

  • scope-only show-options / show-window-options / show-hooks queries with empty output now show a [no options found in scope -g] placeholder instead of silently hiding the result popup, so it is clear the command actually ran.

v0.9.0

11 Apr 22:57

Choose a tag to compare

improvements

  • added a dedicated tmux option/hook/value catalog (internal/tmuxopts) embedded at build time, covering every documented tmux option, hook, and enumerated value with descriptions, so completions no longer depend on parsing show-options -a at runtime.
  • the command submenu now offers completion for option names, hook names, and enumerated option values, wiring set-option, set-window-option, set-hook, show-options, and related commands into the existing completion dropdown with fuzzy filtering and description hints.
  • lists across the ui now draw a proper scrollbar column (thin thumb in the same grey as list trimmings), replacing the previous ^/v indicator rows. the completion popup renders it via lipgloss.JoinHorizontal as a separate column so selection highlighting can never bleed into the scrollbar glyph; the main menu and session tree pick it up through a new styledLine.suffix field.
  • the completion popup no longer reflows while scrolling — width measurement now iterates the entire filtered candidate set and is hard-capped at 50 visible columns so a single very long candidate cannot blow the popup across the screen.
  • page up and page down now step the completion popup cursor by a full viewport when the popup is focused, instead of leaking through to the background menu level.
  • the session tree marks the currently-attached window with a " (current)" suffix and renders single-pane windows as "1 pane" instead of "1 panes".
  • added a dedicated window-switcher keybinding (prefix+w by default, overridable via TMUX_POPUP_CONTROL_KEY_WINDOW_SWITCHER / @tmux-popup-control-key-window-switcher) that launches the window:switch menu directly, matching the existing shortcut style used for the pane switcher and session tree.
  • the restore progress bar now lerps toward the real step at ~60fps, eliminating visual jerkiness when restore events arrive in bursts while still reporting the true step/total in the counter text.

fixes

  • show-options, show-window-options, and show-hooks now synthesise a [option name has no value] / [hook name has no value] placeholder when tmux returns empty output for a single-target query, instead of silently showing nothing. list-all queries still render as empty.
  • restore TMUX_PANE from TMUX_POPUP_CONTROL_PANE_ID when running inside a display-popup, which clears TMUX_PANE and broke tmux commands that rely on it to resolve the current pane context (e.g. move-window -r).
  • integration tests now strip TMUX_PANE and all TMUX_POPUP_CONTROL_* vars from the subprocess environment alongside the existing TMUX= clearing, preventing the user's live tmux session context from leaking into tests when make test runs inside tmux.

Full Changelog: v0.8.0...v0.9.0

v0.8.0

08 Apr 07:00

Choose a tag to compare

improvements

  • redesigned the plugin install/update progress screen to use richer mockup-style panels with phase-aware status labels, full-width gradient progress, source and destination paths, cleaner path shortening for home and temp directories, and improved visual hierarchy throughout the flow.
  • added blinking preview cursors in preview panes, reusing the existing cursor cadence so pane, session, window, and tree previews match the rest of the UI.
  • expanded the session:restore-from listing with a human-readable size column and simplified auto-save names to auto, making older saves easier to scan without repeating timestamp information.
  • improved the local plugin test harness and dummy tmux configuration used for plugin workflow verification, which makes release validation around plugin behavior more reliable.

fixes

  • fixed a restore flow hang that could leave tmux consuming CPU after a restore by waiting for pane replay completion before switching the client back to the restored session.
  • reduced redundant tmux invocations in main.tmux when applying binds and related setup, which lowers unnecessary tmux command churn during initialization.

Full Changelog: v0.7.1...v0.8.0

v0.7.1

07 Apr 08:01

Choose a tag to compare

improvements

  • added a top-level customize-mode menu entry so the popup can launch tmux's customize mode directly in the current window without going through the command submenu.
  • added ghost completion text to ordinary filtered menus, so when filtering narrows to the currently selected item the remaining suffix is shown inline in the search field.
  • cleaned up several internal UI, tmux, and resurrect code paths to use typed request/option structs and shared helpers, which reduces duplication and makes future feature work easier to extend safely.

fixes

  • replaced package-global injectable seams in the CLI and resurrect flows with dependency structs, removing test-order coupling and making the restore/save paths more predictable under test.
  • unified duplicated popup-launch and shell-command construction paths so save/restore flows share the same quoting and self-invocation behavior.
  • modernized the Go codebase across menu, UI, logging, tmux, and test paths to use current standard-library idioms and simpler clamp/sort/copy helpers, reducing maintenance overhead without changing intended behavior.

Full Changelog: v0.7.0...v0.7.1

v0.7.0

05 Apr 04:09

Choose a tag to compare

improvements

  • added automatic session autosaves with configurable interval, bounded autosave retention, optional status-right icon hooks, and restore integration that can use the latest autosave as the default restore target.
  • added explicit manual vs auto snapshot metadata in the restore-from picker, including clearer table presentation and colorized rows so autosaves are easier to distinguish from manual saves at a glance.
  • updated release tarballs to bundle README.md, main.sh, and main.tmux alongside the binary so downloaded archives include the files needed to install and wire up the plugin.

fixes

  • preserved tmux lscm flag order in command completion and kept repeatable flags available after first use, so the popup now follows tmux's command synopsis more closely.
  • made Tab the only completion accept key, stopped Enter from mutating exact command input, removed the trailing completion space, and fixed the popup from reappearing after an exact-match dismissal without new input.
  • fixed restore-from row truncation so ANSI-colored manual/autosave rows no longer show bogus ellipses at the far right of the popup.
  • suppressed macOS extended attributes in release tarballs to avoid confusing tar warnings when Linux users unpack them.

Full Changelog: v0.6.0...v0.7.0

v0.6.0

04 Apr 04:14

Choose a tag to compare

improvements

  • added intelligent tmux command argument completion in the command prompt, including parsed command schemas, contextual flag/value/positional completion, live tmux-backed candidates, dropdown filtering, and ghost hints.
  • added checked-in tmux command help metadata generation for tmux command summaries and flag/parameter help.
  • added richer ui help in the command prompt, including command summaries under the input line and aligned flag/parameter descriptions in the completion popup.
  • added a dismissible output screen for tmux commands that print results, with scrolling for longer output.

fixes

  • improved the completion ux with below-prompt fallback placement, stable selection and dismissal across backend refreshes, command-token-aware filtering and tab replacement, wrapped dropdown navigation, and exact-match behavior that preserves direct execution while keeping exact flag completions visible until committed.
  • removed hidden automatic -t injection from direct tmux command execution, so typed tmux commands now run exactly as entered.