Обе ветки правили строку ввода чата ради одной и той же полосы
помощника форм над клавиатурой iOS. ADR-064 из main считал триггером
элемент form и вынес поле наружу; на устройстве не помогло — полоса
бывает у input и textarea всегда. ADR-069 отсюда заменяет поле
редактируемым блоком, это и есть «следующий шаг» из следствий ADR-064.
Что взято:
- строка ввода — редактируемый блок (ADR-069/071), контейнер div
с role="form" и кнопка type="button" (ADR-064);
- лента — поток со сторонами, feed-list (ADR-065), не сетка;
- brief.md: safe-area из ADR-075 и стороны из ADR-065 вместе;
- app.css: правило 44 px для блока ввода; .author:empty из медиазапроса
убран — main вынес его на верхний уровень, сетки больше нет.
Убран слушатель submit: контейнер стал div, событие не случается.
ADR-064 и ADR-069 связаны ссылками в обе стороны.
sw.js VERSION → v6: клиент отличается от обеих версий, где стоял v5.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QR8uS3zGkybzWRW4GEY1oz
Решение перенесено из закрытого PR #1 (ветка отведена до мержа v1,
номера ADR там разошлись с main). Ссылки выправлены на актуальные
ADR-003/006/013 и на формулировку threat-model «Слабый пароль».
Заодно из open-questions.md убран пункт про сторону сообщений:
его закрыл ADR-065, но вычеркнуть забыли.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QR8uS3zGkybzWRW4GEY1oz
Убирает системную панель навигации по полям над клавиатурой на iOS
(Safari и Chrome): она держится на элементе <form>, а не на textarea
как таковом. Дешёвый вариант вместо contenteditable — сначала пробуем
его, дороже (переписывать paste/placeholder/лимит руками) не потребовалось.
Отправка теперь идёт по click на кнопке и по keydown Enter вместо
события submit — форму убрали, role="form" держит ту же семантику
для скринридера.
По итогам теста с реальными пользователями. Решений пока нет — оба пункта
меняют текущее поведение (композер) и принятый макет ленты (ADR-024),
нужно решение перед ADR и кодом.
Закрыты все открытые вопросы проектирования. Пароль не покидает клиент
(два ключа из мастера), TOFU для публичных ключей, устройства и конверт,
атомарный rekey комнат, регистрация и контакты, схема SQLite и драйвер
без cgo, сессии и CSRF, деплой через nginx+systemd, правила пушей,
айдентика «Скобы» на системном mono. Иконки PWA в web/icons.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015DbCjVfTFq4ZFG8juD45YJ
Документы фиксируют принятые проектные решения Bare:
клиент без фреймворков и сборки, Go-сервер одним бинарём,
E2EE на WebCrypto, сервер-реле без истории, локальная история
с экспортом/импортом, Web Push + VAPID. Кода нет — сначала документы.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SW4ZXtKn5NjX8NH3Lhm2ND