Skip to content

Commit 21e54c5

Browse files
committed
docs(CHANGES) Structured logging, rename_window fix, stderr handling
1 parent 233c526 commit 21e54c5

1 file changed

Lines changed: 36 additions & 0 deletions

File tree

CHANGES

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,42 @@ $ uvx --from 'libtmux' --prerelease allow python
3636
_Notes on the upcoming release will go here._
3737
<!-- END PLACEHOLDER - ADD NEW CHANGELOG ENTRIES BELOW THIS LINE -->
3838

39+
### What's new
40+
41+
#### Structured lifecycle logging across Server, Session, Window, and Pane (#637)
42+
43+
All lifecycle operations (create, kill, rename, split) now emit INFO-level log
44+
records with structured `extra` context. Every log call includes scalar keys
45+
such as `tmux_subcommand`, `tmux_session`, `tmux_window`, `tmux_pane`, and
46+
`tmux_target` for filtering in log aggregators and test assertions via
47+
`caplog.records`.
48+
49+
- Add `NullHandler` to library `__init__.py` per Python logging best practices
50+
- Add DEBUG-level structured logs for `tmux_cmd` execution with `isEnabledFor` guards
51+
- Replace f-string log formatting with lazy `%s` formatting throughout
52+
- Replace `traceback.print_stack()` calls with proper `logger.debug(exc_info=True)`
53+
- Replace `logger.exception()` in options parsing with `logger.warning()` and `tmux_option_key` context
54+
- Remove unused logger definitions from modules that don't log
55+
56+
### Bug fixes
57+
58+
#### Window.rename_window() now raises on failure instead of silently swallowing (#637)
59+
60+
Previously `rename_window()` caught all exceptions and logged them, masking
61+
tmux errors. It now propagates the error, consistent with all other command
62+
methods.
63+
64+
#### Server.kill() captures stderr and handles "no server running" gracefully (#637)
65+
66+
`Server.kill()` previously discarded the tmux return value. It now checks
67+
stderr, raises on unexpected errors, and silently returns for expected
68+
conditions ("no server running", "error connecting to").
69+
70+
#### Server.new_session() checks kill-session stderr (#637)
71+
72+
When `kill_session=True` and the existing session kill fails, `new_session()`
73+
now raises `LibTmuxException` with the stderr instead of proceeding silently.
74+
3975
## libtmux 0.53.1 (2026-02-18)
4076

4177
### Bug fixes

0 commit comments

Comments
 (0)