Repository navigation
feat(p0): center-screen actionable Studio toast for board faults, PTP Ethernet and operator attention - #272
Conversation
…eserve history, dedupe and suppress telemetry noise
…ry; retried PTP failures still notify
…errors, dedupe and event history
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: 3788f1a82a
ℹ️ 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".
| and "now - lastOperatorNoticeMs < 8000" in main_qml | ||
| and "messageTimer.interval = notice.error ? 4600 : 2800" in main_qml | ||
| and "statusHistoryModel.append({" in main_qml | ||
| and "anchors.centerIn: parent" not in toast_qml |
There was a problem hiding this comment.
Narrow the anchor check to the toast root
The newly added workspace check always fails at this revision because StatusToast.qml legitimately contains anchors.centerIn: parent on the !/i icon label, even though the toast root itself has no centering anchor. Running check_operator_workspace.py against an archive of this commit exits with status 1 at this contract, so the regression suite cannot pass until the assertion inspects only the root or otherwise distinguishes the nested label.
AGENTS.md reference: AGENTS.md:L251-L257
Useful? React with 👍 / 👎.
| const linkDown = /ETHERNET_LINK_DOWN|Ethernet PHY link is DOWN/i.test(m) || | ||
| (/PTP/i.test(m) && device.ptpEthernetLink === "DOWN") |
There was a problem hiding this comment.
Limit link-down mapping to actual PTP failures
When the board reports PHY DOWN, this condition classifies every message containing PTP as a start failure regardless of the failure argument or message semantics. For example, the existing successful Copy diagnostics path sends "PTP and firmware diagnostics copied." from PtpExpertPanel.qml, but in the common link-down troubleshooting state it now displays the Ethernet-disconnected error instead of confirming the copy; restrict this fallback to start/failure messages rather than all PTP text.
Useful? React with 👍 / 👎.
| const notice = operatorNotice(raw, error === true) | ||
| if (!notice) return |
There was a problem hiding this comment.
Keep routine footer messages transient
For routine messages that operatorNotice() intentionally ignores, this return occurs after assigning statusMessage but before starting messageTimer. Calls such as the existing AC/DC mode notifications therefore remain in the footer indefinitely, whereas previously every showMessage() call restarted the timer; clear these messages with a separate footer timer or preserve the prior timer behavior even when no toast is created.
Useful? React with 👍 / 👎.
…n, not per telemetry update
Final UX engineering checkpoint (2026-10-21) — exact HEAD artifactPR #272 HEAD Operator-centered UX implemented
Native Windows preview artifact: https://github.com/masarray/arstack61850/actions/runs/39550746804/artifacts/12323972267 (GitHub zipped artifact). Extracted installer EXE only Next physical check: installing matched Studio+firmware and triggering SOURCE with ETH UNPLUGGED must show center-screen Indonesian connect-cable action and OFF, never fake SOURCE running/LOCK; with Ethernet connected and link UP, START needs actual Announce/Sync/Follow_Up evidence. Test central notices in both Main and Advanced and confirm no repeated toast spam. SV/PTP 1-hour endurance and relay interoperability remain NOT ACCEPTED; do not merge/release from CI alone. |
Field UX feedback (2026-10-21) — prevent ambiguous PTP/SMV failures
The operator tested PTP SOURCE while the ESP32-P4 Ethernet port was not connected to an active laptop Ethernet port or switch. Old Studio silently put error messages into a tiny bottom text/footer and returned the PTP switch to OFF. This is correct for hardware safety but poor operator guidance.
Engineering change (stacked on #271)
setErroremitsdeviceMessage, which Main was always treating as informational. Now error severity is inferred from verifiedlastErrorequality; terminal SmartSessionController states and PTP START terminal failure also display. No backend authority mutation.No merge to main/release without physical test. Hardware PTP TX success remains unproven until operator plugs Ethernet into active switch/NIC and captures actual Announce+Sync+FollowUp.