src/lib/load-messages.ts: new isolated message-loading utility with strict error logging and runtime empty-object guard.fs/promises from src/locales/{locale}/{ns}.json.deepMerge of namespaces: common → mail → settings → auth → commands.en first, then overlays target locale — missing keys show English, not raw keys.console.error on empty messages object (diagnostic for Docker standalone).src/i18n/request.ts: updated to next-intl v4 API — ({ requestLocale }) with await requestLocale (Next.js 16 async params).loadMessages(locale); removed inline file-reading.src/app/[locale]/layout.tsx: getMessages() called without arguments — reads from cached React context initialized by request.ts.next.config.ts: outputFileTracingIncludes fixed — key "/[locale]/**/*" (was invalid "/*"); paths ./src/locales/**/*.json + ./src/i18n/**/*.ts.Dockerfile: src/i18n + src/locales copied to runtime image; chown -R node:node ./src ensures read access for USER node.internal/sync/priority_checker.go: new PriorityChecker — isolated, short-lived IMAP scanner for user-initiated sync.SyncAllFolders (INBOX + all folders), disconnects.CheckWorker / SyncWorker goroutines.dialWithRateLimit, authenticate, SyncAllFolders, syncFolderByUID — zero code duplication.internal/api/account_handlers.go: new endpoint POST /api/accounts/{id}/check-now.CheckAccountAccess authorization.{"status":"ok"} immediately.cmd/server/main.go: PriorityChecker wired into apiHandler via sync.NewPriorityChecker(store, oauthManager).frontend/src/components/email-sidebar.tsx: handleAccountSelect triggers fetch POST /api/accounts/{id}/check-now for concrete accounts (skip unified/groups)..catch(() => {}) — best-effort, never blocks UI.internal/store/postgres/storage.go)MaxConns default: 100 → min(20, CPU*4) (5–20 depending on CPU count).PG_MAX_CONNS / PG_SYNC_MAX_CONNS env vars.internal/store/postgres/storage.go, internal/sync/worker.go)AnalyzeAfterBulk() method runs ANALYZE emails asynchronously after SyncAllFolders completes.internal/store/postgres/storage.go)SaveEmail / SaveEmailToFolder / both fallbacks: tsvector now updates when subject changes (was checking only uid, snippet, body_path, folder_id).idx_emails_folder_read_sent (schema.sql, schema_mono.sql)(folder_id, is_read, is_muted, is_pinned DESC, date_sent DESC, id DESC) — eliminates sort step for GetEmailsCursor with unread filter.idx_emails_date_brin (schema.sql)USING brin(date_sent) — ~1000× smaller than B-tree, ideal for time-series aggregation queries.schema.sql)ALTER TABLE emails SET (autovacuum_vacuum_insert_scale_factor = 0.05) — triggers vacuum on insert-heavy workloads before classic threshold.body_path fix (schema.sql)WHERE body_path IS NOT NULL AND body_path != '' — empty-string default no longer breaks partial index.email_comments FK index (schema.sql, schema_mono.sql)idx_email_comments_email_account (email_id, account_id) — fast cascade DELETE when email is removed.sender_profiles cleanup index (schema.sql)idx_sender_profiles_updated_at (updated_at) — enables efficient TTL cleanup of stale avatar cache entries.internal/api/email_normalize.go: normalizeNode now emits -webkit-center / -moz-center alongside text-align:center for all block containers with align="center":div, p, h1–h6 — these are always block containers; text-align:center only centers inline content in standards mode (<!DOCTYPE html>).td, th — email clients sometimes put display:block on table cells for button-like styling (border-radius + background); without table-cellcontext text-align:center does not center block children.nowrap → white-space:nowrap: deprecated HTML4 attribute on <td> now converted to CSS (was silently ignored).internal/api/email_normalize_test.go: new TestNormalizeAlignCenterOnBlockContainers covers div, td (with display:block), nowrap, valign.<div align="center"> wrapper or <td align="center" style="display:block"> button cells (Fix Price, GPB, Neon Buddha, Glassdoor — all verified against real .eml files).text-align:center (always valid) → -webkit-center (WebKit/Blink override) → -moz-center (Gecko override). Each engine silently drops unknown values; the last valid one wins.