The unasked council's clearing effect watches the turn

It checked its own plain flag first and returned, so the turn was
never read and never tracked; the effect ran once and slept. The turn
is read first now, and the flag is reactive.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jm2auWk6RP71CjaAb4FMoG
This commit is contained in:
Eric Wagoner
2026-09-04 17:22:39 -04:00
co-authored by Claude Fable 5.1
parent e724267b0a
commit 9f98a4fc59
+7 -3
View File
@@ -1397,7 +1397,7 @@
* not know to ask, and a minute's silence is how they leave. */
let counciled = false;
/** The unasked advice is for that one turn: it leaves when the turn does. */
let councilUnasked = false;
let councilUnasked = $state(false);
$effect(() => {
if (!view || !isYourTurn || prefs.coached || view.turn.round !== 1 || counciled || councilHints !== null) return;
counciled = true;
@@ -1405,8 +1405,12 @@
void askCouncil();
});
$effect(() => {
if (!councilUnasked || !view) return;
if (!isYourTurn || view.turn.round !== 1) { councilHints = null; councilUnasked = false; }
// Read the turn before anything else: an early return that never
// touches it would leave this effect with nothing to wake it.
const stillFirstTurn = isYourTurn && view?.turn.round === 1;
if (!councilUnasked || stillFirstTurn) return;
councilHints = null;
councilUnasked = false;
});
/** Arrow keys and WASD walk on the board, as they do in the first-person