From 02975d79d3ccc566b727ba8fe26c062067688b59 Mon Sep 17 00:00:00 2001 From: Disco DeDisco Date: Tue, 21 Apr 2026 16:04:32 -0400 Subject: [PATCH] =?UTF-8?q?natus=20wheel:=20fix=20DON/DOFF=20reset=20on=20?= =?UTF-8?q?PRV/NXT=20return=20to=20DONned=20planet=20=E2=80=94=20TDD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit _aspectsVisible was set to false when stepping away to a different planet, but the guard `if (item0.name !== _aspectPlanet)` only skipped resetting it on return — it never restored it to true. Replace the conditional with a direct assignment: _aspectsVisible = (item0.name === _aspectPlanet). T11g: navigating away via NXT then back via PRV restores DOFF-active state. Co-Authored-By: Claude Sonnet 4.6 --- .../static/apps/gameboard/natus-wheel.js | 9 ++++----- src/static/tests/NatusWheelSpec.js | 20 +++++++++++++++++++ src/static_src/tests/NatusWheelSpec.js | 20 +++++++++++++++++++ 3 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/apps/gameboard/static/apps/gameboard/natus-wheel.js b/src/apps/gameboard/static/apps/gameboard/natus-wheel.js index c478138..ea53f7e 100644 --- a/src/apps/gameboard/static/apps/gameboard/natus-wheel.js +++ b/src/apps/gameboard/static/apps/gameboard/natus-wheel.js @@ -344,12 +344,11 @@ const NatusWheel = (() => { /** Lock-activate a planet by cycle index. */ function _activatePlanet(idx) { _clearActive(); - // Aspect lines persist across planet switches — cleared only by DON or DOFF. - // Re-opening the same planet restores _aspectsVisible so DON shows as ×. + // _aspectsVisible tracks whether the currently-active planet's aspects are drawn. + // Derive it from _aspectPlanet so navigating away and back via PRV/NXT correctly + // restores the DOFF state instead of resetting to DON. const item0 = _planetItems[idx]; - if (item0.name !== _aspectPlanet) { - _aspectsVisible = false; - } + _aspectsVisible = (item0.name === _aspectPlanet); _activeRing = 'planets'; _activeIdx = idx; const item = _planetItems[idx]; diff --git a/src/static/tests/NatusWheelSpec.js b/src/static/tests/NatusWheelSpec.js index 04a2f68..c426f09 100644 --- a/src/static/tests/NatusWheelSpec.js +++ b/src/static/tests/NatusWheelSpec.js @@ -429,6 +429,26 @@ describe("NatusWheel — DON/DOFF aspect line persistence", () => { expect(donDisabled()).toBe(false); expect(aspectLines()).toBe(0); }); + + // T11g — PRV/NXT navigation back to a DONned planet must restore DOFF state + it("T11g: navigating away via NXT then back via PRV restores DOFF-active state", () => { + clickPlanet("Sun"); + clickDon(); + expect(donDisabled()).toBe(true); // DON disabled, aspects active + + // Navigate away to next planet + tooltipEl.querySelector(".nw-tt-nxt") + .dispatchEvent(new MouseEvent("click", { bubbles: true })); + expect(donDisabled()).toBe(false); // new planet — DON fresh/active + + // Navigate back to Sun + tooltipEl.querySelector(".nw-tt-prv") + .dispatchEvent(new MouseEvent("click", { bubbles: true })); + + // Sun's aspects are still drawn — DOFF must be active, DON must be disabled + expect(donDisabled()).toBe(true); + expect(aspectLines()).toBeGreaterThan(0); + }); }); xdescribe("NatusWheel — half-wheel tooltip positioning", () => { diff --git a/src/static_src/tests/NatusWheelSpec.js b/src/static_src/tests/NatusWheelSpec.js index 04a2f68..c426f09 100644 --- a/src/static_src/tests/NatusWheelSpec.js +++ b/src/static_src/tests/NatusWheelSpec.js @@ -429,6 +429,26 @@ describe("NatusWheel — DON/DOFF aspect line persistence", () => { expect(donDisabled()).toBe(false); expect(aspectLines()).toBe(0); }); + + // T11g — PRV/NXT navigation back to a DONned planet must restore DOFF state + it("T11g: navigating away via NXT then back via PRV restores DOFF-active state", () => { + clickPlanet("Sun"); + clickDon(); + expect(donDisabled()).toBe(true); // DON disabled, aspects active + + // Navigate away to next planet + tooltipEl.querySelector(".nw-tt-nxt") + .dispatchEvent(new MouseEvent("click", { bubbles: true })); + expect(donDisabled()).toBe(false); // new planet — DON fresh/active + + // Navigate back to Sun + tooltipEl.querySelector(".nw-tt-prv") + .dispatchEvent(new MouseEvent("click", { bubbles: true })); + + // Sun's aspects are still drawn — DOFF must be active, DON must be disabled + expect(donDisabled()).toBe(true); + expect(aspectLines()).toBeGreaterThan(0); + }); }); xdescribe("NatusWheel — half-wheel tooltip positioning", () => {