Завести в main работу с прода: iOS-правки, версия в подвале, самообновление PWA #5

Merged
halofourteen merged 4 commits from release/ios-v1.1 into main 2026-08-24 11:37:40 +03:00
halofourteen commented 2026-08-24 11:37:31 +03:00 (Migrated from github.com)

Заводит в main работу с ветки fix/ios, которая до сегодня жила только на проде: бинарь 383e374 был собран и выкачен, а коммит никуда не пушился. Прод при этом обгонял main на ~1000 строк и ссылался на ADR-067…072, которых в репозитории не существовало.

Что приходит

  • Пуши на iOS (cfd0ec0): sub уезжал как mailto:mailto:, Apple отвечал BadJwtToken. Плюс код причины отказа push-сервиса в журнале — ADR-073.
  • Версия в подвале сайдбара: GET /api/config отдаёт version и commitAt, internal/build разбирает build info — ADR-074, ADR-067.
  • Запрет масштабирования и ощущение приложения: web/js/zoom.js, viewport-fit=cover, safe-area, мета-строки apple-mobile-web-app-* — ADR-075.
  • Самообновление PWA: воркер ждёт просьбы страницы, версии оболочки различаются по ответу воркера, обновление откладывается, пока в строке ввода есть набранное — ADR-068, ADR-070, ADR-072.
  • Строка ввода — редактируемый блок вместо textarea, предел до вставки, IME, перетаскивание — ADR-069, ADR-071.

Номера ADR

Ветка отведена от 522ba89, где последним был ADR-063, и заняла 064–072. Тем временем в main через #3 и #4 пришли свои 064, 065 и 066. Три ADR этой ветки переехали в 073/074/075 (коммит f9ac83b), 067–072 остались на месте — их номера свободны. Все ~34 ссылки выправлены.

Столкновение по строке ввода

Обе ветки правили строку ввода ради одной и той же полосы помощника форм над клавиатурой iOS.

ADR-064 из main считал триггером элемент <form> и вынес поле наружу. Диагноз неверен: полоса бывает у input и textarea всегда, и на устройстве это не помогло — что сам ADR-064 и допускал, расписав contenteditable как следующий шаг. ADR-069 отсюда — ровно этот шаг.

Взято: поле — редактируемый блок (ADR-069/071), контейнер div с role="form" и кнопка type="button" (ADR-064). Слушатель submit убран: контейнер больше не форма, событие не случается. ADR-064 и ADR-069 связаны ссылками в обе стороны.

Лента при этом остаётся такой, какой её сделал ADR-065: поток со сторонами, feed-list, не сетка.

Проверено

  • go build ./..., go vet ./..., go test ./... — чисто, включая новые internal/build и internal/push.
  • Живой прогон на локальном инстансе: два аккаунта, DM, сообщения в обе стороны. Чужое слева, своё справа цветом mark, разделитель даты во всю ширину; строка ввода набирает, отправляет, очищается, подсказка возвращается. В DOM одновременно contenteditable="plaintext-only" + role="textbox" (ADR-069), div role="form" + кнопка type="button" (ADR-064), .feed-list и .line--me только у своего (ADR-065). Ошибок в консоли нет.
  • sw.js VERSIONv6: клиент отличается от обеих версий, где стоял v5.

Не проверено

  • Реальное устройство iOS: полоса помощника форм, safe-area и самообновление PWA. Эмуляции этого в Chromium нет.

Generated by Claude Code

Заводит в main работу с ветки `fix/ios`, которая до сегодня жила только на проде: бинарь `383e374` был собран и выкачен, а коммит никуда не пушился. Прод при этом обгонял main на ~1000 строк и ссылался на ADR-067…072, которых в репозитории не существовало. ## Что приходит - **Пуши на iOS** (`cfd0ec0`): `sub` уезжал как `mailto:mailto:`, Apple отвечал `BadJwtToken`. Плюс код причины отказа push-сервиса в журнале — ADR-073. - **Версия в подвале сайдбара**: `GET /api/config` отдаёт `version` и `commitAt`, `internal/build` разбирает build info — ADR-074, ADR-067. - **Запрет масштабирования и ощущение приложения**: `web/js/zoom.js`, `viewport-fit=cover`, safe-area, мета-строки `apple-mobile-web-app-*` — ADR-075. - **Самообновление PWA**: воркер ждёт просьбы страницы, версии оболочки различаются по ответу воркера, обновление откладывается, пока в строке ввода есть набранное — ADR-068, ADR-070, ADR-072. - **Строка ввода — редактируемый блок** вместо `textarea`, предел до вставки, IME, перетаскивание — ADR-069, ADR-071. ## Номера ADR Ветка отведена от `522ba89`, где последним был ADR-063, и заняла 064–072. Тем временем в main через #3 и #4 пришли свои 064, 065 и 066. Три ADR этой ветки переехали в 073/074/075 (коммит `f9ac83b`), 067–072 остались на месте — их номера свободны. Все ~34 ссылки выправлены. ## Столкновение по строке ввода Обе ветки правили строку ввода ради одной и той же полосы помощника форм над клавиатурой iOS. ADR-064 из main считал триггером элемент `<form>` и вынес поле наружу. Диагноз неверен: полоса бывает у `input` и `textarea` всегда, и на устройстве это не помогло — что сам ADR-064 и допускал, расписав `contenteditable` как следующий шаг. ADR-069 отсюда — ровно этот шаг. Взято: поле — редактируемый блок (ADR-069/071), контейнер `div` с `role="form"` и кнопка `type="button"` (ADR-064). Слушатель `submit` убран: контейнер больше не форма, событие не случается. ADR-064 и ADR-069 связаны ссылками в обе стороны. Лента при этом остаётся такой, какой её сделал ADR-065: поток со сторонами, `feed-list`, не сетка. ## Проверено - `go build ./...`, `go vet ./...`, `go test ./...` — чисто, включая новые `internal/build` и `internal/push`. - Живой прогон на локальном инстансе: два аккаунта, DM, сообщения в обе стороны. Чужое слева, своё справа цветом `mark`, разделитель даты во всю ширину; строка ввода набирает, отправляет, очищается, подсказка возвращается. В DOM одновременно `contenteditable="plaintext-only"` + `role="textbox"` (ADR-069), `div role="form"` + кнопка `type="button"` (ADR-064), `.feed-list` и `.line--me` только у своего (ADR-065). Ошибок в консоли нет. - `sw.js` `VERSION` → `v6`: клиент отличается от обеих версий, где стоял `v5`. ## Не проверено - Реальное устройство iOS: полоса помощника форм, safe-area и самообновление PWA. Эмуляции этого в Chromium нет. --- _Generated by [Claude Code](https://claude.ai/code/session_01QR8uS3zGkybzWRW4GEY1oz)_
Sign in to join this conversation.