- Зафиксировать prod base URL: https://backend.linka.su
- Зафиксировать auth flow: /v1/auth, /v1/auth/register, /v1/auth/reset, /v1/auth/refresh, /v1/auth/logout
- Подтверждены форматы/лимиты: web (OGG Opus + WAV), Android (AAC/MP4 16k), лимит 8MB
- Описаны требования к оффлайну и конфликтам (LWW по updated_at)
- Скелет модулей: api, sync, db
- Общие модели (Category, Statement, UserState, Preferences, Dialog*)
- Интерфейсы репозиториев (Auth/Categories/Statements/UserState/Dialog)
- Ktor клиент + auth/refresh интерцептор
- Secure storage expect/actual (Keystore/Keychain)
- SQLDelight схема + миграции (стартовая)
- Offline queue: типы операций + сериализация
- Sync: flush при online + периодический (на старте + периодически в активном состоянии)
- Realtime: long-poll /v1/changes (минимум)
- AuthRepository: login/register/reset/refresh/logout
- Сессия: access token in-memory, refresh token в secure storage
- Авто refresh при 401 с одним retry
- Repositories: CRUD + сортировка
- Offline-first: локальный кеш, очередь операций (без явного резолва конфликтов)
- Поддержка глобальных категорий (import)
- get/put /v1/user/state
- Нормализация quickes (6 слотов)
- Синхронизация preferences через state
- DialogRepository: chats/messages/suggestions/apply/dismiss
- Отправка текста и аудио multipart
- Подсказки (pending, apply, dismiss)
- Заменить Firebase Auth/RTDB на shared
- Подключить shared repos в UI/ViewModel
- Экран диалога (чат-лист, сообщения, аудио)
- Оставить Firebase Analytics
- Удалить Firebase менеджеры
- SwiftUI экраны на shared state
- Диалог + запись аудио
- shared/commonTest: MockEngine + SQLDelight in-memory
- Android unit (обновлены под shared)
- Android instrumentation
- iOS XCTest
- Cohort/feature flag read source
- Метрики синка/ошибок