Preview: promote selected layer for hit testing

Temporarily raise the selected preview item and prioritize it in the custom hit test without changing scene order. Refresh integration-test expectations for Brand logo layers and explicit thumbnail assets.

WPF references: https://learn.microsoft.com/en-us/dotnet/api/system.windows.controls.panel.zindex?view=windowsdesktop-10.0 https://learn.microsoft.com/en-us/dotnet/desktop/wpf/graphics-multimedia/hit-testing-in-the-visual-layer
This commit is contained in:
2026-10-28 13:09:15 -07:00
parent 7da287244b
commit 769c616706
13 changed files with 326 additions and 79 deletions
+62 -4
View File
@@ -1,6 +1,64 @@
# HANDOFF — 2026-10-26 (ai.md memory split, 3 units landed; see below — everything after this block is the prior 2026-10-22 state, still accurate)
# HANDOFF — 2026-10-28 (selected-layer preview stacking; suite green)
## At a glance (2026-10-26 docs session)
## Current state
- **Branch `main`; `origin/main` remains at `7ae30d4`.** The five
feature commits since that point are `90cd039` (fade starts from outgoing picture), `f67a263`
(transition picker), `b86b6bb` (Wipe), `841c905` (brand logo layer), and `7da2872` (preview and
program transitions). They are not pushed; no push was requested.
- **Four UI-redesign commits already on `origin/main` were missing from the older handoff:**
`24aca7d` moved the scene strip above the preview and removed the default CRT/on-air image seeds;
`3239808` added the Scene Layers header/count and layer icons plus scene-card names, hotkeys, and
PROGRAM badge; `a8814b4` added the explicit EDIT toggle and fixed the scene-card/left-column
sizing; `7ae30d4` moved readouts/resolution into the top-left cell, added the Socials rail drawer,
and restored webcam/chat border controls and vertical 1080p30. `b7ab169` added [`DESIGN.md`](DESIGN.md)
with exploratory color/type tokens; it explicitly is not a layout spec or a theme implementation.
`ai.md` and `Controls/index.md` now describe the landed surface. No new task was added to the queue.
- **Shipped in those commits:** type/duration picker persisted with the layout; CPU left-to-right
Wipe; one locked Brand logo image layer per scene; preview transition animation in every mode;
program transitions while recording or streaming. The 7da2872 commit omitted a memory update;
`TASKS.md` and `ai.md` now reflect it.
- **Current work unit:** when a draggable element is selected from the layer list, `PreviewPane`
temporarily raises its item container and gives it priority in the custom preview hit test. On
deselection, normal preview stacking returns; the scene collection order and saved/program z-order
never change. `SelectedLayerPreviewHitTestingTests` verifies the overlapping Brand logo/webcam
visual hit, custom hit priority, and deselection restore.
- **The six prior suite failures are resolved in their tests, not by reverting current behavior:**
LayerReorder now accounts for the permanent Brand logo after Background; BorderColorPicker validates
every palette picker and scopes its rendered-widget lookup to the visible webcam control; both
thumbnail cases persist explicit tile assets instead of relying on removed default seed files;
SourceNaming only considers user-created Text overlays; ZoomBox locates its placeholder by type,
not a list index changed by Brand logo.
- **The worktree already had three uncommitted user edits before this docs sync; they are preserved:**
`Controls/OverlayHost.xaml` groups App Settings into Recordings, Brand logo, Preview, and Scene
transition sections with compact controls; `Controls/TopBar.xaml` wires right-click on the gear;
`Controls/TopBar.xaml.cs` opens App Settings directly on right-click while left-click keeps the
menu. These are active UX-redesign work, not part of the selected-layer fix. On-screen verification is
still pending.
- **This work unit is committed locally, not pushed.** The three pre-existing user edits above
remain uncommitted and untouched.
- **Next:** continue the creator's UX redesign and verify the current App Settings/gear changes,
transitions, and Brand logo on-screen. The earlier vertical-webcam hands-on check is also still
pending unless the creator confirms it was completed. Move's persistent-layer behavior and Cube
remain queued; distribution remains deferred until near v1.
- **Verification state:** `verify.sh` passed: clean build with 0 warnings, **444/444 tests passed**,
and scope check passed. The new selected-layer integration test also passes by itself.
- **Follow-up, not fixed here:** `ytLive.csproj`'s `GenerateBuildStamp` comment still describes a
commit-count-based `+1 per commit` counter, but the target now reads/writes local `BuildCounter.txt`
and increments it per build. `ai.md` records the code's current behavior; correct the stale source
comment in a separately scoped change. `ViewModels/MainViewModel.Socials.cs` also still calls the
Socials surface a modal dialog in its method comment; the committed UI is now a preview-rail drawer.
Correct that source comment separately if the file is next in scope. The new deterministic WPF
hit-test recipe is in `MyMistakes.md`; the final commit cites its Microsoft reference.
- **WPF stacking reference:** [`Panel.ZIndex`](https://learn.microsoft.com/en-us/dotnet/api/system.windows.controls.panel.zindex?view=windowsdesktop-10.0)
governs preview container order. The code also prioritizes the selected element in `HitElementAt`,
because the custom hit test does not consult WPF's visual z-order. The deterministic test recipe and
hit-testing reference are recorded in `MyMistakes.md`; cite that Microsoft reference in the commit.
---
## Historical notes (retained reference; current checkout state is above)
### At a glance (2026-10-26 docs session)
- **`ai.md` is being split into `docs/ai/*.md`** (user-approved: verbatim move, staged units, "ai.md
only"). Three units landed as separate commits, **docs only, not pushed**:
`804b1d2` (frame pipeline: cadence/timing/budget/compositor/pump),
@@ -20,7 +78,7 @@
---
## Prior state (2026-10-22) — the creator's properties-panel asks shipped, incl. TASK 63, and pushed; the vv webcam Units 1+2 state below
### Earlier detailed state (2026-10-22) — properties-panel asks shipped, incl. TASK 63, and pushed; vv webcam Units 1+2 state below
## At a glance
- **Branch** main, tracking `origin/main`. **The six-commit properties-panel batch is PUSHED**
@@ -264,7 +322,7 @@ Zombie entities deleted from the registry: `script.leak_strobe`, `script.doorbel
*Test:* `ytLive.Tests/VerticalChatCameraLayoutTests.cs` — in Chat under the vertical tier, enlarge sets
the full top area and the circle option is not offered. **PASSES.**
## Next step
## Historical next step (2026-10-22; superseded by Current state above)
- **✅ TASK 63 + popup-click fix verified by creator (2026-10-22)** — clicking a colour in the
Border Color `YtComboBox` dropdown now stays inside `LeftPanel` (`IsDescendantOf` crosses
`PopupRoot` → `PART_Popup` via `LogicalTreeHelper.GetParent`), updates the webcam border colour,