Description
Extend SettingsStore and the Settings pane with Dialogue-relevant preferences: default surface for Claude Code sessions, cost alert thresholds, and Stream Inspector persistence toggle.
Spec: Epic #250 §5 (preferredClaudeSurface); docs/architecture/dialogue-events.md §6.7 (cost thresholds), §8 (inspector persistence).
Scope
SettingsStore
```swift
@published var preferredClaudeSurface: SessionSurface = .agentTerminal(.claudeCode) // first release default
@published var experimentalDialogueEnabled: Bool = false // opt-in flag
@published var dialogueCostWarningUSD: Double = 1.0
@published var dialogueCostBlockingUSD: Double = 5.0
@published var dialoguePersistRawStreams: Bool = false
```
Persist via UserDefaults; add migration for absent keys (default values applied silently).
Settings UI
Add a "Dialogue" (or extend existing "Agents") section in Settings:
- Dialogue default — Picker: Terminal (default) / Dialogue (experimental). Explanatory note: "Dialogue renders Claude Code with markdown, tool cards, and thinking blocks. Opt-in during MVP."
- Cost alerts — two steppers:
- Warn at $: 1.0
- Block at $: 5.0
- Advanced — toggle: "Persist raw event streams (for debugging)".
Wiring
TabFeature.newAgentTab and AgentOrchestratorFeature.newSession(workingDirectory:) read preferredClaudeSurface when user didn't specify explicitly.
AgentChatFeature reducer reads cost thresholds.
StreamInspectorStore reads persistence toggle.
Acceptance Criteria
Relationships
Description
Extend
SettingsStoreand the Settings pane with Dialogue-relevant preferences: default surface for Claude Code sessions, cost alert thresholds, and Stream Inspector persistence toggle.Spec: Epic #250 §5 (preferredClaudeSurface); docs/architecture/dialogue-events.md §6.7 (cost thresholds), §8 (inspector persistence).
Scope
SettingsStore
```swift
@published var preferredClaudeSurface: SessionSurface = .agentTerminal(.claudeCode) // first release default
@published var experimentalDialogueEnabled: Bool = false // opt-in flag
@published var dialogueCostWarningUSD: Double = 1.0
@published var dialogueCostBlockingUSD: Double = 5.0
@published var dialoguePersistRawStreams: Bool = false
```
Persist via UserDefaults; add migration for absent keys (default values applied silently).
Settings UI
Add a "Dialogue" (or extend existing "Agents") section in Settings:
Wiring
TabFeature.newAgentTabandAgentOrchestratorFeature.newSession(workingDirectory:)readpreferredClaudeSurfacewhen user didn't specify explicitly.AgentChatFeaturereducer reads cost thresholds.StreamInspectorStorereads persistence toggle.Acceptance Criteria
Relationships