mirror of
https://github.com/tmuxinator/tmuxinator.git
synced 2026-07-17 13:42:24 -05:00
Some checks failed
Integration Tests / test (3.2.10, 1.5) (push) Failing after 12s
Integration Tests / test (3.2.10, 1.6) (push) Failing after 7s
Integration Tests / test (3.2.10, 1.9) (push) Failing after 10s
Integration Tests / test (3.2.10, 1.7) (push) Failing after 9s
Integration Tests / test (3.2.10, 1.8) (push) Failing after 10s
Integration Tests / test (3.2.10, 2.0) (push) Failing after 9s
Integration Tests / test (3.2.10, 2.1) (push) Failing after 7s
Integration Tests / test (3.2.10, 2.2) (push) Failing after 9s
Integration Tests / test (3.2.10, 2.3) (push) Failing after 12s
Integration Tests / test (3.2.10, 2.4) (push) Failing after 10s
Integration Tests / test (3.2.10, 2.5) (push) Failing after 9s
Integration Tests / test (3.2.10, 2.6) (push) Failing after 13s
Integration Tests / test (3.2.10, 2.7) (push) Failing after 13s
Integration Tests / test (3.2.10, 2.8) (push) Failing after 10s
Integration Tests / test (3.2.10, 2.9) (push) Failing after 9s
Integration Tests / test (3.2.10, 2.9a) (push) Failing after 8s
Integration Tests / test (3.2.10, 3.0) (push) Failing after 7s
Integration Tests / test (3.2.10, 3.0a) (push) Failing after 7s
Integration Tests / test (3.2.10, 3.1) (push) Failing after 9s
Integration Tests / test (3.2.10, 3.1a) (push) Failing after 8s
Integration Tests / test (3.2.10, 3.1b) (push) Failing after 7s
Integration Tests / test (3.2.10, 3.1c) (push) Failing after 7s
Integration Tests / test (3.2.10, 3.2) (push) Failing after 7s
Integration Tests / test (3.2.10, 3.2a) (push) Failing after 8s
Integration Tests / test (3.2.10, 3.3) (push) Failing after 9s
Integration Tests / test (3.2.10, 3.3a) (push) Failing after 8s
Integration Tests / test (3.2.10, 3.4) (push) Failing after 7s
Integration Tests / test (3.2.10, 3.5) (push) Failing after 7s
Integration Tests / test (3.2.10, 3.5a) (push) Failing after 8s
Integration Tests / test (3.2.10, 3.6) (push) Failing after 8s
Integration Tests / test (3.2.10, 3.6a) (push) Failing after 8s
Integration Tests / test (3.3.10, 1.5) (push) Failing after 7s
Integration Tests / test (3.3.10, 1.6) (push) Failing after 8s
Integration Tests / test (3.3.10, 1.7) (push) Failing after 8s
Integration Tests / test (3.3.10, 1.8) (push) Failing after 7s
Integration Tests / test (3.3.10, 1.9) (push) Failing after 6s
Integration Tests / test (3.3.10, 2.0) (push) Failing after 8s
Integration Tests / test (3.3.10, 2.1) (push) Failing after 8s
Integration Tests / test (3.3.10, 2.2) (push) Failing after 8s
Integration Tests / test (3.3.10, 2.3) (push) Failing after 8s
Integration Tests / test (3.3.10, 2.4) (push) Failing after 8s
Integration Tests / test (3.3.10, 2.5) (push) Failing after 9s
Integration Tests / test (3.3.10, 2.6) (push) Failing after 9s
Integration Tests / test (3.3.10, 2.7) (push) Failing after 8s
Integration Tests / test (3.3.10, 2.8) (push) Failing after 8s
Integration Tests / test (3.3.10, 2.9) (push) Failing after 9s
Integration Tests / test (3.3.10, 2.9a) (push) Failing after 8s
Integration Tests / test (3.3.10, 3.0) (push) Failing after 9s
Integration Tests / test (3.3.10, 3.0a) (push) Failing after 9s
Integration Tests / test (3.3.10, 3.1) (push) Failing after 10s
Integration Tests / test (3.3.10, 3.1a) (push) Failing after 9s
Integration Tests / test (3.3.10, 3.1b) (push) Failing after 9s
Integration Tests / test (3.3.10, 3.1c) (push) Failing after 8s
Integration Tests / test (3.3.10, 3.2) (push) Failing after 9s
Integration Tests / test (3.3.10, 3.2a) (push) Failing after 8s
Integration Tests / test (3.3.10, 3.3) (push) Failing after 8s
Integration Tests / test (3.3.10, 3.3a) (push) Failing after 9s
Integration Tests / test (3.3.10, 3.4) (push) Failing after 8s
Integration Tests / test (3.3.10, 3.5) (push) Failing after 8s
Integration Tests / test (3.3.10, 3.5a) (push) Failing after 8s
Integration Tests / test (3.3.10, 3.6) (push) Failing after 9s
Integration Tests / test (3.3.10, 3.6a) (push) Failing after 8s
Integration Tests / test (3.4.8, 1.5) (push) Failing after 8s
Integration Tests / test (3.4.8, 1.6) (push) Failing after 9s
Integration Tests / test (3.4.8, 1.7) (push) Failing after 8s
Integration Tests / test (3.4.8, 1.8) (push) Failing after 8s
Integration Tests / test (3.4.8, 1.9) (push) Failing after 10s
Integration Tests / test (3.4.8, 2.0) (push) Failing after 9s
Integration Tests / test (3.4.8, 2.1) (push) Failing after 8s
Integration Tests / test (3.4.8, 2.2) (push) Failing after 8s
Integration Tests / test (3.4.8, 2.3) (push) Failing after 10s
Integration Tests / test (3.4.8, 2.4) (push) Failing after 9s
Integration Tests / test (3.4.8, 2.5) (push) Failing after 8s
Integration Tests / test (3.4.8, 2.6) (push) Failing after 7s
Integration Tests / test (3.4.8, 2.7) (push) Failing after 9s
Integration Tests / test (3.4.8, 2.8) (push) Failing after 8s
Integration Tests / test (3.4.8, 2.9) (push) Failing after 7s
Integration Tests / test (3.4.8, 2.9a) (push) Failing after 8s
Integration Tests / test (3.4.8, 3.0) (push) Failing after 10s
Integration Tests / test (3.4.8, 3.0a) (push) Failing after 8s
Integration Tests / test (3.4.8, 3.1) (push) Failing after 8s
Integration Tests / test (3.4.8, 3.1a) (push) Failing after 9s
Integration Tests / test (3.4.8, 3.1b) (push) Failing after 8s
Integration Tests / test (3.4.8, 3.1c) (push) Failing after 8s
Integration Tests / test (3.4.8, 3.2) (push) Failing after 10s
Integration Tests / test (3.4.8, 3.2a) (push) Failing after 8s
Integration Tests / test (3.4.8, 3.3) (push) Failing after 7s
Integration Tests / test (3.4.8, 3.3a) (push) Failing after 7s
Integration Tests / test (3.4.8, 3.4) (push) Failing after 9s
Integration Tests / test (3.4.8, 3.5) (push) Failing after 10s
Integration Tests / test (3.4.8, 3.5a) (push) Failing after 8s
Integration Tests / test (3.4.8, 3.6) (push) Failing after 9s
Integration Tests / test (3.4.8, 3.6a) (push) Failing after 8s
Integration Tests / test (4.0.1, 1.5) (push) Failing after 8s
Integration Tests / test (4.0.1, 1.6) (push) Failing after 10s
Integration Tests / test (4.0.1, 1.7) (push) Failing after 8s
Integration Tests / test (4.0.1, 1.8) (push) Failing after 9s
Integration Tests / test (4.0.1, 1.9) (push) Failing after 8s
Integration Tests / test (4.0.1, 2.0) (push) Failing after 8s
Integration Tests / test (4.0.1, 2.1) (push) Failing after 10s
Integration Tests / test (4.0.1, 2.2) (push) Failing after 9s
Integration Tests / test (4.0.1, 2.3) (push) Failing after 8s
Integration Tests / test (4.0.1, 2.4) (push) Failing after 9s
Integration Tests / test (4.0.1, 2.5) (push) Failing after 9s
Integration Tests / test (4.0.1, 2.6) (push) Failing after 9s
Integration Tests / test (4.0.1, 2.7) (push) Failing after 8s
Integration Tests / test (4.0.1, 2.8) (push) Failing after 9s
Integration Tests / test (4.0.1, 2.9) (push) Failing after 8s
Integration Tests / test (4.0.1, 2.9a) (push) Failing after 8s
Integration Tests / test (4.0.1, 3.0) (push) Failing after 8s
Integration Tests / test (4.0.1, 3.0a) (push) Failing after 7s
Integration Tests / test (4.0.1, 3.1) (push) Failing after 9s
Integration Tests / test (4.0.1, 3.1a) (push) Failing after 12s
Integration Tests / test (4.0.1, 3.1b) (push) Failing after 9s
Integration Tests / test (4.0.1, 3.1c) (push) Failing after 8s
Integration Tests / test (4.0.1, 3.2) (push) Failing after 7s
Integration Tests / test (4.0.1, 3.2a) (push) Failing after 8s
Integration Tests / test (4.0.1, 3.3) (push) Failing after 8s
Integration Tests / test (4.0.1, 3.3a) (push) Failing after 10s
Integration Tests / test (4.0.1, 3.4) (push) Failing after 9s
Integration Tests / test (4.0.1, 3.5) (push) Failing after 9s
Integration Tests / test (4.0.1, 3.5a) (push) Failing after 7s
Integration Tests / test (4.0.1, 3.6) (push) Failing after 7s
Integration Tests / test (4.0.1, 3.6a) (push) Failing after 8s
Integration Tests / finish (push) Failing after 9s
* Try add focus pane config * Add focused pane * Update readme and sasmple * Update changelog * Add more tests * Add deprecation message * fix: coerce focused pane indices to integers Metadata - addresses review feedback on quoted numeric values - keeps the fix scoped to Problem Quoted YAML scalars like were treated as integers for validation but returned as strings. That later caused to add a string to , which raised during rendering. Solution Convert validated numeric values with before returning them from , and add a spec that covers quoted indices so the regression stays fixed. * fix: match focused pane names after escaping Metadata - addresses review feedback on named focused panes - keeps the change limited to focused pane lookup logic and its specs Problem Named focused panes were compared against the raw YAML value, but pane titles are stored in escaped form. Pane names containing spaces or shell-sensitive characters therefore failed to match and incorrectly fell back to the first pane. Solution Compare the requested focused pane name using the same shell escaping used when pane titles are stored, and add a regression spec that covers a pane name containing spaces. * chore: drop unrelated tool version pin Metadata - removes contributor-local environment pinning from the PR - keeps the feature branch focused on `focused_pane` changes Problem The branch included `.tool-versions`, which does not affect the `focused_pane` feature and introduces an unreviewed repository-wide tooling decision. Solution Remove `.tool-versions` so the branch stays scoped to the pane-focus feature and its supporting tests and documentation. * test: cover focused pane render paths Metadata - adds render-level coverage for normal and wemux templates - verifies deprecated `startup_pane` output remains intact Problem The branch only tested helper methods for focused pane selection. It did not prove that the generated tmux scripts emitted the correct `select-pane` commands for normal renders, wemux renders, or the deprecated `startup_pane` compatibility path. Solution Add render assertions that exercise the generated scripts directly, covering `focused_pane` in the standard and wemux templates and `startup_pane` in the standard template. * docs: clarify focused pane and startup pane behavior Metadata - updates README and sample configuration guidance for pane selection - folds the prior docs-only follow-up commits into one coherent change Problem The documentation around pane selection was incomplete and then overstated the relationship between `focused_pane` and `startup_pane`. It did not clearly explain that `focused_pane` is window-scoped while `startup_window` and `startup_pane` still determine the final startup selection. Solution Document `startup_pane` as a supported top-level setting, clarify that `focused_pane` applies within a window, and explain how `focused_pane`, `startup_window`, and `startup_pane` interact during project startup. * fix: preserve default startup pane selection Metadata - scope: startup pane fallback - tests: rspec spec/lib/tmuxinator/project_spec.rb Problem When startup_pane is omitted, tmux_startup_pane_command returns an empty string. That lets a window-level focused_pane in the startup window control the final attached pane, which regresses the long-standing default of attaching to the first pane. Solution Make tmux_startup_pane_command explicitly select the first pane in startup_window when no global startup_pane is configured. Add a regression spec that renders a startup window with focused_pane set and verifies the final startup selection still targets pane 0, plus a direct unit spec for the fallback command. * fix: treat blank startup pane as unset Metadata - scope: startup pane fallback - tests: rspec spec/lib/tmuxinator/project_spec.rb spec/lib/tmuxinator/window_spec.rb Problem A blank startup_pane value is truthy in Ruby, so tmux_startup_pane_command treats it as configured and builds an invalid select-pane target. That leaves a remaining edge case even after restoring the default first-pane selection when startup_pane is omitted. Solution Treat blank startup_pane values as unset and fall back to the first pane in startup_window. Add a regression spec that covers startup_pane set to an empty string so the invalid target cannot reappear. * chore: clean up focused pane review nits Metadata - scope: focused pane follow-up cleanup - tests: rspec spec/lib/tmuxinator/project_spec.rb spec/lib/tmuxinator/window_spec.rb Problem The review surfaced a few low-risk cleanup issues around the focused pane changes: a shadowing local variable, a typo in a code comment, a sloppy spec description, and inconsistent tmux capitalization in the README. Solution Rename the local focused pane config variable to avoid shadowing the helper method, fix the typo in the fallback comment, tighten the spec description text, and normalize the README wording to tmux v2.6. * fix: clamp invalid focused pane indexes Metadata - addresses review feedback for out-of-range values - scope: pane selection and specs Problem Numeric values were accepted without checking whether the pane existed. Invalid indexes generated commands that tmux rejected, leaving focus on an arbitrary pane. Solution Validate numeric pane indexes against the parsed pane list and fall back to the first pane when the requested index is out of range. Add spec coverage for integer and quoted integer values that point past the available panes. * fix: preserve startup pane defaults Metadata - addresses review feedback on `Project#startup_pane` - scope: startup pane target selection and related specs Problem `Project#startup_pane` returned an invalid target ending in `.` when `startup_pane` was unset or blank. The helper method still existed and no longer preserved the long-standing default of selecting the first pane. The deprecation note on `tmux_startup_pane_command` also implied the method itself was deprecated, which was misleading. Solution Make `startup_pane` treat blank and unset values as a request for the first pane in the startup window, and have `tmux_startup_pane_command` consistently use that helper. Remove the misleading deprecation comment and add specs that cover the helper directly for configured, unset, and blank values. * style: satisfy rubocop for startup pane helper Metadata - follows repo RuboCop enforcement for the startup pane changes - scope: `Tmuxinator::Project#startup_pane` Problem The previous `startup_pane` fix introduced a line-length violation in `project.rb`, which would fail the repo's RuboCop check. Solution Rewrite the pane selection assignment in multiline form so the helper remains readable and passes the configured RuboCop rules without changing behavior. * docs: restore readme yaml guidance Metadata - narrows README churn on the focused pane branch - scope: user guidance around pane configuration examples Problem The branch removed the longstanding README warning about YAML indentation and the note about custom layout inconsistencies, even though those behaviors were not changed by the focused pane work. Those notes still help users debug common configuration mistakes. Solution Restore the YAML indentation warning and the existing custom layout note, keeping their prior external references while leaving the focused pane documentation intact. * fix: harden focused pane index handling Metadata - Addresses unresolved PR #952 review comments for focused_pane validation and docs. - Keeps the existing startup_pane behavior explicit in the user-facing examples. Problem - Negative focused_pane values were accepted because Ruby arrays support negative indexing, which could generate an invalid tmux target or focus the wrong pane. - The local variable inside pane_index shadowed the method name, which made the control flow harder to read. - The startup_pane comments in the README and sample config no longer stated the default first-pane behavior when unset. Solution - Reject negative integer focused_pane values before indexing panes and fall back to the first pane. - Rename the local parsed index variable to idx and add specs for -1 and "-1" fallback behavior. - Restore the startup-pane documentation note that the first pane is used when the setting is not provided. * fix: restore public startup_pane API Metadata - Scope: startup_pane visibility - Review: address P2 regression from the focus-pane patch Problem - The recent refactor moved startup_pane below the class private marker. - Existing Ruby callers that invoke project.startup_pane now raise NoMethodError. - The spec only exercised the method via send, so the visibility regression was not covered. Solution - Re-expose startup_pane as a public instance method. - Update the project spec to call startup_pane directly so the public contract is enforced. Signed-off-by: Andrew Kofink <ajkofink@gmail.com> --------- Signed-off-by: Andrew Kofink <ajkofink@gmail.com> Co-authored-by: Andrew Kofink <ajkofink@gmail.com>