summaryrefslogtreecommitdiff
path: root/internal/appconfig/feature_sections.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/appconfig/feature_sections.go')
-rw-r--r--internal/appconfig/feature_sections.go50
1 files changed, 50 insertions, 0 deletions
diff --git a/internal/appconfig/feature_sections.go b/internal/appconfig/feature_sections.go
new file mode 100644
index 0000000..9216400
--- /dev/null
+++ b/internal/appconfig/feature_sections.go
@@ -0,0 +1,50 @@
+package appconfig
+
+// This file defines the cohesive per-subsystem config structs that make up
+// FeatureConfig. The old FeatureConfig was a grab-bag that mixed five unrelated
+// non-LLM subsystems (ignore filtering, stats, tmux popup editor, tmux action
+// menu, MCP server). Splitting them into named structs documents the seams
+// between subsystems and lets consumers depend on a single subsystem's config
+// (via the *Section accessors on App) instead of the whole App God-struct.
+//
+// Each struct is embedded into FeatureConfig, so Go field promotion keeps the
+// historical flat access (e.g. cfg.MCPPromptsDir) working for read sites across
+// the codebase. Only composite literals that set these leaf fields directly on
+// FeatureConfig had to move to the nested form.
+
+// IgnoreConfig controls gitignore-aware file filtering for the LSP server.
+// Files matching these patterns are skipped for completions and code actions.
+type IgnoreConfig struct {
+ // IgnoreGitignore enables respecting .gitignore entries (default true).
+ IgnoreGitignore *bool `json:"-"`
+ // IgnoreExtraPatterns are additional glob patterns to always ignore.
+ IgnoreExtraPatterns []string `json:"-"`
+ // IgnoreLSPNotify controls whether the LSP notifies when ignoring a file.
+ IgnoreLSPNotify *bool `json:"-"`
+}
+
+// StatsConfig holds settings for the usage statistics subsystem.
+type StatsConfig struct {
+ // StatsWindowMinutes is the rolling window (in minutes) used for stats.
+ StatsWindowMinutes int `json:"-"`
+}
+
+// TmuxEditConfig configures the tmux popup editor feature (hexai-tmux-edit).
+type TmuxEditConfig struct {
+ TmuxEditPopupWidth string `json:"-"`
+ TmuxEditPopupHeight string `json:"-"`
+ TmuxEditDefaultAgent string `json:"-"`
+ TmuxEditAgents []TmuxEditAgentCfg `json:"-"`
+}
+
+// TmuxActionConfig configures the main menu for hexai-tmux-action.
+type TmuxActionConfig struct {
+ TmuxActionMenu []TmuxActionMenuEntry `json:"-"`
+}
+
+// MCPConfig holds Model Context Protocol server settings.
+type MCPConfig struct {
+ MCPPromptsDir string `json:"-"` // Directory for prompt storage
+ MCPSlashCommandSync bool `json:"-"` // Enable slash command sync
+ MCPSlashCommandDir string `json:"-"` // Directory for slash command files
+}