Data Model: Fix Thinking Panel Re-Expand (095)
Feature: 095-fix-thinking-panel-expand
Date: 2026-03-18
This feature is UI-only. No persistence or API changes. The following describes the state and inputs that drive the thinking panel behavior.
Entities (logical)​
Message (existing)​
- Completion status: Whether the message is final (streaming complete). Exposed as e.g.
message.isFinal(boolean). - When
true, the response is complete and the thinking panel should default to collapsed when the message is displayed.
Thinking panel state (local UI state)​
- Expanded / collapsed: Boolean (e.g.
showRawStream). - Initial value (per mount):
- If
message.isFinal === true→ initial value is collapsed (false). - Else → initial value is the user default (e.g. from feature flag
showThinking).
- If
- After mount: User can toggle; state is local to the component instance and resets on remount (e.g. when switching conversations).
User preference (existing)​
- Default for streaming: e.g. feature flag
showThinking(boolean, default true). Used only when the message is not final.
State transitions​
- On mount:
showRawStreamis set once viauseState(initializer)frommessage.isFinaland user default. - On user toggle:
setShowRawStreamupdates local state; no persistence. - On unmount/remount: New instance; initial state is recomputed from current
message.isFinaland user default.
No new entities or storage; only the rule for the initial value of existing local state is changed.