You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implement the information architecture in docs/specs/2026-08-18-harness-studio-information-architecture.md. Keep retained Inspector evidence separate from live AG-UI runs, expose honest foundation states, and preserve responsive experiment navigation without interaction overlays.
Validated with Harness Studio typecheck, 79 Vitest tests, 4 Playwright Chromium flows, 6 doc-link tests, and the root preview health and canvas-module smoke checks.
Co-authored-by: Codex (GPT 5.6 Sol) <codex@openai.com>
return<mainclassName="studio-loading"><spanclassName="studio-loading-mark"><GitBranchsize={18}weight="bold"/></span><p>Loading Harness control plane…</p></main>;
95
119
}
120
+
if(configFailure!==null){
121
+
return<mainclassName="studio-loading"role="alert"><spanclassName="studio-loading-mark"><GitBranchsize={18}weight="bold"/></span><strong>Cannot load Studio configuration.</strong><p>{configFailure}</p></main>;
<buttonclassName="studio-nav-backdrop"type="button"aria-label="Close Studio navigation"onClick={()=>setNavigationOpen(false)}/>
143
+
<buttonclassName="studio-nav-backdrop"type="button"aria-label="Close Studio navigation"onClick={()=>{setNavigationOpen(false);navigationToggleRef.current?.focus();}}/>
125
144
<sectionclassName="studio-area">
126
-
<headerclassName="studio-context-bar">
127
-
<buttonclassName="studio-nav-toggle"type="button"aria-label="Open Studio navigation"aria-expanded={navigationOpen}onClick={()=>setNavigationOpen((value)=>!value)}><SidebarSimplesize={17}/></button>
<buttonref={navigationToggleRef}className="studio-nav-toggle"type="button"aria-label={navigationOpen ? "Close Studio navigation" : "Open Studio navigation"}aria-expanded={navigationOpen}onClick={()=>setNavigationOpen((value)=>!value)}><SidebarSimplesize={17}/></button>
<divclassName="studio-context-state"><spanclassName={`availability-dot availability-${current.availability}`}/><strong>{current.status}</strong><span>Local control plane</span></div>
return<EmptyWorkspaceeyebrow="Observed delivery"title="Connect an Inspector report"detail="Render a privacy-filtered Harness Inspector HTML report, then start Studio with --inspector <report.html>. Session inspection becomes available when a Harness runtime is loaded."command="--inspector ./harness-inspector.html"/>;
return<EmptyWorkspaceeyebrow="Observed delivery"title="Connect an Inspector report"detail="Render a privacy-filtered Harness Inspector HTML report, then start Studio with --inspector <report.html>. Live runs remain under Experiments until Studio has a retained-session contract."command="--inspector ./harness-inspector.html"/>;
return<EmptyWorkspaceeyebrow="Observed delivery"title="Connect an Inspector report"detail="Inspector requires retained, privacy-filtered evidence. It never substitutes the recorded Session Debugger fixture for a real workspace."command="--inspector ./harness-inspector.html"/>;
0 commit comments