feat(ui): left-panel alert stack — licence indicator pinned on top, events LIFO below
Creator design (2026-11-05). A stack of red rows at the top of the left panel, above both mode grids so it shows while editing and while live, pushing the panel's content down. - Row 1 is the **Steam licence indicator** and nothing displaces it. It reads as status, not a warning: "Entitlement 30 fps · Maximum 60 fps", both numbers derived from QualityOptions and HasProOutput. While higher tiers are unavailable it shows a **pin** (standing indicator, no close control); once ownership is verified the pin becomes a **close control** and the dismissal is persisted (`Steam.LicenceIndicatorDismissed`), permanent while ownership holds. Losing ownership restores it as pinned — a change of state, not a preference. Click → About. - **Event rows stack beneath, newest first**, one row per episode (an episode advancing its state updates its own row rather than adding another). Each is dismissible. Click → the Logs tab opens with that event's sequence range painted red (`HighlightedLogFrom/To` + `LogInRangeConverter`; two numbers rather than a collection because the log list is virtualised and realised rows do not re-evaluate on membership changes). - Replaces the old red panel under the quality picker, which is removed. - The Steam diagnostic text loses "Contact the creator or support" for a neutral "Steam licensing is not configured in this build." Tests: `AttentionAlertStackTests` — pinned first with the status text; owned → closable and the close survives a reload but ownership loss restores it pinned; pinned cannot be dismissed; event rows LIFO with in-place episode updates; clicking an event opens Logs and sets its range. AboutHub + Entitlement tests updated for the removed panel and the new wording. FAST gate: 532 passed, 0 failed, 0 warnings.
This commit is contained in:
@@ -1,3 +1,22 @@
|
||||
## Left panel alert stack (2026-11-05)
|
||||
|
||||
A stack of red rows at the top of the left panel, **above both mode grids** (so it shows while editing
|
||||
and while live) and pushing the panel's content down. Only red rows belong there — it is the surface for
|
||||
"something needs you", never chatter.
|
||||
|
||||
- **Row 1 is always the Steam licence indicator** and nothing displaces it. It reads as status, not a
|
||||
warning: `Entitlement 30 fps · Maximum 60 fps`, both numbers derived from `QualityOptions` and
|
||||
`HasProOutput`. It shows a **pin** (standing indicator, no close control) while higher tiers are
|
||||
unavailable, and a **close control once ownership is verified** — that close is persisted
|
||||
(`Steam.LicenceIndicatorDismissed`) and permanent *while ownership holds*; losing ownership restores
|
||||
the row as pinned, because that is a change of state rather than a preference. Click → About.
|
||||
- **Event rows stack beneath it, newest first**, one row per episode (a reconnect advancing its state
|
||||
updates its own row rather than adding another). Each is dismissible. Click → the Logs tab opens with
|
||||
that event's sequence range painted red (`HighlightedLogFrom/To` + `LogInRangeConverter`; two numbers
|
||||
rather than a collection because the log list is virtualised and realised rows do not re-evaluate on
|
||||
membership changes).
|
||||
- The old red panel under the quality picker is **gone** — this stack replaced it.
|
||||
|
||||
## Preview pane — frame-source layers are a WHITELIST
|
||||
|
||||
`PreviewPane.xaml`'s per-layer `Image` is **Collapsed by default** and switched on by one DataTrigger
|
||||
|
||||
Reference in New Issue
Block a user