Документы фиксируют принятые проектные решения Bare: клиент без фреймворков и сборки, Go-сервер одним бинарём, E2EE на WebCrypto, сервер-реле без истории, локальная история с экспортом/импортом, Web Push + VAPID. Кода нет — сначала документы. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SW4ZXtKn5NjX8NH3Lhm2ND
16 lines
1.3 KiB
Markdown
16 lines
1.3 KiB
Markdown
# ADR-010: Перенос истории — только ручной экспорт/импорт
|
|
|
|
## Контекст
|
|
|
|
История живёт на устройстве (ADR-009), но людям нужны перенос на новое устройство и склейка истории с нескольких. Облачная синхронизация сделала бы сервер архивом — non-goal.
|
|
|
|
## Решение
|
|
|
|
Экспорт: вся локальная история сериализуется, шифруется отдельной парольной фразой (запрашивается в момент экспорта) и сохраняется одним файлом `.bare`. Импорт: файл плюс фраза, идемпотентный merge в IndexedDB по messageId. Это единственный механизм переноса истории между устройствами.
|
|
|
|
## Следствия
|
|
|
|
- Повторный импорт и склейка истории с двух устройств не создают дублей.
|
|
- Файл `.bare` самодостаточен и не зависит от пароля аккаунта.
|
|
- Перенос — явное действие пользователя. Автоматики не будет. Осознанно.
|