summaryrefslogtreecommitdiff
path: root/internal/appconfig/app_sections.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-25 16:12:23 +0300
committerPaul Buetow <paul@buetow.org>2026-04-25 16:12:23 +0300
commita1031b761ff0c5cd79f3f0906e5c3b33fa849f37 (patch)
tree18e9401ecc83ebe0c1a35bf92152a81a195e24f2 /internal/appconfig/app_sections.go
parentc73a92022d39e73d41b00cf72d959bf0d26c8d6f (diff)
feat: configurable hexai-tmux-action menu via [[tmux_action.menu]]
When [[tmux_action.menu]] is defined in config it fully replaces the built-in menu. Each entry takes a kind (built-in or "custom"), optional title/hotkey overrides, and optional custom_id for embedding custom actions directly in the main menu. Hotkey dispatch is now dynamic so any single-character hotkey works without code changes. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'internal/appconfig/app_sections.go')
-rw-r--r--internal/appconfig/app_sections.go4
1 files changed, 4 insertions, 0 deletions
diff --git a/internal/appconfig/app_sections.go b/internal/appconfig/app_sections.go
index 5426f2a..6dd60c6 100644
--- a/internal/appconfig/app_sections.go
+++ b/internal/appconfig/app_sections.go
@@ -114,6 +114,8 @@ type FeatureConfig struct {
TmuxEditPopupHeight string `json:"-"`
TmuxEditDefaultAgent string `json:"-"`
TmuxEditAgents []TmuxEditAgentCfg `json:"-"`
+ // TmuxAction: configurable main menu for hexai-tmux-action
+ TmuxActionMenu []TmuxActionMenuEntry `json:"-"`
// MCP: Model Context Protocol server settings
MCPPromptsDir string `json:"-"` // Directory for prompt storage
MCPSlashCommandSync bool `json:"-"` // Enable slash command sync
@@ -205,6 +207,7 @@ func (a *App) FeatureSection() FeatureConfig {
f := a.FeatureConfig
f.IgnoreExtraPatterns = slices.Clone(a.IgnoreExtraPatterns)
f.TmuxEditAgents = append([]TmuxEditAgentCfg{}, a.TmuxEditAgents...)
+ f.TmuxActionMenu = append([]TmuxActionMenuEntry{}, a.TmuxActionMenu...)
return f
}
@@ -214,4 +217,5 @@ func (a *App) ApplyFeatureSection(features FeatureConfig) {
a.FeatureConfig = features
a.IgnoreExtraPatterns = slices.Clone(features.IgnoreExtraPatterns)
a.TmuxEditAgents = append([]TmuxEditAgentCfg{}, features.TmuxEditAgents...)
+ a.TmuxActionMenu = append([]TmuxActionMenuEntry{}, features.TmuxActionMenu...)
}