Skip to content

fix(studio): proportional injection/plot workspace, verified bolt RUN/STOP, first-click START handoff - #275

Open
masarray wants to merge 9 commits into
feat/p0-center-actionable-toasts-20261021from
fix/p0-studio-layout-firstclick-run-20261021
Open

masarray wants to merge 9 commits into
feat/p0-center-actionable-toasts-20261021from
fix/p0-studio-layout-firstclick-run-20261021

Conversation

@masarray

Copy link
Copy Markdown
Owner

Field feedback on preview #273: desktop workspace and first START click

Operator supplied screenshots at 1240px wide / 960px wide. At native desktop width the injector table becomes needlessly long while phasor and waveform are squeezed into a narrow strip. The RUNNING pill is visually weak. On opening the app, clicking START once while native SmartSession is still PREPARING 4I+4V currently discards the click and requires the operator to click again.

Changes

  • Make left 4I+4V editing form bounded (~505 px compact / ~610 px default, max 660) and let right plot stack flex (~420/560 preferred, max 1200), keeping user-adjustable SplitViews; preserve minimum usable widths. Form fields no longer grow unreasonably in maximized windows.
  • Replace tiny status dot with exact user-supplied lightning-bolt shape as SVG, bright green RUN and muted red STOP. Status uses device.running (board-authoritative), not QML optimistic START intent.
  • In WorkflowBar, a click during physically verified, same-boot PREPARING 4I+4V is retained as a single bounded 8s operator START intent. When the same session becomes startReady, take current 4I+4V snapshot and enter existing acknowledged staged firmware START transaction. Clear intent before submission; no retries on firmware rejection, no bypass of C++ SSOT. Immediate STOP cancels pending intent. Loss of device verification or new boot ID cancels it. Other blocked states still toast actual reason. Existing START disable prevents double dispatch.
  • Structural regression contract asserts proportional desktop widths, SVG status glyphs, and same-boot bounded cancellable intent.

CI and acceptance

Run Qt native session harness, QML smoke at multiple window sizes, Windows Lifecycle and Native Preview exact SHA. Need physical bench proving first click succeeds while initial profile preparation is in progress, no auto-START after firmware update/reconnect, editable profile transactions remain fail-closed. Keep stacked PR OPEN/unmerged to main; no hardware acceptance claim.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-21T07:07:39.887082Z 5a76054 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5a76054526

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +20 to +21
readonly property bool startQueued: Boolean(
(ribbon.device && ribbon.device.scenarioApplying) || ribbon.startIntentWaiting)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Update the stale startQueued contract check

Update the existing assertion in check_operator_workspace.py together with this expression: line 194 still requires the exact old Boolean(ribbon.device && ribbon.device.scenarioApplying) text, so running python3 apps/arstack_studio/tests/check_operator_workspace.py now fails with SV STOP must remain actionable while the acknowledged scenario transaction is pending. Because .github/workflows/arstack-studio-qt.yml runs this script, the Studio CI job fails for every revision containing this commit even though the new contract check added later passes.

AGENTS.md reference: AGENTS.md:L230-L236

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

#275 final installer handoff, exact-head verification (2026-10-21)

Head bb4b02f1fa3580e30297d9bbb4e049d3b23b5073, stacked on #273, still OPEN/unmerged. 5/5 exact SHA workflows SUCCESS: Product Naming Guard, RC2 Acceptance Policy, Qt Studio harness/High-DPI, Windows Lifecycle, Windows Native Preview plus matched ESP32-P4 firmware.

Implemented: proportionally bounded injector field panel (505/610px preferred, max 660) while phasor/waveform dock flexes; requested exact bolt SVG glyph RUN green / STOP muted red based on native verified device.running; both icons explicitly included in Qt CMake resources. A single operator START clicked during same-boot PREPARING 4I+4V is retained max 8s, dispatches current scenario once after actual startReady via existing native ACK/readback transaction, cancel on STOP, device-unverified/boot-change or timeout. No fake RUNNING or auto-restart on reconnection.

Direct 31MB Windows installer ARStack-Studio-Preview-win-x64-setup.exe extracted from https://github.com/masarray/arstack61850/actions/runs/39560968702/artifacts/12328420962. SHA-256 78a670b9c917f7bfd4693c040a4274b7edaade28b5a0045b3d0e40c8c53b3a86 matches artifact SHA256SUMS.txt. Installer is supplied directly to operator, not large ZIP. Firmware matches head build ID bb4b02f1fa3580e3.

Physical board first-click scenario and GUI dimensions at multiple DPI remain pending user field acceptance; prior PTP/SMV reliability issues are not proven resolved by these UI changes. Do not merge to main or public release.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant