system_settings). Заменили жестко закодированные категории. Добавлен пользовательский интерфейс настроек, выбор цвета и движок правил авто-чтения/авто-перемещения на основе AI-тегов. 100% локализация на 45 языках.?tag=...).Cmd+P запускает изолированную печать на основе iframe, удаляя темную тему и элементы UI для чистого документа.sync_queue кругового пути). Письма ≤1 МиБ разбираются напрямую в RAM.WakeUpAccount добавлен джиттер 0-30с.UPDATE ... FROM unnest, pgx.Batch). Устранены N+1 запросы.account_id во все запросы к одному письму. PostgreSQL теперь обращается к 1 партиции вместо 64.unread_count вычисление перенесено в folders таблицу, устраняя живую COUNT(*) по огромной emails таблице.name_lower GENERATED ALWAYS для устранения последовательных сканирований. Раскомментирован GIN idx_emails_fts и активирован реальный ts_rank FTS. Добавлены хэш-индексы вложений для быстрой CAS-дедупликации.GetEmailIDsByFilter, GetAllAttachments) для предотвращения OOM на 100k+ аккаунтах.syncPool емкость (5 → 20). Добавлена PG_SYNC_MAX_CONNS переменная окружения.?token= отклоняется (400). Фронтенд useSSETicket хук с экспоненциальной отсрочкой переподключения.0600 правами (было 0644).zstd паника пула (добавлены проверки типа/nil). Исправлено SSE EventBus паника двойного закрытия (sync.Once).net.Dial. Добавлена явная передача пароля в go-redis и asynq.account_id payload в фронтенд-хуках (useDeleteEmail) вызывало ошибки синтаксиса пустого UUID в PostgreSQL.MoveEmailAndEnqueueIMAP (SQLite) теперь оборачивает UPDATE + INSERT в одну атомарную транзакцию внутри retryBusy. Ранее два отдельных вызова могли оставить письмо в Корзине без постановки в очередь IMAP перемещения при конкуренции. Время ожидания увеличено с 1.55с до 6.2с в сумме.handleDeleteEmail выбор теперь продвигается только после mutateAsync разрешается — предотвращает setSelectedEmailId от перехода к следующему письму при сбое мутации. Добавлен try/catch с тостом ошибки.shortcuts.onDelete вызывает mutate() перед изменением выбора; React группирует оба обновления состояния, поэтому UI никогда не показывает устаревшее содержимое.TEXT в time.Time приведение для date_sent, snooze_until, и created_at.failed (повторяемые) вместо completed.Shift+U (отправлял отмену выбора). Привязано Cmd+A к пользовательской команде. Исправлено i конфликтовало с Shift+I. Возвращено WeakRef менеджер к стандартному useEffect жизненному циклу.getFolderName. Исправлено 16 предупреждений ручной мемоизации React Compiler. iframe теперь использует key={emailId} для повторного использования DOM..sql файлов при запуске сервера через schema_migrations отслеживания и pg_advisory_lock.user: "0:0" во всех версиях M/U для исправления SQLITE_READONLY в системах с userns-remap. Удалено cap_drop: ALL что ломало инициализацию PG. Добавлено wget HEALTHCHECK.pgx, go-redis, websocket, и т.д.).NewManager конструкторы. Разделение useEmailMutations.ts в 13 сфокусированных хуков. Разделение email-list.tsx в 5 подкомпонентов.email_handlers.go (~3250 строк) → 9 сфокусированных файлов обработчиков + email_helpers.go.WriteJSONError / WriteInternalError вместо http.Error.?token= возвращает 400; аутентификация через ?ticket= или rms_token httpOnly куки. sse_auth_test.go добавлен.HandleSetup устанавливает httpOnly rms_token куки при первом запуске.e2e/smoke.spec.ts в CI конвейере.e2e/unified-auth.spec.ts с эфемерным Postgres (e2e-unified-backend.sh). CI задача e2e-unified.page.tsx → useMailInboxPage → useMailInboxState + buildMailViewerProps.useEmailListFilters, useEmailListKeyboard, useEmailListVirtualizer.framer-motion свайп на CSS переходы. Гибридный виртуализатор: фиксированная ROW_HEIGHT оценка + measureElement на видимых строках.context.WithoutCancel на отдельные записи.rms_edition ключ localStorage; запросы администратора пропущены в Mono.ai_cat_empty i18n, метки + AI теги на EmailRow.account_id в MoveEmail; BulkDeleteEmails очищает emails_fts + повтор; распространение ошибок массовых операций через bulkErr.TestMoveEmailAndEnqueueIMAP_MovesToTrash.window.prompt на M — список папок в диалоге, навигация стрелками.isInsideModal подавляет сочетания клавиш входящих внутри диалогов.e2e/inbox-flow.spec.ts, helpers для входа/учётных данных, npm run test:e2e:local.E2E_EMAIL / E2E_PASSWORD из app_build/.env или .env.production (E2E_ENV_FILE переопределение).ensureEmailAccess, verifyBulkEmailAccess, account_id в WHERE хранилища, Mono унифицированный + group: область видимости для списка/поиска/выбора всех/массового фильтра.Bulk*ByFilter через очередь записи; resolveBulkMoveTarget (папка для каждого аккаунта по имени); folderNameMap для постановки в очередь IMAP.query-cache.ts, постраничный бесконечный курсор, оптимистичный массовый фильтр, стабильные ключи пакетных меток, только для разработки логи HotkeyManager.email_helpers_test.go; go test ./..., vitest, typecheck зелёный.audit fix --force отклонено (понизило бы версию Next.js).requireAdminForNonMono на CheckAccountAccess кэш-попадание; массовые операции с тегами/метками + AI сводка доступа перед чтением тела; group_id список с областью видимости для каждого аккаунта.set_flagged API + BulkSetFlagEmails — отметить все или снять все (не переключение для каждого письма); выбор всех через количество папок./api/emails/count?flagged= / has_attachments=; React Query email-folder-counts (не загруженный срез страницы).top: позиционирование; полупрозрачный призрак перетаскивания; смахивания только по сенсорному экрану на мобильных устройствах.*_mono.sql; SQLite предпочитает mono-двойники, пропускает только Postgres 005/006/010_64/021.InitSchema + RunMigrations перед прослушиванием HTTP; при сбое завершает процесс (без сломанного API).emails с пустым schema_migrations; пропуск для замещенных 005/010_64; безвредные идемпотентные ошибки DDL.IF NOT EXISTS синтаксис, если столбец уже существует.005_partition_emails.sql); Единый folders.uid_validity отсутствует на устаревшем Postgres.folders.uid_validity столбец (миграция 022); несоответствие для каждой папки очищает очередь + полная повторная синхронизация в multi_folder.go.multi_folder_test.go регрессионное покрытие.setState-in-effect → синхронизация во время рендеринга; удалены неиспользуемые переменные; виртуализатор eslint-disable.e2e-local.sh: авто E2E_EMAIL/E2E_PASSWORD из M_EMAIL/M_PASSWORD; помощник входа по API для контролируемых входных данных.