- Home discs are never occluders: a plate under a pop was its shadow (glassd x.55, no light, in one
frame), so the hovered disc and the neighbours its name plate or card overlaps snapped dark on every
hover. The pop keeps its own contact shadow.
- The frame menu's tab pitch (and place) are registered lengths that transition: VR Settings' shorter
panel takes a smaller pitch, which changed the bar in one frame while glassd's shape followed a report
(~120 ms) later. Now the bar resizes on the spring the reporter morphs the glass on (shrink fade, grow
snappy); measured: Steam's crop moves over ~250 ms and glassd gets the morph from the first report.
Squeezed by the bar's animating width, Steam's label marquee started mid-open and stayed on (its 24 px of
scroll padding then never fitted). Labels keep their own width while the bar slides (flex-shrink 0, the
bar's edge clips them meanwhile) and Steam's 160 px cap goes. Verified: open 281 px with no clipped label,
collapsed 76 px as before. Seen in a headset-view grab.
- reporter: <html data-lgs-plates> on managed native windows; a plate glassd has not drawn for 1.5 s gets
data-lgs-plate-css (CSS plate glass back). The theme drops CSS plate glass on every other plate at once,
instead of after the ack: no CSS-then-native swap, no fill/shadow transition on each Home disc.
- settings: scrolled state from the scroll listener, the hero title measured in rAF (the 300 ms tick
forced the page's layout mid-transition)
- Frame menu: measured expanded width so Steam's width transition animates;
reporter sends cover.morph end shape + start time, glassd morphs the glass
on the same spring (70 ms native lead).
- Main window: glass-mode change reported from the mutation callback and the
cover marked data-lgs-cover="pending" (no opaque CSS window); glassd springs
covers in/out; daemon keeps lgs-native 1.5 s between modes.
- Launcher: the name plate dissolves in place, then the label fades back.
- IVROverlayView reads system overlays (systemui, HeadsetView) but not
Steam's dmabuf-backed panels
- SteamVR systemui scene graph accepts injected nodes (DOM elements with
buildNode; submit via module 5723's scheduler): reparent-to-panel +
panel-anchor + transform + panel shows live crops of Steam's window at
any 3D offset, and our own dmabuf overlays (needs SetOverlayMouseScale)
- hvgrab: headset-view capture for verification
- device/lgs_vr.py + lgs_vr_core.js: theme every SteamVR page (systemui
frame controls / Now Playing / settings, controller bindings, overlays)
from theme/vr/*.css; a transient user unit (lgs-vr) keeps new pages themed
while the theme is on and exits when the Steam side goes off
- lgs on/off/status/dial drive both Steam and SteamVR
- lgs_index reads SteamVR's webpack bundle too, so %{Token}s work there
- lab: vr:<page> surfaces for shot/outline/styles/audit/js/perf, own lock
SteamVR's VRWebHelper/DebuggerEnabled (port 8090) was enabled with the
user's approval; backup at steamvr.vrsettings.pre-glass-shell.