diff --git a/static/js/emailLibrary.js b/static/js/emailLibrary.js
index a42e5c745..6b5b522ff 100644
--- a/static/js/emailLibrary.js
+++ b/static/js/emailLibrary.js
@@ -1334,6 +1334,15 @@ async function _loadAccounts() {
const d = await r.json();
state._libAccounts = d.accounts || [];
} catch (_) { state._libAccounts = []; }
+ // The 'Default' chip is gone — pick an explicit account so the email
+ // list and any per-email actions (open in new tab, mark read, etc.)
+ // always carry an account_id and can't desync from the server's
+ // is_default state.
+ if (!state._libAccountId && state._libAccounts.length) {
+ const def = state._libAccounts.find(a => a.is_default) || state._libAccounts[0];
+ state._libAccountId = def.id;
+ _publishActiveAccount();
+ }
_renderAccountsStrip();
}
@@ -1342,10 +1351,11 @@ function _renderAccountsStrip() {
if (!strip) return;
strip.style.display = 'flex';
const esc = s => String(s || '').replace(/&/g, '&').replace(/Default`;
+ // The 'Default' chip caused desync bugs (changing the server-side
+ // default via the dot while still on the cached 'default' view would
+ // open the wrong account's emails). Each account renders as its own
+ // chip; the active one is selected explicitly via _loadAccounts.
+ let html = '';
// 6px dot — matches the sidebar notification-dot size.
const _dotFilled = '';
const _dotHollow = '';