Регистрация открытая (015), контакты и приглашения по нику с закреплением ключа и блокировкой (016), лимиты (017), идентификация устройства через случайный deviceId в IndexedDB и серверный fan-out (018), отказ от серверного перца (019), смена пароля не в v1 (020), интерфейс ru/en (021), айдентика «Скобы» по turn 2 канваса (022). Архитектура, модель угроз и README обновлены. В открытых вопросах остались два: моногарнитура с кириллицей (Fragment Mono её не содержит) и удаление аккаунта. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R2pCJkWyG2aYu48u1Vp1A1
1.2 KiB
1.2 KiB
ADR-008: Сервер — реле с per-device очередью
Контекст
Сервер никогда не является местом, где живёт история (философия, п. 2). Но получатель бывает офлайн — сообщение надо где-то подержать до доставки.
Решение
Сервер хранит транзитную очередь зашифрованных недоставленных сообщений, per-device. Доставлено и подтверждено ACK — удалено с сервера. Не забрано за 30 дней — удалено. Кроме очереди сервер хранит только аккаунты и метаданные комнат и контактов.
Следствия
- На сервере нет истории — компрометация сервера не раскрывает переписку.
- Устройство, молчавшее больше 30 дней, теряет недоставленные сообщения. Осознанно.
- Идентификация устройства для очередей — ADR-018.