Skip to content

style(goose): minimal red unread notification dot in Sources - #51

Merged
masarray merged 59 commits into
mainfrom
fix/goose-multisource-filter-20261021
Oct 21, 2026
Merged

masarray merged 59 commits into
mainfrom
fix/goose-multisource-filter-20261021

Conversation

@masarray

@masarray masarray commented Oct 21, 2026 •

Copy link
Copy Markdown
Owner

GOOSE tri-pane engineering: Sources → Messages → Data (single source of ACK truth)

Stacked on PR #49. Based on its exact audited head; PR #48 ancestry preserved. No changes to stable published v1.4.1 or unrelated SV/PTP/SCL/phasor modules.

Operator flow

  1. One-row Messages header: Messages title + compact counters on the same horizontal line as Show repeats and Follow live switches; remove the obsolete Clear filter button completely. Plain re-click of a selected, read source clears its scope back to All.
  2. Source click is navigation, never ACK: plain click on a source with an unread verified decoder delta filters the Messages scope to that physical source, suspends Follow live, pins the oldest unread exact event row, and scrolls that row into view. Ctrl/Shift only change the keyed filter. Enter offers keyboard event navigation.
  3. Messages clicks own ACK: only clicking a real history row (or Enter/Space keyboard action) ACKs that exact message. Other events remain unread; the source badge derives its count from the same journal of unread bounded history/pending rows. Source click, live refresh, filter update, row recycling and Inspector pinning never ACK implicitly.
  4. Inspector shows exact wire evidence: the decoder now puts its exact typed GOOSE DataSet frame into the bounded value-change envelope, including per-entry previous/current values and physical publisher key/revision/session. A historical row/Inspector thus shows the real packet at the transition, not the latest retransmitted publisher frame. The Data section shows N changed, amber CHANGED labels, changed-row accent and before → after value while leaving ordinary entries neutral. Reviewing a message clears unread color in Messages/Sources but does not destroy historical engineering evidence.
  5. Truthful bounded retention: latest-only snapshots are never used to reconstruct actual signal deltas. 512 decoder events + at most 500 queued / 400 visible UI history; unread events are retained ahead of repeats/ACKed rows. Unavoidable unread evictions or decoder revision gaps are explicitly counted/disclosed, never mislabeled ACKed.

Exact source of truth

GooseTrafficRow.IsUnacknowledgedEvent on decoded-event history/pending rows is authoritative. ProjectGooseUnreadIndicators() derives the Sources unread marker; AcknowledgeGooseHistoryEvent() is the one ACK path; InspectNextUnreadGooseSource() is navigation only. Raw decoder GooseValueChangeEvent.Frame is immutable-by-ownership event evidence from the originally decoded packet, not an inference from stNum/sqNum.

Verified final checkpoint

Commit: 1bc4fa9954c633bf0f4de239494358544e1bf088

Download candidate artifact — unsigned Windows x64 1.4.2 setup + SHA256SUMS + manifest + TRX evidence.

SHA256 installer: f58a507a91a8b519aded4c66c57303fb1d4dbd37359fa5c56783f8383d26206b (verified against Actions SHA256SUMS). Manifest commit matches the exact final checkpoint.

Still awaiting physical acceptance

Keep Draft: do not merge or publish a stable release before real Windows GUI click/Ctrl/Shift/Enter tests, high-rate multi-IED GOOSE, unread source repeated click → next unread row, ACK propagation and re-arming, pinned historical Inspector Data values, scroll behavior at 100/125/150% DPI, and user signoff. Automated green is not physical UI evidence.

GOOSE Data compact tooltip + one-gesture ACK (2026-10-21)

Exact final head: b25e66ea47270ae0881ec5a7c72d2b6cf3ff168e

  • Removed stacked CHANGED and before/after text from the Data row. The signal/value remain a single natural-height row; only the unread changed signal gets a restrained amber value/row accent.
  • The exact previous/current decoded evidence is still available from ChangeTooltipText (previous → current), including after acknowledgement. Saved values are never altered to implement ACK.
  • GooseInspectorAlertActive reads only the currently pinned unread GooseTrafficRow.IsUnacknowledgedEvent from the existing SSOT journal. GooseInspectorChangedCountText and the Data row's amber accent both disappear when this precise event is ACKed.
  • Window-level PreviewMouseDown (left click anywhere in visible GOOSE workspace) or PreviewKeyDown Enter calls AcknowledgeInspectedGooseEvent(). The original UI action is not blocked. A click on a different Messages row first acknowledges the previously inspected event, then navigates to the next row without prematurely acknowledging the newly inspected evidence.
  • AcknowledgeGooseHistoryEvent immediately refreshes the pinned Inspector while deriving Sources unread state from the same Messages journal. Source ACK counts and historical frame evidence remain consistent.
  • No RX-path timer, extra DataSet text, global reset, or unrelated module changes.

Exact-head gate evidence:

Candidate Actions artifact. Unsigned win-x64 v1.4.2 installer, not stable. Installer SHA256 1224d39467f7aec7d5235e97cfd4eb7f4b2bad9d12b758782c5040bbe9b01c25, verified against the workflow SHA256SUMS + exact-head manifest.

Acceptance remaining: actual Windows GUI interaction at 100/125/150% DPI, mouse hover tooltip, click-empty-area/Enter ACK, focused row navigation without premature ACK, newest unread value + source/message indicator consistency under live traffic. Keep Draft until operator validates.

Compact source unread indicator — operator screenshot feedback (2026-10-21)

Exact candidate commit: 27715a97323829827c2d3f5f6356e08a66d47475

  • Removed the visible Changed label from GOOSE Sources.
  • Show a single restrained 8×8 DIP red notification dot (#F04E5F) in the trailing source-card column only when HasUnacknowledgedValueChange=true, sourced from the existing SSOT Messages unread journal.
  • Retain UnreadEventText in tooltip; no extra on-card explanatory text, amber card outline, animation, timer or additional source-card height.
  • Acknowledging the final unread event through Messages automatically hides the red dot via existing source-row property change; no independent ACK state added.
  • New verify-workspace-spacing.ps1 contract asserts exactly the unobtrusive dot tooltip/binding, no Changed text, no redundant yellow border.
  • 8-DIP workspace gutter and virtualization unchanged.

Exact-head validation: Windows CI PASS, runtime stability PASS, runtime architecture PASS, dependency security PASS, Inno package & install/repair smoke PASS, CodeQL (verify latest run conclusion).
Candidate artifact (unsigned v1.4.2 win-x64). Installer checksum: 2929d82454fb2c7602b5bb26fb5c76efa039db5e93a56eff8e5343c471fa7da8 (verified against artifact SHA256SUMS; manifest matches exact commit).
Still Draft until Windows real-user acceptance; stable release unchanged.

@masarray masarray changed the title fix(goose): paired header switches and persistent operator-ACK highlights fix(goose): single-line Messages and SSOT Sources–Messages–Data acknowledgement Oct 21, 2026
@masarray masarray changed the title fix(goose): single-line Messages and SSOT Sources–Messages–Data acknowledgement fix(goose): compact value tooltip and unified click/Enter acknowledgement Oct 21, 2026
@masarray masarray changed the title fix(goose): compact value tooltip and unified click/Enter acknowledgement style(goose): minimal red unread notification dot in Sources Oct 21, 2026
Base automatically changed from fix/goose-readable-engineering-ui-20261021 to main October 21, 2026 13:05
@masarray
masarray marked this pull request as ready for review October 21, 2026 13:06
@masarray
masarray merged commit 4548aad into main Oct 21, 2026
8 checks passed
@masarray
masarray deleted the fix/goose-multisource-filter-20261021 branch October 21, 2026 13:06
@chatgpt-codex-connector

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 🔄 Running since 2026-10-21T13:06:29.817167Z 27715a9 Draft marked ready
ℹ️ 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.

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