Files
bare/docs/identity/brief.md
T
mayatnikovandClaude Opus 5 383e374f0f iOS: запрет масштабирования, версия в подвале, самообновление, строка ввода
Отзыв с iPhone после первого живого прогона.

Масштабирование запрещено (ADR-066): viewport как в соседнем sixlines плюс
viewport-fit=cover, мета-теги установленного приложения, touch-action против
двойного тапа и страховка на JS — гашение жестов iOS, потому что мета-строку
Safari вправе проигнорировать. Размеры шрифтов не тронуты: 14 px из брифа
остаются, поднимать поля до 16 px владелец отклонил. Цена — доступность
для тех, кому зум нужен — записана в ADR и в ui.md честно.

Версия в подвале (ADR-065, 067): GET /api/config отдаёт короткую ревизию
и время коммита. Именно коммита, а не сборки: штамп компиляции в бинаре
means каждая пересборка даёт новый хеш, и обещание ADR-022 «бинарь собирается
из тега байт в байт» перестаёт проверяться.

Самообновление PWA (ADR-068, 070): в режиме приложения на iPhone перезагрузки
нет, и старая версия жила бы вечно. Проверка при возврате в приложение,
включение ждущей оболочки, перезагрузка — но не тогда, когда в строке набран
текст. Замок от петли сравнивает версию оболочки, а не считает перезагрузки:
счётчик отменял саму фичу, долгоживущая вкладка переставала обновляться.
Замерено: было 30, 60, 120, 240 секунд между релизами, стало ровно 30.

Строка ввода — редактируемый блок (ADR-069): iOS рисует над клавиатурой
полосу со стрелками и «готово» для полей формы, и убрать её со страницы
нельзя. Для contenteditable не рисует. Режим plaintext-only с проверкой,
что он применился, и запасным путём с разбором вставки: невалидное значение
атрибута в части браузеров делает блок нередактируемым вовсе. Чтение
и запись только через textContent, innerHTML в клиенте по-прежнему нет.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015DbCjVfTFq4ZFG8juD45YJ
2026-08-23 15:11:13 +03:00

3.9 KiB
Raw Blame History

Айдентика «Скобы»

Источник — исследование «Исследование айдентики Bare» (Claude Design), вариант 1h и мок чата 2a/2b. Здесь — то, что из него принято (ADR-024).

Знак

Четыре угла рамки, из которой вынули содержимое. Пустота внутри и есть знак. Файл — mark.svg (viewBox 64, штрих 7); для 16 px штрих 9 (web/icons/mark.svg).

Правила: внутрь рамки ничего не помещать; не скруглять; не замыкать в квадрат; не наклонять и не анимировать; один цвет на знак; охранное поле — длина одного уголка. На тёмном и акцентном фоне знак всегда bone.

Wordmark — слово bare строчными рядом со знаком, тем же шрифтом, что интерфейс. «Bare» с заглавной — только в тексте.

Цвет

имя значение роль
bone #F7F5F0 фон
ink #1B1917 текст, рамки, активный элемент
text2 #3C3B38 вторичный текст
mute #6E6D68 авторы, подписи
stone #A9A59D время, placeholder, pending
line #E7E3DA разделители
edge #DEDCD6 внешние границы
mark oklch(55% 0.19 20), fallback #C82D40 один акцент: непрочитанные, «новые», > ввода, свой ник, предупреждения

Акцент — не чаще одного смыслового элемента на экран. Не для кнопок и заливок. Никаких градиентов, теней, скруглений.

CSS-переменные: --bone --ink --text2 --mute --stone --line --edge --mark.

Шрифт

Один: системный моноширинный.

font-family: ui-monospace, "SF Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace;

Размеры: текст сообщений 14 px / 1.55; автор и время 12 px; заголовки секций 10 px, разрядка 0.14em, uppercase; подписи 11 px; имя чата в шапке 15 px. Шрифты не загружаются.

Поля ввода — те же 14 px, исключений нет: масштабирование в клиенте запрещено, и растить шрифт ради обхода фокус-зума iOS не приходится (ADR-066).

Компоновка

  • Десктоп: сайдбар 224 px с правой границей line, шапка 64 px, отступы контента 32 px; сообщения — сетка 132px 1fr, column-gap 20, row-gap 6.
  • Мобильный: шапка 56 px, отступы 20 px, ввод с min-height 44 px. Нижнее поле подвала и строки ввода считается с env(safe-area-inset-bottom): под системную полосу iPhone они не заходят (ADR-066).
  • Ввод — рамка 1 px ink, без скруглений, > цветом mark слева.
  • Активный элемент списка — инверсия: фон ink, текст bone.
  • Разделители — 1 px line; разделитель «новые» — 1 px mark.

Голос

Короткие фразы, строчные буквы, без восклицаний и маркетинга. Ошибки говорят, что случилось и что делать. Примеры в docs/ui.md.