Repository navigation
Conversation
…operator authoritative
…and hover consistency
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d4a74237dd
ℹ️ 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".
| # P0: software timing, SV egress/smpCnt and phase-angle staging must | ||
| # stay untouched by a UI-only reflow. Every START sends the actual | ||
| # eight visible channel phases, not a stale pre-existing board state. | ||
| require("const accepted = smartSession.requestStartWithScenario(" in workflow |
There was a problem hiding this comment.
Initialize workflow before checking it
The Studio workspace CI gate now reads the local variable workflow here before its assignment at line 114. Running python3 apps/arstack_studio/tests/check_operator_workspace.py therefore always raises UnboundLocalError at this line, preventing every subsequent structural regression assertion from running and failing the arstack-studio-qt.yml job. Move workflow = source("WorkflowBar.qml") before this new assertion.
AGENTS.md reference: AGENTS.md:L230-L236
Useful? React with 👍 / 👎.
| } | ||
|
|
||
| RowLayout { | ||
| ColumnLayout { |
There was a problem hiding this comment.
Update the viewport assertion for stacked matrices
Changing this container from RowLayout to ColumnLayout makes the voltage and current matrices occupy the same horizontal range, but checkOperatorViewport() in apps/arstack_studio/src/main.cpp:85 still requires voltage.area.right() <= current.area.left() + tolerance. Consequently every --check-operator-ui run reaches the panel-order failure and exits 21, including the Windows lifecycle geometry job; update that acceptance check to assert the new vertical ordering and containment.
AGENTS.md reference: AGENTS.md:L249-L263
Useful? React with 👍 / 👎.
| property bool ptpDesiredForSession: true | ||
| property bool defaultPtpStartAttempted: false |
There was a problem hiding this comment.
Route Advanced PTP actions through session intent
With the session intent now initially true, an operator who turns PTP off from the Advanced panel does not cancel that intent: both Advanced stop paths call session.requestStopPtp() directly in PtpExpertPanel.qml rather than root.requestStopPtp(). After a later successful firmware update, onFirmwareUpdateFinished still sees this property as true and automatically restarts PTP SOURCE despite the explicit OFF; Advanced starts likewise do not update ptpDesiredRole, so a selected receiver/monitor role can be restored as SOURCE. Route all PTP start/stop entry points through the intent-owning controller.
AGENTS.md reference: AGENTS.md:L74-L86
Useful? React with 👍 / 👎.
|
Frozen SMV/PTP baseline / no regression permitted. Parent M3 integration commit |
…ight is insufficient
… 1240x760 and 1440x900
Keep the proven SMV/PTP sync baseline frozen
This is a Studio QML UX/setpoint workflow PR stacked onto integrated M3 branch and does not change any firmware, MAC timestamp, PTP, SV sample clock, smpCnt, smpSynch policy or protocol wire packet. Retain previously observed AUTO local-reference behavior; do not claim physical relay acceptance from GUI CI.
Root-cause fix: GUI angles != output
WorkflowBar previously selected bare
smartSession.requestStart()wheneverpendingApply=falsedespite that boolean not constituting wire readback. This could reuse stale board phases (e.g. Ia=0°) even while the displayed table showed Ia=-30°. Every START now always sendsrequestStartWithScenario(controller.startScenarioSnapshot()): full 8-channel magnitude, phase, enable, quality, frequency, scaling and shaping in the existing bounded exclusive FIFO before START. The device only becomes RUNNING after ACK. Live edits retain their established bounded SET pipeline. No new UI prompts.Layout and controls
smpSynchselector default remains AUTO; no forced local/global flags.Gates
Operator structural regression covers complete snapshot-to-START, default ON/off cancellation, layout, hover and branding. Run exact-head Qt, Windows Lifecycle, Windows Native Preview and firmware/PTP comparison. Verify screenshot at normal desktop DPI; report no physical bench sync claims from UI-only changes.