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", () => {