summaryrefslogtreecommitdiff
path: root/internal/appconfig/app_feature_sections.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/appconfig/app_feature_sections.go')
-rw-r--r--internal/appconfig/app_feature_sections.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/internal/appconfig/app_feature_sections.go b/internal/appconfig/app_feature_sections.go
new file mode 100644
index 0000000..2513946
--- /dev/null
+++ b/internal/appconfig/app_feature_sections.go
@@ -0,0 +1,40 @@
+package appconfig
+
+import "slices"
+
+// This file provides fine-grained, read-only accessors for the individual
+// feature subsystems embedded in FeatureConfig. They let a consumer depend on
+// just the subsystem config it needs (e.g. the MCP server only needs MCPConfig)
+// instead of receiving the whole App God-struct. Each accessor returns a deep
+// copy so callers cannot mutate App's internal slices.
+
+// IgnoreSection returns a copy of the gitignore-aware filtering settings.
+func (a *App) IgnoreSection() IgnoreConfig {
+ c := a.IgnoreConfig
+ c.IgnoreExtraPatterns = slices.Clone(a.IgnoreExtraPatterns)
+ return c
+}
+
+// StatsSection returns the usage statistics settings.
+func (a *App) StatsSection() StatsConfig {
+ return a.StatsConfig
+}
+
+// TmuxEditSection returns a copy of the tmux popup editor settings.
+func (a *App) TmuxEditSection() TmuxEditConfig {
+ c := a.TmuxEditConfig
+ c.TmuxEditAgents = append([]TmuxEditAgentCfg{}, a.TmuxEditAgents...)
+ return c
+}
+
+// TmuxActionSection returns a copy of the tmux action menu settings.
+func (a *App) TmuxActionSection() TmuxActionConfig {
+ c := a.TmuxActionConfig
+ c.TmuxActionMenu = append([]TmuxActionMenuEntry{}, a.TmuxActionMenu...)
+ return c
+}
+
+// MCPSection returns the Model Context Protocol server settings.
+func (a *App) MCPSection() MCPConfig {
+ return a.MCPConfig
+}