feat: tmuxinator/teamocil feature parity (recut) by tony · Pull Request #1046 · tmux-python/tmuxp · GitHub
Skip to content

feat: tmuxinator/teamocil feature parity (recut) - #1046

Open
tony wants to merge 1 commit into
masterfrom
parity-recut
Open

tony wants to merge 1 commit into
masterfrom
parity-recut

Conversation

@tony

@tony tony commented Jun 6, 2026

Copy link
Copy Markdown
Member

Summary

This is a replacement recut for #1025. It keeps the parity work in three reviewable commits:

  • importer parity for tmuxinator/teamocil conversion
  • runtime/load parity for lifecycle hooks, here mode, pane titles, synchronization, templating, and config-management commands
  • docs, examples, changelog, and documented example tests

Closes #1031.

Review Fixes Folded In

  • Avoids respawning the active pane running tmuxp load --here.
  • Runs shell_command_after before synchronized panes are enabled.
  • Validates tmuxp delete targets before unlinking files.
  • Lets lifecycle hooks run without the previous undocumented timeout.
  • Normalizes --here outside tmux before existing-session handling.
  • Expands workspace-level config fallback paths before Server creation, including ./tmux.conf relative to the workspace file and ~/tmux.conf via HOME.

Parity Check

The final tree matches the original parity branch except for the intentional workspace config path-expansion fix and its regression coverage:

  • src/tmuxp/cli/load.py
  • tests/cli/test_load.py

Verification

Run before each commit and again at branch tip:

$ unset NO_COLOR; rm -rf docs/_build; uv run ruff check . --fix --show-fixes; uv run ruff format .; uv run mypy .; uv run py.test --reruns 0 -vvv; just build-docs;

Final branch-tip results:

  • uv run ruff check . --fix --show-fixes: all checks passed
  • uv run ruff format .: 144 files left unchanged
  • uv run mypy .: success, no issues in 144 source files
  • uv run py.test --reruns 0 -vvv: 1038 passed, 2 skipped
  • just build-docs: build succeeded with 76 existing warnings

NO_COLOR was unset for the gates because this local shell exports NO_COLOR=1, while existing color tests assert ANSI output in forced-color cases.

@codecov

codecov Bot commented Jun 6, 2026 •

Copy link
Copy Markdown

@tony
tony force-pushed the parity-recut branch 2 times, most recently from dfaac96 to 4e9116c Compare June 7, 2026 11:46
@tony
tony force-pushed the parity-recut branch 2 times, most recently from d294b1c to 8c05c5d Compare July 4, 2026 15:44
why: tmuxp lacked several tmuxinator and teamocil workflows, so configs
from those tools lost behavior on import and users missed the lifecycle
and session-management commands they relied on.

what:
- Add session lifecycle commands: tmuxp stop / new / copy / delete.
- Add project lifecycle hooks: on_project_start / restart / exit / stop.
- Add {{ variable }} config templating, filled via --set at load time.
- Add pane titles and window keys (synchronize, shell_command_after,
  clear).
- Add tmuxp load flags: --here, --no-shell-command-before, --debug.
- Broaden tmuxinator/teamocil imports: hooks, named panes, startup
  focus, synchronized windows, tmux CLI args, teamocil v1.x format.
- Extend the builder protocol build() with here= for current-window
  loads so all builders share the contract.

This branch has not been deployed

No deployments
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.

here mode level 1: match teamocil — use set_environment + respawn-pane, keep send_keys cd only

1 participant