From c7969879d7748ded3c702fc0cbcaba9df83091f6 Mon Sep 17 00:00:00 2001 From: "prompt.ac/@jeffrey" Date: Sun, 9 Aug 2026 10:56:06 -0700 Subject: [PATCH] Say what the debug HUD, the logout, and the clock actually do Six tests were describing a game that had moved on, and they had been red long enough that a red suite told you nothing. None of them found a bug -- every one of them was the old design still being asserted. The debug bug is a HUD status icon now, sitting beside the MIDI piano in the top-right lane, so it is placed by the tray and drawn at the HUD's depth. That is also why it is no longer true that every face debug adds lands on the overlay band: the bug is behind it, on purpose, and the layer test now says so instead of demanding an exact match it cannot get. The logout hands Auth0 the origin it is being served from rather than a literal oskiewar.com, because no preview or local host could ever match the hardcoded one. The clock's footprint moved into `hudClockBox` so the status tray could share it. And `impactDebug` had two spellings asserted, neither of them the one that shipped -- the flash is debug-gated first. Co-Authored-By: Claude Opus 5 (1M context) --- xbox/live/tests/hello.test.mjs | 53 ++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/xbox/live/tests/hello.test.mjs b/xbox/live/tests/hello.test.mjs index e42097cbb..1be91e9c4 100644 --- a/xbox/live/tests/hello.test.mjs +++ b/xbox/live/tests/hello.test.mjs @@ -586,12 +586,18 @@ test("debug view renders on the foreground triangle layer", () => { // halfway and drew nothing, which is exactly how this test failed once. So // say what the layer is: the scene projects inside ±1.4 and the band in // front of it is reserved for overlays. Every face debug adds lands there, - // none of the plain frame's do, and the scene underneath is untouched. + // none of the plain frame's do, and the scene underneath is untouched — + // apart from the bug, which is a HUD status icon beside the MIDI piano now + // and so draws in the HUD's lane rather than on the overlay band. const inFront = (frame) => frame.filter(([, , z]) => z < -1.4); + const behind = (frame) => frame.length - inFront(frame).length; assert.equal(fight.clientErrorState(), ""); assert.equal(inFront(plain).length, 0); assert.ok(inFront(debug).length > 100); - assert.equal(debug.length - inFront(debug).length, plain.length); + const strays = behind(debug) - plain.length; + assert.ok(strays > 0 && strays < 40, + `debug added ${strays} faces behind the overlay; only the status-lane bug belongs there`); + assert.match(source, /if \(debugHitboxes\) icons\.push\("bug"\)/); assert.match(source, /let debugHitboxes = false/); assert.match(source, /function drawCornerCrops[\s\S]*?filledCapsule/); assert.match(source, @@ -1018,25 +1024,31 @@ test("ambient air is a simulated world-entity field", () => { test("debug HUD shows FPS without repeating oskiewar beside the round QR", () => { assert.match(source, /Math\.round\(displayFps \|\| 0\) \+ " fps"/); - assert.match(source, - /if \(debugHitboxes\) \{\n drawDebugBug\(safe\);\n const fpsLabel/); + assert.match(source, /if \(debugHitboxes\) \{[\s\S]{0,140}const fpsLabel/); assert.match(source, /typeWrite\(fpsLabel, safe\.left \+ 2, safe\.top \+ 2/); assert.doesNotMatch(source, /const gameLabel = "oskiewar"/); }); -test("debug starts hidden and parks its persistent bug at bottom center", () => { +// The bug used to be parked on its own at bottom center. It is a status icon +// now, sharing the HUD's top-right lane with the MIDI piano, so it is placed +// by the tray rather than by a corner of its own. +test("debug starts hidden and shows its bug in the HUD status lane", () => { assert.match(source, /let debugHitboxes = false/); - assert.match(source, /function drawDebugBug\(safe\)/); - assert.match(source, /if \(debugHitboxes\) \{\n drawDebugBug\(safe\)/); - assert.match(source, /const x = viewCenterX\(\)/); - assert.match(source, /const y = safe\.bottom - 18/); + assert.match(source, /function drawDebugBug\(x, y\)/); + assert.match(source, /if \(debugHitboxes\) icons\.push\("bug"\)/); + assert.match(source, + /if \(name === "midi"\) drawStatusPiano\(x, y, lit\);\n\s*else drawDebugBug\(x, y \+ 2\)/); + assert.doesNotMatch(source, /const y = safe\.bottom - 18/); }); test("web title offers the shared account logout without entering a fight", () => { assert.match(webShell, /