ADR-064/065: строка ввода без системной панели, сообщения по сторонам ленты #3

Merged
halofourteen merged 3 commits from claude/new-version-questions-plan-sp4hz0 into main 2026-08-24 11:12:28 +03:00
halofourteen commented 2026-08-24 09:38:31 +03:00 (Migrated from github.com)

Что и почему

По итогам теста с реальными пользователями (скриншоты в обсуждении задачи).

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 VERSIONv5 (менялись app.css и js/ui/chat.js).

Не проверено

  • Реальное устройство iOS: снимает ли div вместо form панель навигации по полям — эмуляции этого поведения WebKit нет, headless-Chromium её не показывал никогда.
  • Деплой на прод (bare.xmatic.team) — из этой среды нет ни ssh-клиента, ни доступа к серверу xmatic; scripts/deploy.sh нужно прогнать вручную после мержа.

Generated by Claude Code

## Что и почему По итогам теста с реальными пользователями (скриншоты в обсуждении задачи). **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)_
Sign in to join this conversation.