PC ship 3 proof (2026-10-11, lighting PC, final head db0876b)
๐ 12:43 screen 2 defects fixed: NDI monitor off the wall, taskbar off Blackout (no restart, pid 6592)
- Camera source: the direct NDI grab. The publisher log had 2,988 direct frames and 11 window frames from 10:51 to 12:33.
- 2e9fe48 camera-feed.ps1: after the first direct frame, a miss retries direct (reconnect every 5 s) and never takes the window path. The monitor is never restored or pinned topmost again. The window fallback stays only for a publisher that has never had a direct frame.
- Publisher restart: pid 10812 stopped, new pid 3108. NDI Studio Monitor 13920 closed.
- 2-minute watch: camera.jpg was sampled every 10 s from 12:35:42 to 12:37:43. Worst age was 13 s, during the 20 s direct reconnect at publisher start, and 0 s from 12:36:02 on. The monitor never came back. Direct reconnected at 12:35:56.
- b5015c2 + db0876b two-screen.ps1: the cause of the taskbar was SetForegroundWindow failing from a background job. Each failure flashed an Edge taskbar button, and a flashing button held both auto-hide taskbars up. Screen 1's taskbar was also over the GO bar after one reopen. Windows are now brought forward with thread-attached input, which sends no keystroke. Window 2 is then pinned HWND_TOPMOST on screen 2 only. No Windows taskbar setting was changed.
- Proven on a scripted reopen at 12:42: close plus
new-desk -Action open -TwoScreengives clean bottoms on both screens, no flashing buttons, Console in front and the screen 2 Blackout button clear. - Checks at db0876b (fsck clean): /help/ 200 with 12 chapter links. 04 has "thumb", 07 has "lights on". desk.js, screen2.js, wall.js and xfade.js match the working copy.
- Desk state: pid 6592 unchanged, dmx running, frames 8,382,306. Marker present, keepalive Ready. The run folder carries both fixes.
- Regress and shots: Mac
--read-onlyGREEN, 10 passed. pc-ship3-screen1.png and pc-ship3-screen2.png were recaptured at 12:43. - Note: a desk restart through new-desk can still open the NDI monitor once if the camera is stale at that moment (EnsureCamera). The patched publisher never pins it, but it would open wherever NDI places it.
๐ 12:33 follow-up: 7cf4ff8 + 2c9ec18 applied (pages only, no restart)
- PC working copy: fast-forwarded 3e8571e to 2c9ec18. That covers 7cf4ff8 (desk.js, screen2.js, wall.js mid-fade badges) and the help phase 3 re-shoot. fsck is clean.
- Transport: media blobs only went as 2 packs of about 20.8 MB each to https://gregbot-pages-2to.pages.dev/lightdesk-pc-media-2026-10-11c/, and both md5 matched. The 118 KB code pack went in chunks, size and md5 a4de969ca236 matched.
- Copy and windows:
new-desk -Action ui. The two Edge windows were closed and reopened with two-screen.ps1 because desk.js and screen2.js changed: screen 1 at 0,0, screen 2 at 1920,0. - Desk: 7070 pid 6592 before and after, so 0 s dark. Frames 8,239,518 and rising. Restart 3 still unused.
- /help/: 200, title "LightDesk help", 12 chapter links.
- Chapter pages: /help/04-moods-and-beams.html has "thumb". /help/07-key-light-and-safety.html has "lights on".
- Scripts: /v2/desk.js, screen2.js and wall.js each return 200 and match the working copy in size.
- Media: 73 help media files, 0 mismatches between the working copy and the run folder.
- Marker and keepalive: the two-screen.on marker is present and the keepalive task is Ready.
- Mac regress:
--read-onlyGREEN, 10 passed. Shots pc-ship3-screen1.png and pc-ship3-screen2.png were recaptured at 12:33. The NDI monitor still covers screen 2 (see the open finding below).
What shipped: the PC working copy fast-forwarded from 82a1387 to 3e8571e. That is 19 commits: UX-A, UX-B, UX-C crossfader (v2/xfade.js and xfade.css), ux-fix 1 to 6, and help phases 2a and 2b. fsck is clean and the 73 help media files match the Mac.
No restart: 21f3b16..3e8571e touches no .cs or csproj. The running binary is 21f3b16, and wwwroot is served by UseStaticFiles. The run folder took new-desk.ps1 -Action ui. The two Edge windows then reopened through two-screen.ps1 close plus new-desk -Action open -TwoScreen. No windows were open for 7070 before the reopen. Restart 3 stays unused.
Dark time: 0 s. 7070 pid 6592 before and after, dmx running, frames 8,040,396 rising to 8,140,134.
Backup: C:\Users\Tiny Room\lightdesk-next-backup-2026-10-11-ship2 (296 files, robocopy rc 1, data excluded).
Transport: the help media was 60 MB, too big for chunks. Media blobs only went as 3 git packs of about 19.7 MB each to https://gregbot-pages-2to.pages.dev/lightdesk-pc-media-2026-10-11b/. All three md5 matched on the PC. The 237 KB code pack went as 106 base64 chunks, size 238592 and md5 9618ac75619f matched. Then index-pack and merge --ff-only.
Checks from the PC (fleet job 1940)
- /api/status 200: dryRun=false, dmx.running=true, show.running=false.
- /help/ 200. "Arm B" is NOT on the index page, on the PC or in the Mac source. It is on 04-moods-and-beams.html and 09-phone.html.
- /help/04-moods-and-beams.html 200: Arm B=true, crossfader=true.
- /desk.html 200: xfade=true.
- /v2/xfade.js 200: 11,344 bytes, equal to the working copy.
- tools/two-screen.on marker present in the run folder. "LightDesk keepalive" task Ready (enabled).
- Windows: screen 1 desk.html at 0,0 1920x1080, screen 2 screen2.html at 1920,0 1920x1080. Edge pid 392.
From the Mac
tools/regress-v2.sh 192.168.1.157:7070 --read-only: GREEN, 10 passed.
Shots
- audit-2026-10-10/pc-v2-shots/pc-ship3-screen1.png: new desk with the A/B crossfader row and the ARM B control. Clean, no overlays.
- audit-2026-10-10/pc-v2-shots/pc-ship3-screen2.png: new screen 2 (NOW readout, auto tile density). The NDI Studio Monitor window (pid 13920, opened by new-desk 10/10 21:51) covers about two thirds of it.
Open finding: the NDI monitor covers screen 2
camera-feed.ps1 lines 262-291 use a fallback. When a direct NDI grab returns no frame, it finds the Studio Monitor window, restores it if it is minimized, and pins it HWND_TOPMOST on screen 2. The direct feed is intermittent (1.9 to 6.6 fps), so the monitor keeps coming back over the screen 2 desk. A minimize at 12:28 lasted under a minute.
The auto-hide taskbar is also visible along the bottom of screen 2 and covers the Blackout button. Stopping the flash on both Edge taskbar buttons did not hide it.
Fix options:
- Close the monitor. new-desk leaves a hand-closed monitor closed, and -Action camera reopens it. The direct feed carries the picture.
- Change the fallback so it parks the window off the desk screens, or never restores it while the two-screen marker exists.