Skip to content

libtmux 0.61.0#1074

Merged
tony merged 3 commits into
masterfrom
deps/libtmux-0.61.0
Jul 4, 2026
Merged

libtmux 0.61.0#1074
tony merged 3 commits into
masterfrom
deps/libtmux-0.61.0

Conversation

@tony

@tony tony commented Jul 4, 2026

Copy link
Copy Markdown
Member

Summary

  • Bump libtmux ~=0.60.0~=0.61.0 — one upstream release, no breaking changes, tmux 3.2a-3.6 unaffected.
  • Improve tmuxp debug-info: report the exact tmux patch release (3.7a/3.7b) instead of the numeric-normalized 3.7, adopting libtmux 0.61.0's get_version_str().
  • Inherit libtmux's Pane.break_pane() fix on tmux 3.7a/3.7b — tmuxp never calls break_pane, so this is behavior-only with no code change.

Upstream changes

libtmux 0.61.0 (2026-07-04)

Hardens support for the tmux 3.7 patch line.

Release: https://github.com/tmux-python/libtmux/releases/tag/v0.61.0
Changelog: https://libtmux.git-pull.com/history.html#libtmux-0-61-0-2026-07-04

Changes by area

  • pyproject.toml / uv.lock: bump the libtmux specifier and re-lock.
  • src/tmuxp/cli/debug_info.py: tmux_version now reads get_version_str() instead of str(get_version()), preserving the patch letter.
  • tests/cli/test_debug_info.py: add test_debug_info_reports_raw_tmux_version, which monkeypatches the helper to a known 3.7a and asserts the raw string reaches the JSON output verbatim.
  • CHANGES: 1.74.0 entry under ### Dependencies (minimum bump) and ### What's new (debug-info patch release).

Design decisions

  • get_version_str() for reporting, get_version() for comparison. debug-info exists for bug reports, where the faithful patch release matters. plugin.py deliberately keeps get_version() because it feeds LooseVersion constraint checks — a LooseVersion("3.7b") would compare the letter and break version-gate ordering. libtmux 0.61.0 splits these two functions for exactly this reason, and this PR follows that split rather than migrating both call sites.

Before / After

On a tmux 3.7b host, debug-info previously normalized the version.

Before:

$ tmuxp debug-info --json | jq .tmux_version
"3.7"

After:

$ tmuxp debug-info --json | jq .tmux_version
"3.7b"

Verification

debug-info no longer normalizes the version (expect zero matches):

$ rg 'get_version\(\)' src/tmuxp/cli/debug_info.py

plugin.py intentionally keeps numeric comparison (expect a match):

$ rg 'get_version\(\)' src/tmuxp/plugin.py

Test plan

  • uv run py.test — full suite and doctests pass, including test_debug_info_reports_raw_tmux_version
  • uv run mypy — strict type check clean
  • uv run ruff check . and uv run ruff format --check . — clean
  • just build-docs — builds with no new warnings

tony added 3 commits July 4, 2026 08:11
…n_str

why: Pick up libtmux 0.61.0, which hardens support for the tmux 3.7
patch line and adds a helper for the raw tmux version string.

what:
- Bump libtmux dependency specifier ~=0.60.0 -> ~=0.61.0 in pyproject.toml
- Update uv.lock (resolved 0.60.0 -> 0.61.0)

libtmux 0.61.0 (2026-07-04):
- break_pane() keeps tmux's default window name on tmux 3.7a/3.7b
  instead of forcing "libtmux" (#699)
- get_version_str() returns the raw tmux version with its point-release
  suffix intact (e.g. "3.7a"), where get_version() strips it for
  numeric comparison (#699)
- Test suite now passes against tmux 3.7a and 3.7b (#698)

Release: https://github.com/tmux-python/libtmux/releases/tag/v0.61.0
Changelog: https://libtmux.git-pull.com/history.html#libtmux-0-61-0-2026-07-04
why: libtmux 0.61.0 adds get_version_str(), which keeps the tmux
point-release suffix (e.g. "3.7a") that get_version() strips for
numeric comparison. debug-info exists for bug reports, where the exact
patch release matters -- 3.7 and 3.7a differ in behavior.

what:
- Switch debug-info's tmux_version from str(get_version()) to
  get_version_str(), preserving the letter suffix
- Add a test asserting the raw version reaches the output verbatim

plugin.py keeps get_version() for LooseVersion constraint checks.
why: Document the dependency bump and the debug-info change for the
upcoming 1.74.0 release.

what:
- Add ### Dependencies entry for the libtmux 0.61.0 minimum bump
- Add ### What's new entry for debug-info reporting the raw tmux
  patch version
@codecov

codecov Bot commented Jul 4, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 82.56%. Comparing base (bca5998) to head (7f6f76d).

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #1074   +/-   ##
=======================================
  Coverage   82.56%   82.56%           
=======================================
  Files          31       31           
  Lines        2770     2770           
  Branches      518      518           
=======================================
  Hits         2287     2287           
  Misses        346      346           
  Partials      137      137           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@tony tony changed the title deps(libtmux[~=0.61.0]): Bump from ~=0.60.0 for 3.7a/3.7b, get_version_str libtmux 0.61.0 Jul 4, 2026
@tony tony merged commit 9c18f90 into master Jul 4, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant