- doctor: resolve the workspace/Nix runtime before the native path, honour
multi-entry XDG_DATA_DIRS, raise the kernel minimum to 5.14, and redact
home/prefix/workspace paths by default (--no-redact opts out). Reports are
written mode 0600.
- crash-report: drop the whole-process table from the default bundle
(--all-processes opts in), mask credentials in argv, strip window titles,
validate --label, find the workspace launcher log, bound the log tail,
describe missing logs, write the archive 0600 without owner metadata, and
keep --json output pure JSON.
- perf-baseline: reject non-finite times and absurd frame times, count
--last by usable match, include the last sample interval in duration,
record only the log basename, and rename p50/p95/p99 to sample_p* to make
clear they are ten-second samples.
- docs: correct the metric descriptions, flag names and shader-cache sign.
Turns "it does not work" into an attachable report instead of a log-less
issue. Three read-only host tools, reachable from the launcher:
- doctor.py checks GPU/driver, Vulkan ICDs, display session, memory, disk,
overlay layer, core-dump limit, i915 panel self-refresh and prefix/runtime
state. --json and --report produce an issue attachment; warnings do not fail.
- crash-report.py bundles the doctor checks, process table, dserver and
launcher log tails, graphics kernel messages, display state and recent core
dumps. Environment is never collected and home/user/host are redacted.
- perf-baseline.py parses the game's own netstats.csv into average FPS,
p50/p95/p99 frame time, slowest-quarter FPS and hitch count, with --json and
--append for before/after comparisons.
COMPATIBILITY.md records the verified UHD 620 row with measured numbers
(24-32 avg FPS, p99 44-98 ms) and explains how to submit another one.