Changelog History
Page 1
-
v1.70.0 Changes
May 23, 2026tmuxp 1.70.0 bumps libtmux to 0.58.0, fixing session and window listing on systems whose locale is not UTF-8.
🚀 Full release notes: https://tmuxp.git-pull.com/history/#tmuxp-1-70-0-2026-05-23
libtmux 0.58.0
libtmux's subprocess output decoding previously relied on the system locale. On non-UTF-8 locales, the format-separator byte sequence could be corrupted, causing tmuxp's session and window listing to silently return empty results.
🚀 libtmux 0.58.0 forces UTF-8 encoding in
subprocess.Popen, eliminating the locale dependency. See the libtmux 0.58.0 release.What's Changed
Full Changelog : v1.69.0...v1.70.0
-
v1.69.0 Changes
May 23, 2026tmuxp 1.69.0 raises the libtmux floor to 0.57.1, bringing client-awareness, tmux-native filtering, and expanded format-token fields to
tmuxp shellusers.🚀 Full release notes: https://tmuxp.git-pull.com/history/#tmuxp-1-69-0-2026-05-23
libtmux 0.57.1
🚀 The libtmux bump pulls in the 0.57.x command-coverage and client-awareness releases. Scripts launched through
tmuxp shellcan now work with attached-client objects and use tmux-native filtering to query sessions, windows, and panes without manual post-filtering.🚀 Highlights from libtmux 0.57.0 / 0.57.1:
Clientobject andServer.clientsaccessor — typed dataclass for tmux's attached-client modelsearch_*()methods with tmux-nativefilter=kwarg (-fflag) on Server, Session, and WindowServer.display_messageandWindow.display_message— read tmux format tokens without a pane handle- More format-token fields on Pane, Window, Session, and Client (zoomed, dead, marked, synchronized, path, pipe, flags, termtype, readonly)
LibTmuxException.subcommand— errors now record which tmux subcommand failedPane.reset()fix — scrollback clear works again (was silently no-op in 0.56.0)
What's Changed
Full Changelog : v1.68.0...v1.69.0
-
v1.68.0 Changes
May 10, 2026What's Changed
📚 tmuxp 1.68.0 refreshes the documentation stack and developer workflow for the next release train. The docs now sit on the shared gp-sphinx platform, the API pages pick up the newer gp-furo visual language, and the test suite avoids paying for each contributor's interactive shell startup. The release also raises the libtmux floor so
tmuxp shellusers can script against the expanded tmux command wrapper surface.📚 Documentation platform refresh
📚 tmuxp's docs were reshaped around a CLI-first frontend: a standalone homepage, clearer install and YAML examples, a stronger CLI reference, new exit-code and recipe pages, topic/project sections, redirects for moved pages, and the Python API moved under internals with clearer expectations for end users. See the 1.68.0 documentation notes.
📚 The site now inherits shared gp-sphinx infrastructure instead of carrying repo-local Sphinx extension copies: Furo-based theme defaults, IBM Plex typography, packaged argparse documentation helpers, API badge styling, MyST-aware object references, and the
sphinx-vite-builderasset pipeline. That keeps tmuxp aligned with the surrounding tmux-python docs while reducing custom docs plumbing in this repo.📚 Shell examples were standardized to one
consolecommand per block with$prompts and continuation lines for long commands, so commands are easier to read and copy from the rendered docs. See the command-block notes.libtmux 0.56.0
🚀 tmuxp now requires
libtmux~=0.56.0, picking up libtmux 0.55.1's test-socket cleanup and libtmux 0.56.0's broad command-coverage release. tmuxp's runtime imports stay on stable APIs, whiletmuxp shellusers can reach more upstream wrappers for interactive tmux commands, buffer I/O, key bindings, shell execution, and window/pane manipulation without falling back to rawcmd()calls. See the dependency notes and the libtmux 0.56.0 release.✅ Faster local tests
👀 The pytest suite now pins
$SHELL=/bin/shwhile tests run, so tmux panes created by fixtures skip zsh/bash profile startup and other local interactive shell work. On the measured local suite this reduceduv run py.testwall time from about 76 seconds to about 36 seconds, with no tmuxp runtime behavior change. See the development notes.🚀 Release-note cleanup
🚀
CHANGESwas rewritten end to end in the new release-note style, preserving the full tmuxp history while making old and current entries easier to scan from the rendered history page.Pull requests
- 📄 docs(style): refine typography, headings, TOC, and body by @tony in #1021
- 📄 docs: self-host fonts, eliminate layout shift, add SPA navigation by @tony in #1022
- ✅ test(docs[sphinx_fonts]): add tests for sphinx_fonts extension by @tony in #1023
- 📄 docs(style[shell]): standardize shell code blocks by @tony in #1024
- 📄 docs(redesign): restructure documentation to CLI Frontend Skeleton pattern by @tony in #1029
- 📄 docs(sphinx_fonts): add multi-subset support, Mono weights, and latin-ext by @tony in #1034
- 📄 docs: migrate to gp-sphinx workspace packages by @tony in #1033
- 📄 docs(feat[api-style]): improve API docs through gp-sphinx by @tony in #1035
- 📄 chore(docs): adopt gp-sphinx v0.0.1a8 by @tony in #1036
- 🏗 chore(docs): bump gp-sphinx to 0.0.1a16 for sphinx-vite-builder consolidation by @tony in #1037
- py(deps): bump libtmux to 0.56.0 by @tony in #1038
- ✅ tests(perf[conftest]): pin
$SHELL=/bin/shfor a faster suite by @tony in #1041 - 📄 docs(CHANGES): rewrite release history for May 2026 refresh by @tony in #1042
Full Changelog : v1.67.0...v1.68.0
-
v1.67.0 Changes
March 09, 2026What's Changed
Animated progress spinner for
tmuxp load🏁
tmuxp loadnow shows a real-time animated spinner as windows and panes are created, replacing the static[Loading]message.Presets — five built-in display formats:
Preset Description 0️⃣ defaultminimalSpinner + percentage only windowSpinner + window name + pane index paneSpinner + per-pane detail verboseSpinner + bar + window + pane + percentage 🆕 New CLI flags:
--progress-format <preset-or-custom>— select a preset or pass a custom format string with tokens like{bar},{progress},{window},{pane_index},{overall_percent}- 0️⃣
--progress-lines N— number ofbefore_scriptoutput lines shown in the spinner panel (default: 3) --no-progress— disable the spinner entirely
Environment variables:
TMUXP_PROGRESS=0— disable spinner (same as--no-progress)TMUXP_PROGRESS_FORMAT— default preset/format stringTMUXP_PROGRESS_LINES— default panel line count
The spinner stops cleanly before interactive prompts (session switch, error recovery) and before tmux attach. Non-TTY environments automatically fall back to the original behavior.
Full Changelog : v1.66.0...v1.67.0
-
v1.66.0 Changes
March 08, 2026What's Changed
🐛 Bug fixes
- 🛠 Fix default CLI log level from INFO to WARNING so normal usage is not noisy
- 🏗 Suppress raw Python tracebacks on workspace build failure; error details available via
--log-level debugwhile the user sees only[Error] <message> - 🛠 Fix
get_pane()to match sibling methods: widen catch toException, preserve exception chain viafrom e, replace bareprint()with structured debug log - Route
ls --jsonanddebug-info --jsonthroughOutputFormatterfor consistent machine-readable output
Development
🌲 Structured logging with
extracontext across all modulesAll modules now use
logging.getLogger( __name__ )with structuredextrakeys (tmux_session,tmux_window,tmux_pane,tmux_config_path, etc.) for filtering and aggregation. Library__init__.pyadds
NullHandlerper Python best practices. A newTmuxpLoggerAdapterprovides persistent context for objects with stable identity.- ✂ Remove
coloramaruntime and type-stub dependencies; replace with stdlib ANSI constants - 🖨 Route all raw
print()calls throughtmuxp_echo()for consistent output channels
🔗 Links
Full Changelog : v1.65.0...v1.66.0
-
v1.65.0 Changes
March 08, 2026 -
v1.64.2 Changes
March 08, 2026What's changed
No code changes.
Packaging
- Fix
__about__. __version__not updated in 1.64.1 release - The 1.64.1 release shipped with
__about__. __version__still set to "1.64.0". This affected runtime version reporting (e.g.tmuxp. __version__).
Full Changelog: v1.64.1...v1.64.2
- Fix
-
v1.64.1 Changes
March 08, 2026What's Changed
🐛 Bug fix
📚 Documentation
- 📜 feat(docs): Add linkable arguments with headerlinks to argparse directive by @tony in #1010
- 📇 feat(docs): Render argparse metadata as semantic definition list by @tony in #1011
Full Changelog : v1.64.0...v1.64.1
-
v1.64.0 Changes
January 24, 2026📚 This release brings a major overhaul to CLI documentation with a custom argparse documentation engine featuring syntax highlighting.
Highlights
📚 Custom CLI Documentation Engine
📜 Replaced the external
sphinx-argparsedependency with a customsphinx_argparse_neopackage, providing:- Syntax highlighting for CLI usage blocks and argparse help output
- Automatic TOC entries for command examples
- Consistent styling matching shell code blocks
- 👍 Better maintainability with comprehensive test coverage (313 tests)
Before & After
📚 The CLI documentation now features semantic syntax highlighting:
Element Color Example usage:keywordBlue usage: tmuxp loadProgram/command Purple tmuxp,loadOptions Teal --detached,-dMetavars Yellow SESSION,CONFIGChoices Green yaml,jsonWhat's Changed
📚 Documentation
- 📚 Custom argparse documentation engine with syntax highlighting
- Restructured CLI command pages for consistency
- Usage blocks now match shell example styling (background, padding, border-radius)
🐛 Bug Fixes
- 🛠 Fixed docutils node.children assignment bypassing parent tracking
- ➕ Added ID prefix to prevent duplicate section IDs across subcommand pages
- ⚠ Escape asterisks in glob patterns to prevent RST emphasis warnings
- 🛠 Fixed mypy type annotation errors
Dependencies
- ✂ Removed
sphinx-argparseexternal dependency - 📌 Pinned
sphinx<9for compatibility
🔗 Links
- 📚 Documentation : https://tmuxp.git-pull.com/cli/
- PR : #1009
Contributors
Full Changelog : v1.63.1...v1.64.0
-
v1.63.1 Changes
January 11, 2026🐛 Bug fixes
CLI example colorization (#1008)
- 🛠 Fix example sections not being colorized in
tmuxp --helpoutput - 🔄 Change
build_descriptionto use"{heading} examples:"format (e.g., "load examples:") for proper formatter detection
- 🛠 Fix example sections not being colorized in