Respect user tmux option overrides in status bar config#330
Merged
asheshgoplani merged 5 commits intoasheshgoplani:mainfrom Mar 17, 2026
Merged
Conversation
johnuopini
added a commit
to johnuopini/agent-deck
that referenced
this pull request
Mar 13, 2026
Includes PR asheshgoplani#330 status bar override fix.
johnuopini
added a commit
to johnuopini/agent-deck
that referenced
this pull request
Mar 15, 2026
Includes PR asheshgoplani#330 status bar override fix.
Verify that status bar configuration respects user-defined tmux options by skipping managed defaults when overrides are present.
Extract buildStatusBarArgs from ConfigureStatusBar and skip any managed default whose key appears in OptionOverrides, so user-defined [tmux] options take precedence over agent-deck defaults.
Covers the nil-return path when all 5 managed status bar keys are present in OptionOverrides.
When sessions are loaded from storage via ReconnectSessionLazy, OptionOverrides was never populated. This caused EnsureConfigured -> ConfigureStatusBar to ignore user overrides (e.g. status = "2") and unconditionally set status = "on", clobbering multi-line status bars. The Start() paths already set OptionOverrides via buildTmuxOptionOverrides(), but the reconnect path in loadInstancesFromDB was missing it.
3d20cd0 to
19550f8
Compare
johnuopini
added a commit
to johnuopini/agent-deck
that referenced
this pull request
Mar 17, 2026
Includes PR asheshgoplani#330 status bar override fix.
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
[tmux] optionsthat match agent-deck's managed status bar keys (status,status-style,status-left-length,status-right,status-right-length), agent-deck now skips its default for that key instead of silently overwriting itbuildStatusBarArgs()fromConfigureStatusBar()to separate pure logic from subprocess execution, enabling unit testingoptions = { "status" = "2" })Motivation
Agent-deck's
ConfigureStatusBar()hardcodes 5 tmux options per-session, applied on every session create/activate/focus change. Users who set these options via[tmux] optionsinconfig.tomlhad their values immediately overwritten — making it impossible to customize the status bar (e.g. multi-line status withstatus = "2") while keeping agent-deck's notification bar.Approach
buildStatusBarArgs()builds the tmux command dynamically. For each of the 5 managed defaults, it checkss.OptionOverrides— if the user defined that key, it's skipped. Fully backward compatible: empty/nil options map produces identical behavior to the original code.Test plan
history-limit) — all defaults appliedinject_status_line = false— returns nil (unchanged behavior)