Match Solo summary cadence options
This commit is contained in:
@@ -22,7 +22,10 @@ loosely follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|||||||
summaries, choose provider, edit provider model names, cycle cadence,
|
summaries, choose provider, edit provider model names, cycle cadence,
|
||||||
test the selected summarizer (`patterm okay`), summarize the current
|
test the selected summarizer (`patterm okay`), summarize the current
|
||||||
top-level agent immediately, and explicitly save or cancel draft
|
top-level agent immediately, and explicitly save or cancel draft
|
||||||
settings changes.
|
settings changes. Cadence choices match Solo: `15s`, `30s`, and
|
||||||
|
`1m`; the value is a minimum quiet/activity gap before another
|
||||||
|
summary attempt for the same top-level agent, not a background
|
||||||
|
periodic timer.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- Command palette UX overhaul. The single flat list grew section
|
- Command palette UX overhaul. The single flat list grew section
|
||||||
|
|||||||
@@ -1341,12 +1341,12 @@ func (p *paletteState) activateAutoSummaryRow() (paletteAction, bool, int) {
|
|||||||
p.mode = paletteModeSettingsInput
|
p.mode = paletteModeSettingsInput
|
||||||
case "cadence":
|
case "cadence":
|
||||||
switch p.settings.AutoSummary.Cadence {
|
switch p.settings.AutoSummary.Cadence {
|
||||||
case "5m":
|
case "15s":
|
||||||
p.settings.AutoSummary.Cadence = "15m"
|
p.settings.AutoSummary.Cadence = "30s"
|
||||||
case "15m":
|
case "30s":
|
||||||
p.settings.AutoSummary.Cadence = "30m"
|
p.settings.AutoSummary.Cadence = "1m"
|
||||||
default:
|
default:
|
||||||
p.settings.AutoSummary.Cadence = "5m"
|
p.settings.AutoSummary.Cadence = "15s"
|
||||||
}
|
}
|
||||||
case "test":
|
case "test":
|
||||||
return p.settingsAction("settings-test"), true, 1
|
return p.settingsAction("settings-test"), true, 1
|
||||||
@@ -1472,7 +1472,7 @@ func (p *paletteState) renderAutoSummary(out writeFlusher, cols, rows int) {
|
|||||||
moveTo(&b, row, leftPad)
|
moveTo(&b, row, leftPad)
|
||||||
b.WriteString(styleBorder + "├" + strings.Repeat("─", width-2) + "┤" + styleReset)
|
b.WriteString(styleBorder + "├" + strings.Repeat("─", width-2) + "┤" + styleReset)
|
||||||
row++
|
row++
|
||||||
footer := styleHint + "↵ edit/toggle · save row commits · esc cancel" + styleReset
|
footer := styleHint + "↵ edit/toggle · cadence 15s/30s/1m · save row commits · esc cancel" + styleReset
|
||||||
if visibleLen(footer) > content {
|
if visibleLen(footer) > content {
|
||||||
footer = clipRunes(footer, content-1) + "…"
|
footer = clipRunes(footer, content-1) + "…"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -321,6 +321,32 @@ func TestPaletteAltDigitQuickPick(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAutoSummaryCadenceCyclesSoloValues(t *testing.T) {
|
||||||
|
p := newPalette(nil, "", "", preset.Set{}, defaultSettings())
|
||||||
|
p.mode = paletteModeAutoSummary
|
||||||
|
for i, row := range autoSummaryRows() {
|
||||||
|
if row.key == "cadence" {
|
||||||
|
p.cursor = i
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if p.settings.AutoSummary.Cadence != "1m" {
|
||||||
|
t.Fatalf("initial cadence = %q", p.settings.AutoSummary.Cadence)
|
||||||
|
}
|
||||||
|
p.activateAutoSummaryRow()
|
||||||
|
if p.settings.AutoSummary.Cadence != "15s" {
|
||||||
|
t.Fatalf("first cycle cadence = %q", p.settings.AutoSummary.Cadence)
|
||||||
|
}
|
||||||
|
p.activateAutoSummaryRow()
|
||||||
|
if p.settings.AutoSummary.Cadence != "30s" {
|
||||||
|
t.Fatalf("second cycle cadence = %q", p.settings.AutoSummary.Cadence)
|
||||||
|
}
|
||||||
|
p.activateAutoSummaryRow()
|
||||||
|
if p.settings.AutoSummary.Cadence != "1m" {
|
||||||
|
t.Fatalf("third cycle cadence = %q", p.settings.AutoSummary.Cadence)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestPaletteFormCtrlRTogglesRelaunchFromCommandField(t *testing.T) {
|
func TestPaletteFormCtrlRTogglesRelaunchFromCommandField(t *testing.T) {
|
||||||
p := newPalette(nil, "", "", preset.Set{})
|
p := newPalette(nil, "", "", preset.Set{})
|
||||||
p.mode = paletteModeSpawnForm
|
p.mode = paletteModeSpawnForm
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ func defaultSettings() settings {
|
|||||||
Enabled: true,
|
Enabled: true,
|
||||||
Provider: defaultSummaryProvider,
|
Provider: defaultSummaryProvider,
|
||||||
Models: defaultSummaryModels(),
|
Models: defaultSummaryModels(),
|
||||||
Cadence: "5m",
|
Cadence: "1m",
|
||||||
QuietWindowMS: 3000,
|
QuietWindowMS: 3000,
|
||||||
MinInputChars: 4,
|
MinInputChars: 4,
|
||||||
MaxHistoryChars: 12000,
|
MaxHistoryChars: 12000,
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ func TestLoadSettingsDefaults(t *testing.T) {
|
|||||||
if st.AutoSummary.Provider != "codex" {
|
if st.AutoSummary.Provider != "codex" {
|
||||||
t.Fatalf("provider = %q want codex", st.AutoSummary.Provider)
|
t.Fatalf("provider = %q want codex", st.AutoSummary.Provider)
|
||||||
}
|
}
|
||||||
|
if st.AutoSummary.Cadence != "1m" {
|
||||||
|
t.Fatalf("cadence = %q want 1m", st.AutoSummary.Cadence)
|
||||||
|
}
|
||||||
if got := st.AutoSummary.modelFor("codex"); got != "gpt-5.4-mini" {
|
if got := st.AutoSummary.modelFor("codex"); got != "gpt-5.4-mini" {
|
||||||
t.Fatalf("codex model = %q", got)
|
t.Fatalf("codex model = %q", got)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ func (m *summaryManager) maybeStart(ctx context.Context, now time.Time) {
|
|||||||
}
|
}
|
||||||
cadence, err := time.ParseDuration(cfg.Cadence)
|
cadence, err := time.ParseDuration(cfg.Cadence)
|
||||||
if err != nil || cadence <= 0 {
|
if err != nil || cadence <= 0 {
|
||||||
cadence = 5 * time.Minute
|
cadence = time.Minute
|
||||||
}
|
}
|
||||||
quiet := time.Duration(cfg.QuietWindowMS) * time.Millisecond
|
quiet := time.Duration(cfg.QuietWindowMS) * time.Millisecond
|
||||||
var startID string
|
var startID string
|
||||||
|
|||||||
Reference in New Issue
Block a user