Repository navigation
Release 2026-09-29: Arena Studio v0.93 - #235
Merged
Merged
Conversation
…rmware, in every run log (v0.93) Wire (js/arena-wire-g6.js): decodeControllerInfo() reads the 0xC2 feature bitmap appended after the MAC (FEATURE_BITS: panel_inventory, qwiic_i2c, ai_stream) and labels capability bit 6 ai_cal; encodePanelInventoryScan(action) 0xD0, encodeGetPanelInventory(first) 0xD1, decodePanelInventory() for the 18-byte page header (scan_id at [17]) + 5-byte entries; PANEL_STATUS_NAMES / PANEL_INVENTORY_FLAGS. Golden tests for all of it, including the 0xD0 echo, the past-the-end page and a pre-scan_id 17-byte header (rejected). Reader (js/studio-panel-inventory.js, dual-export): readAll() pages the fleet and re-reads from first=0 when scan_id changes between pages; summarize() → present / missing / firmware groups / mismatched (≠ SD image, else outside a strict fingerprint majority, plus no-ISP panels); describe(); toRunMeta(). Studio: Studio.features from every 0xC2 decode; Studio.refreshPanelInventory() after refreshFirmwareVersion() on Connect, on the gesture-free reconnect hook and from Controller ▾ info, gated on the panel_inventory feature; one follow-up read while the boot sweep is still running. Provenance box shows "panels: 20/20 present · fw 0x9BE0D3C7 ×20 …"; run_metadata.panels (studio-meta buildMeta) carries the compact record. Console → Panel firmware gets Inventory / Rescan (0xD0 action 1 after quiesceDisplay, follow-up read 3 s later). Help-mode text. Bench (G6_2x10, fw #59 bf2a8e3): link-up read 20/20 · 0x9BE0D3C7 ×20 · scan 9; Rescan → scan 10 with FP_VALID inside the follow-up window; no console errors. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… cache (Codex review)
- Studio.panels is cleared before every read, on a failed read and on
disconnect (with Studio.features); Studio.panelsStatus records why.
- runOnce() re-reads the inventory right before startRunLog(), so
run_metadata.panels is a run-start snapshot, not connect-time state.
- toRunMeta(inv, status) always returns {schema: 1, status: ok|pending|failed|
unsupported|disconnected, …}; per-panel array renamed panel_status;
presence_valid / fp_in_progress added.
- readAll() also re-reads when a page's `first` is not the requested offset
or panel_count changes between pages.
- Rescan is guardDestructive (it stops the display); all follow-up reads go
through Studio.scheduleInventoryFollowUp (connected + not running).
- Tests for each; verified live on the G6_2x10 (fw #59 c15d840 build).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…y-host # Conflicts: # pixi.toml
…ile back to main's Feature PRs no longer bump versions (docs/development/release-process.md rule 4); the release commit does it and folds the notes in from the PR body. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…O 2 reaches EINT (#168) Only the "Digital IO 2 (5V)" BNC is wired to the panels' EINT net (U3 + J30 shunt); Digital IO 1 has no route, so `in_trigger` there gave a silently dead trigger. - parseRigIo: `in_trigger` on dio port 1 degrades to off with a warning naming Digital IO 2 (shown in the Console log at connect). - Studio Rig I/O menu: the Digital IO 1 `in_trigger` option stays disabled on every firmware, with the reason as its tooltip; capability gating no longer enables it. - Rig-io apply path: never sends SET_DIO_ROLE in_trigger to channel 1. - Tests: N12io-c2 (parser + static Studio checks). The controller-side refusal is reiserlab/LED-Display_G6_Firmware_Arena#45. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ng it It can never be valid (no EINT route on that BNC), so a permanently disabled option was clutter. The reason moves into the Digital IO 1 label/select tooltips; the parser warning and the apply guard stay. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mbreiser
force-pushed
the
release/2026-09-29
branch
from
September 29, 2026 20:04
c206eed to
00e7ce2
Compare
mbreiser
force-pushed
the
release/2026-09-29
branch
from
September 29, 2026 20:26
00e7ce2 to
801a9f2
Compare
Contributor
Author
|
✅ Validated Closed-loop run of
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release candidate
2026-09-29rc3 · candidate commit801a9f27b0· built on main188bf63098Live on Next: https://reiserlab.github.io/webDisplayTools/next/
bd2d27fa20dafd269dfaPromotion checklist
pixi run releasechecks)Validated 801a9f2 …(pixi run tiers -- validate --rig … --by …). Any change to a constituent PR = rebuild (rc+1) = validate again.releaselists recent rig runs — advisory)fictrac-bridge/changed, rig PCsgit pull+ restart the bridgePromote with
pixi run release(merges with a merge commit — never squash — and tagsrelease-2026-09-29). Manifest:releases/2026-09-29.json.🤖 Generated with Claude Code release tooling (
scripts/tiers/candidate.py)