- finders.js (VERSION 2): resolvePatch (resolveAll or the "signature not
found, ... left unpatched" status), ensureStyle and logger, used by the
patches instead of their own copies.
- hooks.js (VERSION 2) no longer unwinds per-patch wrappers of old patch
versions; dashboard-windows and steam-close-button drop their handling of
versions <= 2 / <= 6 (in-page only, gone with any SteamVR restart).
- VERSIONs: dashboard-windows 4, steam-close-button 9, window-curvature 21,
frame-controls 7, steam-keyboard-patch 22, launcher-menu grid 7,
pinned-desktop 4, show-all 2.
When the ring shows, frame-controls no longer takes the press over via
cancelPress(); it raises the press's drag threshold to 3x via the new
window.__sfuiWindowCurvature.scalePressDragThreshold(factor) (measured from
the press start). Laser drift keeps the long press, a deliberate drag starts
the curvature drag and cancels it. Completion still calls cancelPress().
- dashboard.windowMaxScale / windowDistance -> dashboard.windows.maxScale /
distance
- windowCurvature: default -> initial, snapPixels/snapPoints ->
detentPixels/detentPoints, dragThreshold -> dragThresholdPixels (also the
patch's option keys; window-curvature VERSION 19); removed `snap` now
points to detentPixels
- types.numbers.positive/nonnegative instead of number + range assertions
(step <= max, initial/detentPoints <= max and distance min <= max stay)
- frame-controls patch accepts longPressMs from 300, like the option
(VERSION 2)
- "SteamVR dashboard patch" in descriptions, which fit into 80 columns
Old names keep working with a rename warning.
The bar panel is no longer padded during a bar drag (its new size and the
compensated origin reached the compositor at different times, so the bar
flickered). SteamVR keeps sending the pressed bar's coordinates past its
edge, so the drag simply uses them. `barDragRoom` is removed.
- Snap points are detents in drag distance (snapPixels, default 24): the
value holds at the point, then continues, so no value is skipped.
`snap` is removed in favour of `snapPixels`.
- The dashboard's own hover haptics are muted during a drag, so only the
value's ticks and detents are felt.
- Longer drag per step by default: 120 px per 1.0 in the menu, 60 on the
bar button (step stays 0.05).
Document the patch calling convention once in lib/default.nix; patch
headers say what, target, hook, state and contracts. Comments only, no
code changes.
- pinned-desktop (VERSION 3): drop the stop() of a predecessor global that
never existed in this repo; log errors as "sfui <NAME>:" through one
guard helper, like the grid patch.
- steamCloseButton.enable is a mkEnableOption like the other feature
switches; enable descriptions no longer end in a stray newline.
- launcher-menu.nix header lists show-all and no longer claims the patches
use no webpack module; hiddenApps mentions showAllApps.
- Patch comments: frame-controls ring timing matches the code (half of
longPressMs, at most 1 s), window-curvature names frame-controls as what
moves its control into the bar, steam-close-button no longer refers to an
unpublished version.
steamFrame.dashboard.windowCurvature: the "Toggle Curvature" row of a
window's More Options menu becomes a control (click: curved -> flat,
flat -> stock; drag up/down with the laser: curvature relative to
SteamVR's stock curve, snapping to 0 and 1). The patch moves each frame's
curvature-origin node to stock distance / value in outgoing scene graphs;
per-window values live in the systemui page. Lookups by signature
("window-curvature" in signatures.json, incl. check-only anchors).
Shared method hooks (lib/hooks.js, passed by mkPatch as 4th argument):
one SendMessage wrapper for dashboard-windows (now VERSION 3) and
window-curvature instead of a chain of per-patch wrappers; legacy
wrappers on top are unwound.