diff --git a/CLAUDE.md b/CLAUDE.md index 24d2f417..56e69c39 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -163,6 +163,7 @@ Some JavaScript modules are shared between multiple tools and must support diffe **Arena Session — the single connection broker** (`js/arena-session.js`, Stage A of the Arena Studio unification): - Owns ONE `ArenaLink` + ONE `ArenaRunner` per page and multicasts the link callbacks (`log`/`error`/`disconnect`) to subscribers via `on(event, fn)`. Run mechanism: `runTrial` / `runSequence` / `stop` / `running`; lifecycle: `connect` / `disconnect` / `connected` / `send`. Page-wide singleton via `ArenaSession.shared()`. - **Must stay a classic ` + + - + diff --git a/arena_studio.html b/arena_studio.html index 0cd898fb..5e3a4a97 100644 --- a/arena_studio.html +++ b/arena_studio.html @@ -213,6 +213,13 @@ .rig-tag{font-size:11px;color:var(--dim);border:1px solid var(--border);border-radius:20px;padding:2px 8px;white-space:nowrap;cursor:pointer;max-width:220px;overflow:hidden;text-overflow:ellipsis} .rig-tag:hover{border-color:var(--accent);color:var(--text)} .chip.rig-mismatch{color:var(--warn);border-color:var(--warn);background:color-mix(in srgb,var(--warn) 8%,transparent);cursor:help} + /* Qwiic chip (LAB-214): shown only on controllers with the I2C bridge; click → Console → Qwiic */ + .chip.qwiic-chip{cursor:pointer} + body:not(.hasproto) .chip.qwiic-chip{display:inline-block} /* bench state, not protocol state: shown with no protocol loaded (inline display:none still hides it) */ + .chip.qw-ok{color:var(--accent);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)} + .chip.qw-warn{color:var(--warn);border-color:var(--warn);background:color-mix(in srgb,var(--warn) 8%,transparent)} + .chip.qw-err{color:var(--danger);border-color:var(--danger);background:color-mix(in srgb,var(--danger) 8%,transparent)} + .chip.qw-off{color:var(--dim);border-color:var(--border)} .doc-name{font-family:var(--head);font-weight:700;font-size:12.5px;white-space:nowrap} .chip{font-family:var(--mono);font-size:11px;font-weight:600;border-radius:20px;padding:2px 8px;border:1px solid;white-space:nowrap} .chip.saved{color:var(--accent);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)} @@ -2229,6 +2236,27 @@ .console-view .ai-range{font-size:10px;color:var(--dim);min-width:130px} .console-view #cAiChart{display:block;width:100%;max-width:460px;height:90px;border:1px solid var(--border);border-radius:4px;background:var(--chart-bg)} .console-view .ai-table{font-size:10.5px;border-collapse:collapse} + /* Qwiic panel (LAB-214): scan table, one-device readout grid, AS7343 spectrum bars */ + .console-view table.qw-table td,.console-view table.qw-table th{padding:2px 10px 2px 0;text-align:left;vertical-align:top} + .console-view .qw-table tr.qw-pick{cursor:pointer} + .console-view .qw-table tr.qw-pick:hover td{background:var(--surface2)} + .console-view .qw-table tr.qw-selrow td{background:color-mix(in srgb,var(--accent) 10%,transparent)} + .console-view .qw-table input[type=radio]{margin:0 2px 0 0;accent-color:var(--accent);cursor:pointer} + .console-view .qw-table .qw-cat{color:var(--text);font-weight:600;white-space:nowrap} + .console-view .qw-sel{font-family:var(--head);font-size:11.5px;color:var(--text);min-width:180px} + .console-view .qw-flags{font-size:11px;line-height:1.5} + .console-view .qw-out{display:block} + .console-view .qw-title{font-family:var(--head);font-size:12px;margin-bottom:4px} + .console-view .qw-grid{display:grid;grid-template-columns:max-content max-content;gap:2px 14px;align-items:baseline} + .console-view .qw-l{color:var(--dim);font-size:11px} + .console-view .qw-v{font-family:var(--head);font-size:15px;color:var(--text)} + .console-view .qw-bars{grid-column:1 / -1;display:flex;gap:3px;align-items:flex-end;height:74px;margin-top:4px} + .console-view .qw-bar{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;width:26px} + .console-view .qw-bar i{display:block;width:16px;background:var(--accent);opacity:.85;border-radius:2px 2px 0 0} + .console-view .qw-bar span{font-size:9px;color:var(--dim);margin-top:2px} + .qw-ok-t{color:var(--accent)} + .qw-warn-t{color:var(--warn)} + .qw-err-t{color:var(--danger)} .console-view .ai-table td,.console-view .ai-table th{padding:1px 10px 1px 0;text-align:right;color:var(--text);font-family:var(--mono)} .console-view .ai-table th{color:var(--dim);font-weight:normal} .console-view .ai-table td.bad{color:var(--danger-text)} @@ -2254,6 +2282,7 @@ .console-view .stage>.panel[data-panel="fw"]{order:7} .console-view .stage>.panel[data-panel="ai"]{order:8} .console-view .stage>.panel[data-panel="fictrac"]{order:9} + .console-view .stage>.panel[data-panel="qwiic"]{order:10} } /* Outer panel box: soft near-white 1.5px edge so panels stay distinct on a dark monitor in a lit room (grey var(--border) washed out). Internal @@ -2356,6 +2385,7 @@ rig — + @@ -3068,6 +3098,7 @@

Import error

+ @@ -3075,7 +3106,7 @@

Import error

-
Patterns✕
+
Patterns✕
@@ -3090,7 +3121,7 @@

Import error

- +
Single pattern (.pat)
@@ -3175,6 +3206,9 @@

Import error

+
color + + one LED bank at a time (A–D = T0–T3)
@@ -3220,6 +3254,47 @@

Import error

+
+
Qwiicconnect to scan✕
+
+
bus + + +
+ + +
selected + — scan first — + + + +
+ +
Scan to list the devices on the Qwiic jack
+ + +
Test only — readings here are not written to run logs. Declare devices in the rig YAML (peripherals:) for run logging; Copy as rig YAML gives you the entries.
+
+
+
LED✕
@@ -3243,7 +3318,7 @@

Import error

single - +
fleet @@ -3253,7 +3328,7 @@

Import error

- +
@@ -3344,7 +3419,7 @@

Import error