feat(settings): add session summaries toggle and guidance skill - #3382
Conversation
GPT 5.6 Review — ✅ no blocking findingsGPT 5.6 completed its review of This comment is updated in place on each push. Review detailsNo findings. False positive or not applicable? A repository writer can comment: |
Design Review (Fable 5) — ✅ PASSAdvisory design-level review of Design-Verdict: PASS Additive, opt-in, fully reversible surfacing of an already-shipped feature — allowlist entry, toggle, and guidance skill each sit at the right layer. [DESIGN-REVIEWED] b22889a |
UX Review (Fable 5) — 🟡 CONCERNSAdvisory UX-level review of UX-Verdict: CONCERNS The skill tells the agent to "point them there," but the toggle ships without the deep-link hook and never says where summaries appear. Watch
Suggestions
[UX-REVIEWED] b22889a |
Opus 4.8 Review — ✅ no blocking findingsReviewed Review detailsThe mechanism is fully verified: the new No blocking findings; one advisory. FINDING — website/src/pages/settings/ChatPanel.tsx:608 — the new config-writing [OPUS-REVIEWED] b22889a Verdict parsed from the review's SHA-scoped output markers for commit False positive or not applicable? A repository writer can comment: |
a4e637c to
45657f9
Compare
45657f9 to
3d4f090
Compare
Surface the session_summary.enabled config in Settings > Chat > Sessions as an opt-in toggle (off by default; states the per-turn token cost). Adds the key to the editable-config allowlist, a guidance-only builtin skill, and 12-locale strings.
3d4f090 to
b22889a
Compare
…dotdev#3382) Surface the session_summary.enabled config in Settings > Chat > Sessions as an opt-in toggle (off by default; states the per-turn token cost). Adds the key to the editable-config allowlist, a guidance-only builtin skill, and 12-locale strings.
Problem
The session summary feature (chat right-panel intent summaries) shipped its backend in PR #2855 and its panel UI in #3169, but there was no user-facing way to turn it on. The
session_summary.enabledconfig existed only as a file-edit — a user would have to hand-editconfig.jsonto enable a feature that is deliberately off by default.Why it matters
Summarizing spends tokens on a turn the user did not explicitly ask to pay for, so the feature must stay opt-in. An opt-in with no UI is effectively undiscoverable: the panel ships dark for everyone, and the only path to enable it is undocumented config surgery. This is the third and final staged PR that makes the feature reachable.
Fix (symptom → root cause → change)
Symptom: no control to enable session summaries. Root cause: the config key was never surfaced in the dashboard and was not in the editable-config allowlist, so even a PATCH would be rejected. Change:
"session_summary.enabled": {"type": "bool"}to_EDITABLE_CONFIGindashboard/handlers/core.py. Only the boolean enable is editable; the cadence/cap fields (min_user_turns,max_intents, …) stay config-file-only as power-user knobs.website/src/pages/settings/ChatPanel.tsx), wired topatchConfig('session_summary.enabled', …)following the existing server-config toggle pattern (prevent-sleep / knowledge). Copy states plainly that enabling costs tokens on turns that change the session, and that unchanged sessions are served free from cache.src/kiro_crew/builtin_skills/session-summaries/SKILL.mdthat explains the panel, its cost model, and how to make a session summarize well. It does not enable the feature or trigger generation, and holds no runtime-written frontmatter (a builtin skill is re-synced byrmtree+copytreeon upgrade).session_summaries, its description,failed_to_save_session_summaries) inen.manual.jsonand all 11 translation catalogs;en-XApseudolocale regenerated.settingsRegistry.gen.tsregenerated so the toggle is searchable in the command palette.docs/system-specs/modules/memory-skills-hooks.md.Tests
No new dedicated test — the toggle reuses the shared
SettingsToggle+ server-config-PATCH path already covered bySettingsChatPanelCoverage, and the new config key is exercised by the parametrized editable-config PATCH tests. Locking gates that pass on this change:flake8/isort/black/mypyon the changed file; targetedpytestfortest_config_api.py,test_config_loader.py,test_portability.py(352 passed).tsc -b,eslint, fulli18n:check(16/16) +i18n:render, ChatPanel + full i18n vitest (incl.catalogParity/zhStyle/hiStyle), and the settings-registry generator test (confirms the checked-in file matches live extraction).Manual verification
Rendered the Settings → Chat → Sessions panel via the repo's built SPA behind a stubbed-
/api/**loopback server + Playwright (the sameserveDist+stubDashboardApiharness the other capture scripts use) — no gateway, so it sidesteps the local isolated-gateway limitation. Verified the new row appears last in the Sessions card, renders the token-cost copy, and shows both the off and enabled toggle states.Screenshots
Session summaries toggle in the Sessions card — off (default) and enabled:
Notes
configKeyprop: it tripped the i18n strict gate (configKeyisn't in thejsx-attributesexemption list, unlikepath), and adding that exemption is a base-rule change this PR should not own. Sibling toggles in the same section omit it too. Cost: no command-palette deep-link to this specific row. A follow-up PR can add the exemption if the deep-link is wanted.