Skip to content

ux(studio): finish Paket A density and single-source status on native SMV workspace - #218

Merged
masarray merged 3 commits into
mainfrom
fix/studio-paket-a-density-command-hierarchy-20261017
Oct 17, 2026
Merged

masarray merged 3 commits into
mainfrom
fix/studio-paket-a-density-command-hierarchy-20261017

Conversation

@masarray

Copy link
Copy Markdown
Owner

Paket A · final focused operator UX cleanup

The main branch already contains most of requested Paket A from parallel work: a tall icon-over-caption Material ribbon, white-hover/dark-foreground tokenized RibbonAction, 212px compact keyboard-accessible popup, a polished footer, NO Apply to board button, and one-click physical START via SmartSessionController::requestStartWithScenario. This PR deliberately does not reinvent or remove those features.

Remaining visual issues addressed (single atomic source commit f6c1ae701e0f1b4e63bb8ae6d970b4336f571d86)

  • Keep the phasor dock content-sized with preferredHeight: 225, maximumHeight: 265, fillHeight: false. The waveform dock flexes into the available space so the phasor does not become a tall mostly empty rectangle.
  • Replace the duplicated TIME SYNC / SV SIMULATION banner and second PTP state badge with one compact 57px control strip. Global status stays in the polished footer, including offline/no ESP32 and PTP/smpSynch; settings stay in Advanced.
  • Remove a duplicate offline preview toast when pressing Start. The footer already says Preview Mode Only.
  • Add fast deterministic regression assertions, executed in the existing Qt workflow before compilation, to prevent reintroducing dead-space docks, status duplication, or redundant toast.

Fast workflow and safety invariants (verified in repository before patch)

  • Offline: Edit → Start runs local preview, does not transmit SV.
  • Online: Edit → Start routes through the existing bounded queued scenario/START controller, with device RUNNING evidence and timeout guards; no separate manual Apply action.
  • Apply to board text and requestApplyDraft() are explicitly prohibited by the preexisting structural test.
  • No change to C++, ESP32 firmware, serial protocol, clock discipline, binary icon assets or installer packaging.

CI discipline

One small GUI-only commit, no redundant manual re-runs. Require exact-head Qt/QML including zero runtime binding exceptions, Windows lifecycle and geometry at 100/150/175% DPI, and RC2/naming routing where triggered. Merge only after required green gates. Physical real-board and on-wire SMV acceptance are distinct from CI.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 17, 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-17T02:43:20.145718Z f6c1ae7 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: f6c1ae701e

ℹ️ 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".

SplitView.preferredHeight: 238
SplitView.preferredHeight: 225
SplitView.maximumHeight: 265
SplitView.fillHeight: false

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 Remove the duplicate SplitView fill-height bindings

This DockFrame already binds SplitView.fillHeight: true on line 1108, so adding a contradictory second binding here makes Main.qml invalid; the waveform frame has the same duplicate binding on line 1152. Qt classifies a property bound multiple times as a duplicate-property-binding, which can prevent the main component from loading. Replace the existing bindings rather than adding second assignments.

Useful? React with 👍 / 👎.

Comment on lines +67 to +68
// The only global PTP/device status lives in the footer.
// This is an action strip, not a second diagnostic/status card.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve transient PTP states in the surviving status area

When a verified device lacks PTP support, or while ptpStarting is true but ptpRunning is still false, the footer continues to render PTP OFF; this patch removes the badge that distinguished PTP UNAVAILABLE, PENDING, and UNVERIFIED. Consequently, an asynchronous start or failed/unverified transition is presented as an ordinary stopped state even though the controls are disabled. Move those state distinctions into the footer before removing the badge.

Useful? React with 👍 / 👎.

@masarray
masarray merged commit 6ddd707 into main Oct 17, 2026
7 checks passed
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