From 8a6bec02a7e7319391dd999450383298d53aec25 Mon Sep 17 00:00:00 2001 From: cliffhall Date: Tue, 25 Aug 2026 20:26:53 -0400 Subject: [PATCH] docs: correct the toggle rollback comment for the per-server override (#2095) The rollback's explanation still described the removed app-wide boolean and claimed the override was applied only for the active server. That is now the live client's rule alone: the override is keyed by this write's server and is only ever displayed while that server is active, so it is recorded whatever is active by the time the rejection arrives. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_0177mPHAdECD18nLLCTwR5rh Signed-off-by: cliffhall --- clients/web/src/App.tsx | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/clients/web/src/App.tsx b/clients/web/src/App.tsx index 2c123fa3..cf9b731c 100644 --- a/clients/web/src/App.tsx +++ b/clients/web/src/App.tsx @@ -4063,13 +4063,18 @@ function App() { // `persistedPaginatedLists` — read from a `servers` entry that may be // stale, showing the same wrong value from the other side (#2089). // - // Applied only while this write's server is still the active one: the - // override is a single app-wide boolean and the live client belongs to - // whichever server is connected now, so a rejection arriving after the - // user switched would render this server's value on another one. - // The client is taken from the ref for the same reason the success - // path does: a reconnect to the same server passes the id check while - // this continuation's captured instance is already destroyed. + // The override is recorded whatever is active by the time this + // rejection arrives: it is keyed by this write's server and is only + // ever displayed while that server is the active one, so a switch in + // between costs nothing and dropping it would leave the stale entry + // to answer for A the next time it comes back (#2095). + // + // The live client is the half that stays gated — it belongs to + // whichever server is connected now, so pushing this server's value + // into it after a switch would apply it to another one. It is taken + // from the ref for the same reason the success path does: a reconnect + // to the same server passes the id check while this continuation's + // captured instance is already destroyed. const baseline = lastPersistedSettings.resolve(activeServerId) ?? EMPTY_SETTINGS; paginatedListsOverride.record(