Repository navigation
Studio P0: preserve PTP–SV baseline; fix angle updates and professional operator layout - #242
Conversation
…voltage/current matrices
…setpoint contract
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: 62465bcd22
ℹ️ 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".
| pendingApply = true | ||
| // All edits are a draft until the matching command is queued. | ||
| // Never label a visible draft as proven transmitted waveform data. | ||
| pendingApply = true |
There was a problem hiding this comment.
Preserve live-update eligibility after marking edits dirty
When injection is RUNNING, every non-cell editor still calls markScenarioDirty() before checking !pendingApply; this unconditional assignment therefore makes those checks permanently false. Frequency/waveform mode, CT shaping, channel enabled/quality, balanced/zero, and the group context-menu actions now change only the QML model while the physical SV stream continues using the old values, and Start cannot apply them until the operator stops injection. These handlers need the same RUNNING-aware queue behavior added to editSignal, rather than using the draft flag to suppress transmission.
AGENTS.md reference: AGENTS.md:L74-L76
Useful? React with 👍 / 👎.
| if (!queued) showMessage("Signal update not queued; retry or Stop/Start.", true) | ||
| else pendingApply = false |
There was a problem hiding this comment.
Keep older failed drafts pending after a later successful SET
A failed live update leaves pendingApply true, but any later successful signal update clears the global flag even if the earlier unsent edit was for another channel or for frequency/CT state. After Stop, WorkflowBar.requestStart() then sees no pending draft and calls requestStart() instead of requestStartWithScenario(), so the missed setpoint can remain unapplied while the footer claims synchronization. Clear this state only when all outstanding model changes are known to have queued successfully, or resend the complete scenario.
AGENTS.md reference: AGENTS.md:L74-L76
Useful? React with 👍 / 👎.
| if (!session || !device.deviceVerified || !session.startReady || | ||
| session.updatingFirmware || device.ptpStarting) return | ||
| root.ptpDefaultStartAttempted = true | ||
| if (!device.ptpRunning && !root.startPtpRole("SOURCE")) |
There was a problem hiding this comment.
Route Advanced PTP OFF through intent cancellation
The automatic start calls root.startPtpRole(), which records ptpDesiredForSession = true, but the Advanced PTP switch still stops directly through panel.session.requestStopPtp() rather than root.requestStopPtp(). If an operator turns PTP off there and subsequently performs a successful firmware update, onFirmwareUpdateFinished observes the stale desired flag and silently restarts SOURCE despite the explicit OFF action. All PTP OFF surfaces must clear the shared session intent before stopping.
AGENTS.md reference: AGENTS.md:L74-L76
Useful? React with 👍 / 👎.
… stale board phases
…00–175 percent DPI
3fb9969
into
feature/studio-matched-ptp-sv-auto-20261017
Baseline lock
Build on existing integrated PTP–SV commit
fb4329e73c3b80f7d6806e25538e6ceeb06ffc13. DO NOT touch ESP32-P4 firmware, PTP sample phase, packet codec, orsmpSynch=AUTOqualification. Existing 120s evidence: canonical SV 480,294 frames,smpSynch=1on all, zero counter discontinuities, 120 matched PTP Sync/Follow_Up, relative host epoch median ~49us (not hardware-precision certification).User-observed regressions and fixes
pendingApply=truewhile STOPPED, and live-edit only sent when!pendingApply. Running edits from restored state could leave GUI Ia=-30 while board continued outputting Ia=0. Now queue the exact ListModel values on real RUNNING edits independent of draft flag; pending status stays visible until queued. Both linked 3-phase and individual channels reuse existingsendSignalSSOT. START continues to serialize the exact model snapshot.smpSynch=AUTO, phasor and waveform remain default; no force-local flag.Acceptance
Qt, Windows Lifecycle, Windows Preview installer, protocol-independent source checksum guard, physical manual screenshot / 4I+4V wire readback. Do not claim hardware relay acceptance solely from CI.