Repository navigation
P0 Studio UX: authoritative 4I+4V START, compact vertical layout and readable controls - #241
Conversation
… stale board values
…r and checked states
…, preserving explicit OFF
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: dd78fedb86
ℹ️ 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".
| if (!device.ptpRunning) | ||
| root.startPtpRole("SOURCE") |
There was a problem hiding this comment.
Preserve explicit PTP OFF across firmware updates
When this timer auto-starts a stopped board, root.startPtpRole() records ptpDesiredForSession = true; however, the Advanced PTP switch stops directly through panel.session.requestStopPtp() in PtpExpertPanel.qml:137 and never clears that intent. After an explicit OFF through that switch, any successful firmware update therefore enters the restoration path at Main.qml:212-214 and turns SOURCE back on, unexpectedly resuming network transmission. Keep automatic/default state separate from explicit restore intent, or route every OFF control through the intent owner.
AGENTS.md reference: AGENTS.md:L74-L76
Useful? React with 👍 / 👎.
| Layout.preferredHeight: root.compactLayout ? 398 : 426 | ||
| Layout.maximumHeight: root.compactLayout ? 398 : 426 |
There was a problem hiding this comment.
Make the stacked tables fit the supported minimum height
At the supported 960×620 minimum window size, the surrounding 78px workflow bar, 48px frequency row, 57px timing tray, quality row, margins, and spacing leave only about 270px for this block, despite its 398px preferred height. The two SignalMatrix controls are then compressed to roughly 130px each, below the space required by their 32px header, 20px column header, and four 34px editor rows; because the injection panel is not scrollable, channel editors overlap or are clipped. Add scrolling or a responsive/minimum-height arrangement rather than relying on this fixed preferred size.
Useful? React with 👍 / 👎.
…le; prevent field clipping
…ith no clipped PTP/quality controls
Freeze SMV–PTP progress
Base is the existing phase-qualified AUTO local-SV candidate PR #234, including the successfully observed
smpSynch=1, canonical-only 4000fps and bounded PTP epoch alignment from the user's 120s capture. Do not touch anyembedded/,src/time_sync/, or IEC 61850 wire codec file. This PR is a strictly Studio-side UX/readback improvement, not a clock-sync protocol rewrite.Fix root cause of angle mismatch
WorkflowBar.requestStart()previously used barerequestStart()ifpendingApplyhad cleared; the device can retain a different 4I+4V setpoint than the currently visible table (e.g. GUI Ia -30°, wire Ia 0°). The physical Start now always sendsrequestStartWithScenario(controller.startScenarioSnapshot()). C++DeviceController::startWithScenario()already validates the snapshot and exclusively batches FREQ + all eight SET/ENABLE commands + CT + START. This retains deterministic command ownership and removes stale-device assumptions. Live edits remain supported.Visible UI fixes
smpSynch=AUTO, preserving a user-issued OFF (no retry); Phasor and Wave remain enabled by default.Acceptance and scope
Qt CI, Windows Lifecycle and Preview exact-head; desktop screenshot verification remains pending. Do not declare physical phase-lock standards compliance from UI tests. Manual PTP OFF always wins; no new dialogs.