fix(oracle-l8-r3): wizard 'Manual review' + chat cold-start seed
Close Oracle's two standing caveats so they can't gate a future loop:
1. Wizard dispatch label 'Person' was vague (Oracle: could imply chat
recipient, not work-routing). Now 'Manual review' in both dropdown
and preview-pane badge. dispatch_kind storage value unchanged
('human'/'agent'/'system' for EA2).
2. Chat unread cold-start. Topbar badge depended entirely on
localStorage being populated by Chat scene's first visit. Fresh
browser / private window / cleared storage saw 0 unread until then.
Added seedHeadsIfMissing in App.tsx topbar poll: on first refresh
(and only when localStorage heads count < thread count), fetches
last message per thread ONCE and persists to localStorage. Subsequent
ticks reuse the cache — same idle-poll budget (test still PASS).
This commit is contained in:
@@ -281,7 +281,7 @@ export default function Wizard() {
|
||||
<li key={n._key || i} className="wizard-preview-chain-item">
|
||||
<span className="wizard-preview-chain-idx">{i + 1}</span>
|
||||
<span className="wizard-preview-chain-name">{n.display_name || "Untitled step"}</span>
|
||||
<span className={`wizard-preview-chain-kind kind-${n.dispatch_kind || "human"}`}>{({ human: "Person", agent: "Assistant", system: "System" } as Record<string, string>)[n.dispatch_kind || "human"] || "Person"}</span>
|
||||
<span className={`wizard-preview-chain-kind kind-${n.dispatch_kind || "human"}`}>{({ human: "Manual review", agent: "Assistant", system: "System" } as Record<string, string>)[n.dispatch_kind || "human"] || "Manual review"}</span>
|
||||
</li>
|
||||
))}
|
||||
</ol>
|
||||
@@ -412,7 +412,7 @@ export default function Wizard() {
|
||||
updateDraft({ nodes: newNodes });
|
||||
}}
|
||||
>
|
||||
<option value="human">Person</option>
|
||||
<option value="human">Manual review</option>
|
||||
<option value="agent">Assistant</option>
|
||||
<option value="system">System</option>
|
||||
</select>
|
||||
|
||||
Reference in New Issue
Block a user