[0.4.0] - 2026-06-18
Tune the driver, photograph the crash. The hunt for ROCKNIX's headline instability — the a6xx GPU-fault freeze — produced two operator-facing instruments. A new DRIVER tab exposes the Mesa/Turnip dials the crash signature points at and stamps every session in the ledger with the exact dial set it ran under, so genuine-play tuning finally yields attributable data instead of N=1 guesses. And a crash-cam turns every recoverable freeze into a photographed, dial-tagged ledger entry — the frozen frame is grabbed at the R3 panic, bound to its session, and previewed full-screen on the device. Plus the Manage Shaders engine now deploys reliably. The throughline holds: ETK ships tooling, never bytes.
Added
- DRIVER tab — Turnip dials, ledger-tagged (Pitstop). A fifth tab exposing the Mesa/Turnip environment knobs as gamepad dials:
TU_AUTOTUNE_ALGO(the GMEM↔system-memory render decision engine) and theTU_DEBUGisolation ladder (nolrz/noubwc/sysmem/gmem+ an Advanced group). APPLY injects via the provenprofile.dpath (097-etk-turnip-dials) — effective next launch, survives a cold boot; Reset reverts to Turnip's built-in autotune. Every APPLY writesactive_tune.txt, whichsession_postmortemrecords as the ledger'stune_tagcolumn — so each race is attributable to the exact dial set it ran under. One knob per soak, on-screen. - Crash-cam — frozen-frame capture + on-device preview, bound to the ledger. The dominant ROCKNIX crash leaves no core and no RPCS3 fatal — only a frozen screen.
recovery.shnow grabs that frame viagrimat the R3 panic (best-effort, hard-timeout-bounded so it can NEVER stall the nuclear recovery), andsession_postmortembinds it to the crash's ledger row (crash_shotcolumn). In the Pitstop crash-detail card, press ↑ to view the frame full-screen (viaswayimg), dismissable with any button. A crash entry is now signature + frame + dial, all linked. - Manage Shaders deploy fix.
tools/vault_sweep.sh— the engine the Manage Shaders screen drives — is now deployed to the rig byinstall.sh. It had only ever reached the rig via a dev-time push, so a plain uninstall/reinstall cycle silently dropped it and broke the screen with a misleading "no boundary." The screen now distinguishes engine-missing from a genuinely absent rebuild boundary, and Sweep / Delete-vault / Clear-cache are field-confirmed. - Busy-frame throbber (Pitstop). TOOLS shader scan/clean and PADDOCK sync/push/pull now animate a ROCKNIX-style ASCII spinner on a background thread instead of freezing on a single frame.
Known issues / deferred
- The a6xx GPU-fault freeze remains the headline instability (carried from 0.3.1) — and 0.4.0's new instruments sharpened it without yet beating it. On-rig DRIVER-tab A/B established the fault is a NULL texture/vertex descriptor (
iova=0x0, source=TP|VFD) on the live-race render path (the High Speed Ring tunnel), not memory pressure or tiling — so theTU_AUTOTUNE_ALGOdials (gmem/sysmem) do not move it (4/4 froze). A first probe of RPCS3 Write/Read Color Buffers (the GT6 render-correctness knob) did not eliminate the freeze either, but indicatively moved the fault deeper, past the tunnel-mouth transition (N=1, suggestive). All of which reinforces the Stage-IV Turnip fork as the real next lever — the residual fault sits below the RPCS3 render-setting layer. - mako cannot render images on ROCKNIX — the gdk-pixbuf loader modules are stripped from the build, so a notification renders text but never an image. The crash-cam preview therefore uses
swayimg; a build lacking it degrades to a text toast with the SMB path.