18-LAB / Documentation
4. Use richer fields
The HUD already implements these fallbacks in render(). Do not detect a server
brand and assume every extension is present: check each field independently.
| Pointer | vosu path | Fallback |
|---|---|---|
/keys |
keys.all: ordered inputs with name, isPressed, count, pressedAt, releasedAt |
keys.k1, k2, m1, m2; upstream tosu supplies them via precise v2. |
/play/pressHitErrors |
Note-press timing array | /play/hitErrorArray only when the extension is absent. |
/play/releaseHitErrors |
osu!mania hold-note release timing array | No equivalent; show a dash rather than inventing releases. |
/beatmap/stats/hitWindow |
Optional miss, meh, ok, good, great, perfect judgement boundaries |
Available in both published v2 schemas; show a dash when the relevant boundary is absent or nonpositive. |
vosu only keys.all and separate press/release arrays
are optional additions in the published source used here. beatmap.stats.hitWindow
is shared with tosu, not a vosu-only extension.
Preserve meaning, not just display continuity
- A present but empty
pressHitErrorsarray means no classified presses. Do not substitute the combined legacy array, which may include releases. - Timing arrays carry milliseconds; the HUD displays their latest value, not an average. Hold-release classification can lag the legacy array while evidence is pending.
- Input edge timestamps are nullable gameplay milliseconds. A count increase may expose missed complete taps without exposing an edge timestamp. Do not fabricate those times.
- Hit windows are maximum absolute timing errors after clock rate adjustment. Fields can
be omitted; an unavailable map yields an empty object. Catch's zero timing windows
are not spatial catcher widths. This HUD displays only a positive
greatboundary. - Choosing
keys.allwhen nonempty lets the same HUD show mode-specific input names. The compatibility quartet remains the fallback whenallis absent or empty.
See vosu extensions and schema. The source contracts are vosu v2 and tosu v2.
Next: declare settings.