Skip to content

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

Open
tony wants to merge 3 commits into
masterfrom
parity-recut
Open

feat: tmuxinator/teamocil feature parity (recut)#1046
tony wants to merge 3 commits into
masterfrom
parity-recut

Conversation

@tony
Copy link
Copy Markdown
Member

@tony tony commented Jun 6, 2026

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
Copy link
Copy Markdown

codecov Bot commented Jun 6, 2026

Codecov Report

❌ Patch coverage is 89.05547% with 73 lines in your changes missing coverage. Please review.
✅ Project coverage is 84.16%. Comparing base (700a9b9) to head (4e9116c).

Files with missing lines Patch % Lines
src/tmuxp/cli/load.py 76.06% 22 Missing and 6 partials ⚠️
src/tmuxp/workspace/builder.py 86.88% 9 Missing and 7 partials ⚠️
src/tmuxp/workspace/importers.py 90.90% 3 Missing and 10 partials ⚠️
src/tmuxp/cli/copy.py 87.80% 3 Missing and 2 partials ⚠️
src/tmuxp/cli/delete.py 92.10% 2 Missing and 1 partial ⚠️
src/tmuxp/util.py 90.32% 1 Missing and 2 partials ⚠️
src/tmuxp/cli/import_config.py 90.00% 2 Missing ⚠️
src/tmuxp/cli/new.py 96.29% 1 Missing and 1 partial ⚠️
src/tmuxp/workspace/loader.py 97.95% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #1046      +/-   ##
==========================================
+ Coverage   81.98%   84.16%   +2.17%     
==========================================
  Files          28       32       +4     
  Lines        2548     3125     +577     
  Branches      485      630     +145     
==========================================
+ Hits         2089     2630     +541     
- Misses        328      340      +12     
- Partials      131      155      +24     

☔ 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 added 3 commits June 7, 2026 06:28
why: Keep importer compatibility work reviewable as a standalone behavior slice.
what:
- Expand tmuxinator mappings for cli args, hooks, pane titles, startup focus, named panes, synchronize, and dropped-key logging
- Expand teamocil import support for v1.x panes, focus/options, filters, and unsupported sizing warnings
- Add fixtures and typed parametrized coverage for importer edge cases
why: Keep the runtime parity behavior in one reviewable commit after importer normalization.
what:
- Add load flags, here-mode handling, config templating, pane titles, synchronize, shell_command_after, clear, and lifecycle hook execution
- Add config-management commands and safety checks for new, copy, delete, and stop
- Add regression coverage for workspace config path expansion and destructive command safeguards
why: Document the public parity surface and release notes in one reviewable docs commit.
what:
- Add comparison, CLI, configuration, and example docs for parity features
- Add API pages for new CLI modules and tested examples
- Add changelog coverage for the parity release
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