@@ -38,89 +38,88 @@ $ tmuxp@next load yoursession
3838
3939## tmuxp 1.71.0 (Yet to be released)
4040
41- ### New commands
41+ <!-- To maintainers and contributors: Please add notes for the forthcoming version below -->
4242
43- #### `tmuxp stop` — kill a tmux session (#1025)
44- Stop (kill) a running tmux session by name. Runs the `on_project_stop`
45- lifecycle hook before killing the session, giving your project a chance
46- to clean up.
43+ <!-- KEEP THIS PLACEHOLDER - DO NOT REMOVE OR MODIFY THIS LINE -->
44+ _Notes on the upcoming release will go here._
45+ <!-- END PLACEHOLDER - ADD NEW CHANGELOG ENTRIES BELOW THIS LINE -->
46+
47+ tmuxp 1.71.0 brings tmuxp to feature parity with tmuxinator and
48+ teamocil. Sessions can be managed end to end from the CLI (`stop`,
49+ `new`, `copy`, `delete`), workspace configs gain lifecycle hooks,
50+ `{{ variable }}` templating, and pane titles, and `tmuxp load` learns
51+ `--here` and friends. Imports from tmuxinator and teamocil now convert
52+ much more of an existing config. See {doc}`comparison` for a
53+ side-by-side of all three tools.
54+
55+ ### What's new
56+
57+ #### `tmuxp stop` — kill a session with cleanup (#1025)
58+
59+ Stop a running session by name. The `on_project_stop` lifecycle hook
60+ runs before the session is killed, giving your project a chance to
61+ clean up. See {ref}`cli-stop`.
4762
4863```console
4964$ tmuxp stop mysession
5065```
5166
52- #### `tmuxp new` — create a workspace config (#1025)
53- Create a new workspace configuration file from a minimal template and
54- open it in `$EDITOR`.
67+ #### `tmuxp new`, `tmuxp copy`, `tmuxp delete` — manage workspace configs (#1025)
68+
69+ Create a workspace config from a starter template and open it in
70+ `$EDITOR`, duplicate an existing config under a new name, or delete
71+ configs (with a confirmation prompt unless `-y` is passed).
5572
5673```console
5774$ tmuxp new myproject
5875```
5976
60- #### `tmuxp copy` — copy a workspace config (#1025)
61- Copy an existing workspace config to a new name. Source is resolved
62- using the same logic as `tmuxp load`.
63-
64- ```console
65- $ tmuxp copy myproject myproject-backup
66- ```
77+ #### Lifecycle hooks (#1025)
6778
68- #### `tmuxp delete` — delete workspace configs (#1025)
69- Delete one or more workspace config files. Prompts for confirmation
70- unless `-y` is passed.
79+ Workspace configs support four hooks, modeled on tmuxinator's:
7180
72- ```console
73- $ tmuxp delete old-project
74- ```
81+ - `on_project_start` — before a new session is built
82+ - `on_project_restart` — after you confirm reattaching to an existing session
83+ - `on_project_exit` — when the last client detaches
84+ - `on_project_stop` — before `tmuxp stop` kills the session
7585
76- ### Lifecycle hooks (#1025)
77- Workspace configs now support four lifecycle hooks inspired by tmuxinator:
86+ See {ref}`top-level` for examples.
7887
79- - `on_project_start` — runs before session build (new session creation only)
80- - `on_project_restart` — runs when reattaching to an existing session (confirmed attach only)
81- - `on_project_exit` — runs when the last client detaches (via tmux `client-detached` hook)
82- - `on_project_stop` — runs before `tmuxp stop` kills the session
88+ #### Config templating with `--set` (#1025)
8389
84- ### Config templating (#1025)
85- Workspace configs now support simple `{{ variable }}` placeholders for variable substitution.
86- Pass values via `--set KEY=VALUE` on the command line:
90+ Workspace configs may contain `{{ variable }}` placeholders, filled at
91+ load time:
8792
8893```console
8994$ tmuxp load --set project=myapp mytemplate.yaml
9095```
9196
92- ### New config keys (#1025)
93- - **`enable_pane_titles`** / **`pane_title_position`** / **`pane_title_format`** —
94- session-level keys that enable tmux pane border titles.
95- - **`title`** — pane-level key to set individual pane titles via
96- `select-pane -T`.
97- - **`synchronize`** — window-level shorthand (`before` / `after` / `true`)
98- that sets `synchronize-panes` without needing `options_after`.
99- - **`shell_command_after`** — window-level key; commands sent to every pane
100- after the window is fully built.
101- - **`clear`** — window-level boolean; sends `clear` to every pane after
102- commands complete.
103-
104- ### New `tmuxp load` flags (#1025)
105- - `--here` — reuse the current tmux window instead of creating a new session.
106- - `--no-shell-command-before` — skip all `shell_command_before` entries.
107- - `--debug` — show tmux commands as they execute (disables progress spinner).
108- - `--set KEY=VALUE` — pass template variables for config templating.
109-
110- ### Importer improvements (#1025)
111- #### tmuxinator
112-
113- - Map `pre` → `on_project_start`, `pre_window` → `shell_command_before`.
114- - Parse `cli_args` (`-f`, `-S`, `-L`) into tmuxp equivalents.
115- - Convert `synchronize` window key.
116- - Convert `startup_window` / `startup_pane` → `focus: true`.
117- - Convert named panes (hash-key syntax) → `title` on the pane.
118-
119- #### teamocil
120-
121- - Support v1.x format (`windows` at top level, `commands` key in panes).
122- - Convert `focus: true` on windows and panes.
123- - Pass through window `options`.
97+ #### Pane titles (#1025)
98+
99+ Session-level `enable_pane_titles`, `pane_title_position`, and
100+ `pane_title_format` keys turn on tmux pane border titles; a pane-level
101+ `title` key names individual panes.
102+
103+ #### New window keys: `synchronize`, `shell_command_after`, `clear` (#1025)
104+
105+ `synchronize: before/after/true` mirrors keystrokes across a window's
106+ panes; `shell_command_after` runs commands in every pane after the
107+ window is built; `clear: true` clears each pane once its commands
108+ complete.
109+
110+ #### New `tmuxp load` flags (#1025)
111+
112+ - `--here` — build the workspace in your current tmux window instead of a new session
113+ - `--no-shell-command-before` — skip all `shell_command_before` entries
114+ - `--debug` — show each tmux command as it executes
115+ - `--set KEY=VALUE` — fill config template variables
116+
117+ #### Broader tmuxinator and teamocil imports (#1025)
118+
119+ `tmuxp import` now converts lifecycle hooks, named panes, startup
120+ window/pane focus, synchronized windows, and tmux CLI arguments from
121+ tmuxinator configs, and recognizes teamocil's v1.x format. See
122+ {ref}`cli-import` for the full key mappings.
124123
125124## tmuxp 1.70.0 (2026-05-23)
126125
0 commit comments