Repository navigation
feat: integrate strip authoring and pixel diagnostics across clients - #701
DRSDavidSoft wants to merge 19 commits into
Conversation
|
Validation checkpoint for source 83991c5: full stable-path Go suites internal/control, internal/link and internal/ipcjson passed. The Windows runner used an external local-toolchain modfile; repository module files are unchanged. GitHub branch ref verified, working tree clean. Build 40409793139 is still running; this fix has not yet been deployed. Separate live evidence on the current ci.1647 host and trace-free 5B86029E board: a 180-second, three-pixel Pealayer-driven Converging stream completed 36 checks without framing, CRC or reset changes. Fade and Pulse each ran for ten seconds with the same result. Each owned stream stopped, final strip status was inactive, both seats reported Stop and relays off. Persian Piper announcements played before these demonstrations. Physical color/motion/audio acceptance remains pending. No synchronized media-playback success is inferred from standalone effects. Next: verify exact new Windows host artifact, coordinate its primary-owned deployment, confirm live compiled identity, then replay synchronized media with unchanged 50 ms/250 ms limits. Keep the pre-Play in-flight readback conflict and updater live-primary proof as explicit remaining gates. Private runtime logs/settings/audio are retained locally and not published. |
Prepared playback competed with background serial transactions and, under Windows CPU contention, ready serial/timeline workers could wait longer than the cue budget. Reserve and drain the wire before playback, report intentional deferral explicitly, avoid catalog expansion and retained-log allocation on live paths, and attach temporary Windows High process priority only to prepared local-serial ownership. The 50 ms cue and 250 ms freshness/arming guards remain unchanged.
Priority acquisition precedes drain/grant. Cancellation, drain timeout, reservation release and connection close unwind it; existing pause/fault/expiry/replacement/shutdown paths release the reservation. Overlapping owners are reference-counted; existing High/Realtime and externally changed classes are preserved, and Realtime is never requested. Restoration runs outside the safety-admission lock. Failures are logged separately and retain the original baseline for retry. Synthetic tests do not change OS priority. The host returns to its original priority outside ownership; this is best-effort Windows scheduling, not a real-time guarantee.
Also includes Flutter strip authoring/pixel diagnostics, Police/White Thunder/Converging presets, Fade/Pulse envelopes, offline preview, draft validation, peer-bound one-use probes and configure-before-show frames. Native counterpart: ToghrolTP/pealayer#217/#218; firmware framing work: #700.
Validation and current delivery:
Latest user direction prioritizes chair-only playback. Lighting/non-chair lanes are reversibly unlinked, with authored cues retained. The native observation-time correction, short/continuous chair replay and exact-zero seek now pass the software gates; exact-zero tracking remains in ToghrolTP/pealayer#219. The operator separately confirmed uninterrupted film and actual chair movement, completing chair-only software and physical acceptance for this two-minute test; this does not establish hard-real-time behavior or full-film endurance. Native strip modal visual checks, Android device installation and further LED demos are deferred/open. Private settings, traces, logs, captures and generated audio stay local. Updater identity/failover defect:#562. Detailed timing evidence: docs/STRIP-TIMING-TRACE-CHECKPOINT.md.