Skip to content

P0 Studio UX: authoritative 4I+4V START, compact vertical layout and readable controls - #241

Open
masarray wants to merge 18 commits into
feature/studio-matched-ptp-sv-auto-20261017from
fix/studio-signal-ssot-ui-polish-20261018
Open

masarray wants to merge 18 commits into
feature/studio-matched-ptp-sv-auto-20261017from
fix/studio-signal-ssot-ui-polish-20261018

Conversation

@masarray

Copy link
Copy Markdown
Owner

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 any embedded/, 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 bare requestStart() if pendingApply had 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 sends requestStartWithScenario(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

  • Brand 40px, symbol 27px, name 14px (not an undersized launcher).
  • Center icon/caption for all RibbonAction controls; shared CalmButton white-hover/dark text and dark icon; Advanced TabBar legible hover.
  • Single fixed-size StudioDarkCheckBox indicator without a second native-style overlay.
  • Voltage full width above Current, replacing cramped side-by-side matrices and reusing previously blank vertical area.
  • Default verified-board PTP SOURCE ON with smpSynch=AUTO, preserving a user-issued OFF (no retry); Phasor and Wave remain enabled by default.
  • Extend structural regressions for all changes.

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.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 18, 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-18T02:25:33.600044Z dd78fed 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: 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".

Comment on lines +233 to +234
if (!device.ptpRunning)
root.startPtpRole("SOURCE")

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 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 👍 / 👎.

Comment thread apps/arstack_studio/qml/Main.qml Outdated
Comment on lines +1079 to +1080
Layout.preferredHeight: root.compactLayout ? 398 : 426
Layout.maximumHeight: root.compactLayout ? 398 : 426

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 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 👍 / 👎.

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