По итогам теста с реальными пользователями (скриншоты в обсуждении задачи).
ADR-064 — строка ввода чата: div вместо form. На iOS (Safari и Chrome) <textarea> внутри <form> поднимает над клавиатурой системную панель навигации по полям («‹ ›» и «готово») — лишние ~50 px ради поля, которому переходить некуда. Заменил на div role="form" (та же семантика для скринридера) и autocomplete="off"; отправка теперь по click/keydown Enter вместо submit. Дешёвый вариант вместо contenteditable — переписывать paste/placeholder/лимит руками не потребовалось. Проверить панель можно только на реальном устройстве — если не поможет, следующий шаг расписан в ADR-064.
ADR-065 — сообщения по сторонам: свои вправо, чужие влево. Десктопная сетка «автор 132px + текст» (часть ADR-024) читалась медленно — непонятно с одного взгляда, кто автор строки. Десктоп и мобильный теперь на одном потоке (как раньше был только мобильный): блок сообщения прижат к своему краю ленты, ширина ограничена (min(640px, 85%)), текст внутри блока по-прежнему выровнен слева. Без баблов, скруглений и фона — только положение блока (айдентика identity/brief.md этого не разрешает). Обновлены ui.md, identity/brief.md и эталонный мок screens.html.
Оба открытых пункта закрыты, docs/open-questions.md пуст.
Проверено
go build ./... — чисто.
Живой прогон через Playwright/Chromium: два аккаунта, DM, сообщения в обе стороны, скриншоты 390 px и 1280 px — своя/чужая сторона видна на обоих брейкпоинтах, перенос длинного текста и разделители дат/«новые» работают.
sw.jsVERSION → v5 (менялись app.css и js/ui/chat.js).
Не проверено
Реальное устройство iOS: снимает ли div вместо form панель навигации по полям — эмуляции этого поведения WebKit нет, headless-Chromium её не показывал никогда.
Деплой на прод (bare.xmatic.team) — из этой среды нет ни ssh-клиента, ни доступа к серверу xmatic; scripts/deploy.sh нужно прогнать вручную после мержа.
## Что и почему
По итогам теста с реальными пользователями (скриншоты в обсуждении задачи).
**ADR-064 — строка ввода чата: `div` вместо `form`.** На iOS (Safari и Chrome) `<textarea>` внутри `<form>` поднимает над клавиатурой системную панель навигации по полям («‹ ›» и «готово») — лишние ~50 px ради поля, которому переходить некуда. Заменил на `div role="form"` (та же семантика для скринридера) и `autocomplete="off"`; отправка теперь по `click`/`keydown Enter` вместо `submit`. Дешёвый вариант вместо `contenteditable` — переписывать paste/placeholder/лимит руками не потребовалось. Проверить панель можно только на реальном устройстве — если не поможет, следующий шаг расписан в ADR-064.
**ADR-065 — сообщения по сторонам: свои вправо, чужие влево.** Десктопная сетка «автор 132px + текст» (часть ADR-024) читалась медленно — непонятно с одного взгляда, кто автор строки. Десктоп и мобильный теперь на одном потоке (как раньше был только мобильный): блок сообщения прижат к своему краю ленты, ширина ограничена (`min(640px, 85%)`), текст внутри блока по-прежнему выровнен слева. Без баблов, скруглений и фона — только положение блока (айдентика `identity/brief.md` этого не разрешает). Обновлены `ui.md`, `identity/brief.md` и эталонный мок `screens.html`.
Оба открытых пункта закрыты, `docs/open-questions.md` пуст.
## Проверено
- `go build ./...` — чисто.
- Живой прогон через Playwright/Chromium: два аккаунта, DM, сообщения в обе стороны, скриншоты 390 px и 1280 px — своя/чужая сторона видна на обоих брейкпоинтах, перенос длинного текста и разделители дат/«новые» работают.
- `sw.js` `VERSION` → `v5` (менялись `app.css` и `js/ui/chat.js`).
## Не проверено
- Реальное устройство iOS: снимает ли `div` вместо `form` панель навигации по полям — эмуляции этого поведения WebKit нет, headless-Chromium её не показывал никогда.
- Деплой на прод (`bare.xmatic.team`) — из этой среды нет ни ssh-клиента, ни доступа к серверу `xmatic`; `scripts/deploy.sh` нужно прогнать вручную после мержа.
---
_Generated by [Claude Code](https://claude.ai/code/session_01RALcsUvCgwJMtG1XaSV4PF)_
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Что и почему
По итогам теста с реальными пользователями (скриншоты в обсуждении задачи).
ADR-064 — строка ввода чата:
divвместоform. На iOS (Safari и Chrome)<textarea>внутри<form>поднимает над клавиатурой системную панель навигации по полям («‹ ›» и «готово») — лишние ~50 px ради поля, которому переходить некуда. Заменил наdiv role="form"(та же семантика для скринридера) иautocomplete="off"; отправка теперь поclick/keydown Enterвместоsubmit. Дешёвый вариант вместоcontenteditable— переписывать paste/placeholder/лимит руками не потребовалось. Проверить панель можно только на реальном устройстве — если не поможет, следующий шаг расписан в ADR-064.ADR-065 — сообщения по сторонам: свои вправо, чужие влево. Десктопная сетка «автор 132px + текст» (часть ADR-024) читалась медленно — непонятно с одного взгляда, кто автор строки. Десктоп и мобильный теперь на одном потоке (как раньше был только мобильный): блок сообщения прижат к своему краю ленты, ширина ограничена (
min(640px, 85%)), текст внутри блока по-прежнему выровнен слева. Без баблов, скруглений и фона — только положение блока (айдентикаidentity/brief.mdэтого не разрешает). Обновленыui.md,identity/brief.mdи эталонный мокscreens.html.Оба открытых пункта закрыты,
docs/open-questions.mdпуст.Проверено
go build ./...— чисто.sw.jsVERSION→v5(менялисьapp.cssиjs/ui/chat.js).Не проверено
divвместоformпанель навигации по полям — эмуляции этого поведения WebKit нет, headless-Chromium её не показывал никогда.bare.xmatic.team) — из этой среды нет ни ssh-клиента, ни доступа к серверуxmatic;scripts/deploy.shнужно прогнать вручную после мержа.Generated by Claude Code