Releases: atomicstack/tmux-popup-control
Releases · atomicstack/tmux-popup-control
v0.9.5
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
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
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
improvements
- inline colour rendering — colour values (
colour33,color196,#ff5500, etc.) inshow-optionsoutput 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,boldnow render their colour components in the actual colour - exported cmdparse helpers —
SchemaHasArgFlagandPositionalAtare 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 handling —
show-options -Aoutput with*-suffixed inherited names (e.g.display-panes-active-colour*) is now correctly recognised and coloured - show-hooks empty output —
show-hookswith empty output now shows[no hooks found](or[no hooks found in scope -g]) instead of silently hiding the popup
v0.9.1
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,colourNforms, and#rrggbbhex. show-options/show-window-options/show-hooksresults 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-hooksqueries 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
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 parsingshow-options -aat 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^/vindicator rows. the completion popup renders it vialipgloss.JoinHorizontalas a separate column so selection highlighting can never bleed into the scrollbar glyph; the main menu and session tree pick it up through a newstyledLine.suffixfield. - 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 thewindow:switchmenu 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, andshow-hooksnow 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_PANEfromTMUX_POPUP_CONTROL_PANE_IDwhen running inside adisplay-popup, which clearsTMUX_PANEand broke tmux commands that rely on it to resolve the current pane context (e.g.move-window -r). - integration tests now strip
TMUX_PANEand allTMUX_POPUP_CONTROL_*vars from the subprocess environment alongside the existingTMUX=clearing, preventing the user's live tmux session context from leaking into tests whenmake testruns inside tmux.
Full Changelog: v0.8.0...v0.9.0
v0.8.0
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-fromlisting with a human-readablesizecolumn and simplified auto-save names toauto, 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.tmuxwhen applying binds and related setup, which lowers unnecessary tmux command churn during initialization.
Full Changelog: v0.7.1...v0.8.0
v0.7.1
improvements
- added a top-level
customize-modemenu 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
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, andmain.tmuxalongside the binary so downloaded archives include the files needed to install and wire up the plugin.
fixes
- preserved
tmux lscmflag 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
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
-tinjection from direct tmux command execution, so typed tmux commands now run exactly as entered.