Finish settings TODO cleanup

This commit is contained in:
2026-05-18 10:05:26 +01:00
parent cadd4c8f64
commit f10598601f
8 changed files with 131 additions and 86 deletions

View File

@@ -1277,8 +1277,11 @@ func (p *paletteState) handleSettingsTextInput(chunk []byte, i int) (paletteActi
}
switch b {
case '\r', '\n':
p.applySettingsInput()
changed := p.applySettingsInput()
p.mode = paletteModeAutoSummary
if changed {
return p.settingsAction("settings-save"), false, 1
}
case 0x7f, 0x08:
if len(p.settingsInput.value) > 0 {
p.settingsInput.value = p.settingsInput.value[:len(p.settingsInput.value)-1]
@@ -1310,7 +1313,6 @@ func autoSummaryRows() []autoSummaryRow {
{key: "run_now", label: "Summarize current top-level agent now"},
{key: "save", label: "Save settings"},
{key: "cancel", label: "Cancel"},
{key: "back", label: "Back to Settings"},
}
}
@@ -1322,6 +1324,8 @@ func (p *paletteState) activateAutoSummaryRow() (paletteAction, bool, int) {
switch rows[p.cursor].key {
case "enabled":
p.settings.AutoSummary.Enabled = !p.settings.AutoSummary.Enabled
p.settings.normalize()
return p.settingsAction("settings-save"), false, 1
case "provider":
switch p.settings.AutoSummary.Provider {
case "codex":
@@ -1331,6 +1335,8 @@ func (p *paletteState) activateAutoSummaryRow() (paletteAction, bool, int) {
default:
p.settings.AutoSummary.Provider = "codex"
}
p.settings.normalize()
return p.settingsAction("settings-save"), false, 1
case "codex_model", "opencode_model", "claude_model":
provider := strings.TrimSuffix(rows[p.cursor].key, "_model")
p.settingsInput = &settingsInputForm{
@@ -1349,6 +1355,8 @@ func (p *paletteState) activateAutoSummaryRow() (paletteAction, bool, int) {
default:
p.settings.AutoSummary.Cadence = "15s"
}
p.settings.normalize()
return p.settingsAction("settings-save"), false, 1
case "test":
return p.settingsAction("settings-test"), true, 1
case "run_now":
@@ -1357,36 +1365,36 @@ func (p *paletteState) activateAutoSummaryRow() (paletteAction, bool, int) {
return p.settingsAction("settings-close"), true, 1
case "cancel":
return paletteAction{kind: "cancel"}, true, 1
case "back":
p.mode = paletteModeSettings
p.cursor = 0
p.query = nil
p.rebuildSettings()
}
p.settings.normalize()
return paletteAction{}, false, 1
}
func (p *paletteState) applySettingsInput() {
func (p *paletteState) applySettingsInput() bool {
if p.settingsInput == nil {
return
return false
}
val := strings.TrimSpace(string(p.settingsInput.value))
if val == "" {
return
return false
}
if p.settings.AutoSummary.Models == nil {
p.settings.AutoSummary.Models = defaultSummaryModels()
}
changed := false
switch p.settingsInput.field {
case "codex_model":
changed = p.settings.AutoSummary.Models["codex"] != val
p.settings.AutoSummary.Models["codex"] = val
case "opencode_model":
changed = p.settings.AutoSummary.Models["opencode"] != val
p.settings.AutoSummary.Models["opencode"] = val
case "claude_model":
changed = p.settings.AutoSummary.Models["claude"] != val
p.settings.AutoSummary.Models["claude"] = val
}
p.settings.normalize()
return changed
}
func (p *paletteState) settingsCloseAction() paletteAction {
@@ -1473,7 +1481,7 @@ func (p *paletteState) renderAutoSummary(out writeFlusher, cols, rows int) {
moveTo(&b, row, leftPad)
b.WriteString(styleBorder + "├" + strings.Repeat("─", width-2) + "┤" + styleReset)
row++
footer := styleHint + "↵ edit/toggle · cadence 15s/30s/1m · save row commits · esc cancel" + styleReset
footer := styleHint + "↵ edit/toggle · changes save when applied · esc cancel" + styleReset
if visibleLen(footer) > content {
footer = clipRunes(footer, content-1) + "…"
}
@@ -1503,7 +1511,7 @@ func (p *paletteState) autoSummaryDisplayRows() []string {
var out []string
for _, row := range autoSummaryRows() {
if v, ok := values[row.key]; ok {
out = append(out, row.label+": "+v)
out = append(out, styleHint+row.label+":"+styleReset+" "+v)
} else {
out = append(out, row.label)
}