system_settings). Replaced hardcoded categories. Added settings UI, color pickers, and auto-read/auto-move rules engine based on AI tags. 100% localization across 45 languages.?tag=...).Cmd+P triggers isolated iframe-based printing, stripping dark mode and UI elements for a clean document.sync_queue round-trip). Emails ≤1 MiB parsed directly in RAM.WakeUpAccount added 0-30s jitter.UPDATE ... FROM unnest, pgx.Batch). Eliminated N+1 queries.account_id to all single-email queries. PostgreSQL now probes 1 partition instead of 64.unread_count computation moved to folders table, eliminating live COUNT(*) over the massive emails table.name_lower GENERATED ALWAYS to eliminate sequential scans. Uncommented GIN idx_emails_fts and activated real ts_rank FTS. Added attachment hash indexes for fast CAS deduplication.GetEmailIDsByFilter, GetAllAttachments) to prevent OOM on 100k+ accounts.syncPool capacity (5 → 20). Added PG_SYNC_MAX_CONNS env var.?token= rejected (400). Frontend useSSETicket hook with exponential backoff reconnects.0600 permissions (were 0644).zstd pool panic (added type assertion/nil checks). Fixed SSE EventBus double-close panic (sync.Once).net.Dial. Added explicit password passing to go-redis and asynq.account_id payload in frontend hooks (useDeleteEmail) triggering empty UUID syntax errors in PostgreSQL.MoveEmailAndEnqueueIMAP (SQLite) now wraps UPDATE + INSERT in a single atomic transaction inside retryBusy. Previously two separate calls could leave the email in Trash with no IMAP move queued on contention. Backoff increased from 1.55s to 6.2s total.handleDeleteEmail selection now advances only after mutateAsync resolves — prevents setSelectedEmailId from moving to the next email on mutation failure. Added try/catch with error toast.shortcuts.onDelete calls mutate() before selection change; React batches both state updates so UI never shows a stale viewer.TEXT to time.Time casting for date_sent, snooze_until, and created_at.failed (retryable) instead of completed.Shift+U (was dispatching deselect). Mapped Cmd+A to custom command. Fixed i conflicting with Shift+I. Reverted WeakRef manager to standard useEffect lifecycle.getFolderName. Fixed 16 React Compiler manual-memoization warnings. iframe now uses key={emailId}for DOM reuse..sql files on server start via schema_migrations tracking and pg_advisory_lock.user: "0:0" across M/U versions to fix SQLITE_READONLY on systems with userns-remap. Removed cap_drop: ALL which broke PG init. Added wget HEALTHCHECK.pgx, go-redis, websocket, etc.).NewManager constructors. Split useEmailMutations.ts into 13 focused hooks. Split email-list.tsx into 5 sub-components.email_handlers.go (~3250 lines) → 9 focused handler files + email_helpers.go.WriteJSONError / WriteInternalError instead of http.Error.?token= returns 400; auth via ?ticket= or rms_token httpOnly cookie. sse_auth_test.go added.HandleSetup sets httpOnly rms_token cookie on first-run.e2e/smoke.spec.ts in CI pipeline.e2e/unified-auth.spec.ts with ephemeral Postgres (e2e-unified-backend.sh). CI job e2e-unified.page.tsx → useMailInboxPage → useMailInboxState + buildMailViewerProps.useEmailListFilters, useEmailListKeyboard, useEmailListVirtualizer.framer-motion swipe with CSS transitions. Hybrid virtualizer: fixed ROW_HEIGHT estimate + measureElement on visible rows.context.WithoutCancel on detached writes.rms_edition localStorage key; admin queries skipped in Mono.ai_cat_empty i18n, labels + AI tags on EmailRow.account_id in MoveEmail; BulkDeleteEmails cleans emails_fts + retry; bulk error propagation via bulkErr.TestMoveEmailAndEnqueueIMAP_MovesToTrash.window.prompt on M — in-dialog folder list, arrow navigation.isInsideModal suppresses inbox shortcuts inside dialogs.e2e/inbox-flow.spec.ts, login/credentials helpers, npm run test:e2e:local.E2E_EMAIL / E2E_PASSWORD from app_build/.env or .env.production (E2E_ENV_FILE override).ensureEmailAccess, verifyBulkEmailAccess, account_id in storage WHERE, Mono unified + group: scope on list/search/select-all/bulk filter.Bulk*ByFilter via write queue; resolveBulkMoveTarget (per-account folder by name); folderNameMap for IMAP enqueue.query-cache.ts, per-page infinite cursor, optimistic bulk filter, stable batch label keys, dev-only HotkeyManager logs.email_helpers_test.go; go test ./..., vitest, typecheck green.audit fix --force rejected (would downgrade Next.js).requireAdminForNonMono on CheckAccountAccess cache hit; tags/labels batch + AI summarize access before body read; group_id list scoped per account.set_flagged API + BulkSetFlagEmails — star all or unstar all (not per-email toggle); select-all resolved via folder counts./api/emails/count?flagged= / has_attachments=; React Query email-folder-counts (not loaded-page slice).top: positioning; semi-transparent drag ghost; swipes touch-only on mobile.*_mono.sql; SQLite prefers mono twins, skips Postgres-only 005/006/010_64/021.InitSchema + RunMigrations before HTTP listen; failure exits process (no broken API).emails with empty schema_migrations; superseded-skip for 005/010_64; benign idempotent DDL errors.IF NOT EXISTS syntax when column already present.005_partition_emails.sql); Unified folders.uid_validity missing on legacy Postgres.folders.uid_validity column (migration 022); per-folder mismatch clears queue + full resync in multi_folder.go.multi_folder_test.go regression coverage.setState-in-effect → render-time sync; unused vars removed; virtualizer eslint-disable.e2e-local.sh: auto E2E_EMAIL/E2E_PASSWORD from M_EMAIL/M_PASSWORD; API login helper for controlled inputs.