Commit a73519b
feat(studio): mount the React Inspector workbench as the primary Sessions surface
Sessions previously reused only Inspector's session discovery and rendered a
compact catalog, while the full workbench lived in a standalone HTML page whose
`workbench.js` Studio executed inside a scoped shadow-DOM runtime. Rebuild the
complete Inspector interaction natively in React: Capability/Date navigation,
scope metrics, evidence workbench cards, and the retained Session drawer are now
React-owned state and components, so Studio no longer loads or evals the legacy
Inspector script. The original Inspector stylesheet stays the visual contract,
and the compact catalog remains an explicit secondary Catalog & Compare view via
an accessible, keyboard-usable tab switch.
Build a bounded HarnessInspectorReportV1 during workspace discovery from the same
normalized provider sessions (commits, checkpoints, correlation, and the
workspace Feature Tree), retain it only in the server-side active workspace, and
serve it through a workspace-scoped `GET /api/workspace-inspector-report` with
`Cache-Control: no-store`. A new `workspaceWorkbenchEnabled` config flag drives
the default surface and falls back to the catalog with an actionable status when
structured data is unavailable. Drop the `workbench.js` build copy.
Spec: docs/specs/2026-08-20-harness-studio-local-web-workspace.md
Test: studio typecheck clean; 121 unit + 16 Playwright pass; 1412 repo tests pass
Co-authored-by: QoderAI (Qwen 3.8 Max) <qoder_ai@qoder.com>1 parent 4a601c7 commit a73519b
12 files changed
Lines changed: 557 additions & 314 deletions
File tree
- docs/specs
- packages/harness-studio
- scripts
- src
- app
- styles
- server
- test
- browser
Lines changed: 44 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
60 | 70 | | |
61 | 71 | | |
62 | 72 | | |
| |||
96 | 106 | | |
97 | 107 | | |
98 | 108 | | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
99 | 118 | | |
100 | 119 | | |
101 | 120 | | |
102 | 121 | | |
103 | 122 | | |
104 | 123 | | |
| 124 | + | |
| 125 | + | |
105 | 126 | | |
106 | 127 | | |
107 | 128 | | |
| |||
148 | 169 | | |
149 | 170 | | |
150 | 171 | | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
151 | 181 | | |
152 | 182 | | |
153 | 183 | | |
| |||
168 | 198 | | |
169 | 199 | | |
170 | 200 | | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
171 | 208 | | |
172 | 209 | | |
173 | 210 | | |
| |||
178 | 215 | | |
179 | 216 | | |
180 | 217 | | |
181 | | - | |
| 218 | + | |
| 219 | + | |
182 | 220 | | |
183 | 221 | | |
184 | | - | |
| 222 | + | |
| 223 | + | |
185 | 224 | | |
186 | 225 | | |
187 | 226 | | |
| |||
197 | 236 | | |
198 | 237 | | |
199 | 238 | | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
34 | | - | |
35 | 34 | | |
36 | 35 | | |
37 | 36 | | |
Lines changed: 68 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
1 | 2 | | |
2 | 3 | | |
3 | 4 | | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
4 | 8 | | |
| 9 | + | |
5 | 10 | | |
6 | 11 | | |
7 | 12 | | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
8 | 18 | | |
9 | 19 | | |
| 20 | + | |
10 | 21 | | |
11 | 22 | | |
12 | 23 | | |
13 | 24 | | |
14 | 25 | | |
15 | 26 | | |
16 | 27 | | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
17 | 31 | | |
18 | 32 | | |
19 | 33 | | |
| |||
28 | 42 | | |
29 | 43 | | |
30 | 44 | | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
31 | 79 | | |
32 | 80 | | |
33 | | - | |
| 81 | + | |
| 82 | + | |
34 | 83 | | |
35 | 84 | | |
36 | 85 | | |
| |||
43 | 92 | | |
44 | 93 | | |
45 | 94 | | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
46 | 113 | | |
47 | 114 | | |
48 | 115 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
| 22 | + | |
22 | 23 | | |
23 | 24 | | |
24 | 25 | | |
| |||
63 | 64 | | |
64 | 65 | | |
65 | 66 | | |
| 67 | + | |
66 | 68 | | |
67 | 69 | | |
68 | 70 | | |
| |||
349 | 351 | | |
350 | 352 | | |
351 | 353 | | |
352 | | - | |
| 354 | + | |
353 | 355 | | |
354 | 356 | | |
355 | 357 | | |
| |||
397 | 399 | | |
398 | 400 | | |
399 | 401 | | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
400 | 405 | | |
401 | 406 | | |
402 | 407 | | |
| |||
462 | 467 | | |
463 | 468 | | |
464 | 469 | | |
465 | | - | |
| 470 | + | |
466 | 471 | | |
467 | 472 | | |
468 | 473 | | |
| |||
480 | 485 | | |
481 | 486 | | |
482 | 487 | | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
483 | 506 | | |
484 | 507 | | |
485 | 508 | | |
| |||
0 commit comments