go-learn/docs/reports/session-10.md
sab.code.lab 1c85091186 chore: восстановление репозитория из снапшота v0.3.1
Прежняя git-история утрачена при переносе проекта на машину владельца
(снапшот без .git). Хэши коммитов в docs/reports/* относятся к утраченной
истории.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-07 09:34:02 +02:00

5.2 KiB
Raw Permalink Blame History

Отчёт сессии 10 — этап 10: дизайн-перенос «васи»

Дата: 2026-08-06. Ветка main: 0a5e2bd → 3f8fc5b (+docs(sync)). Версия 0.3.0.

Вводные

Пользователь получил от Kimi WebSites переносной пакет дизайна (/mnt/agents/upload/Иго-сайт-перенос.md: 8 HTML-страниц, style.css ~23 КБ, 2 JS, 3 JPG в base64) и попросил натянуть его на наш каркас. Эталон распакован и сохранён в docs/design/kimi-export/ (только как референс, в сборку не входит).

Что сделано

  1. Контракт (INTERFACES.md, «Дизайн-перенос (этап 10)»): токены, каркас Layout, тема доски, паттерны страниц, приёмка. Три сознательных отклонения от палитры эталона ради WCAG AA ≥ 4.5:1 (замерено расчётом): --ink-faint #a29885→#6e675c, --terra #c25a33→#a84e2c, --ok #4a7a4e→#46734a.
  2. Изображения: hero/ink/stones сжаты (276→53 КБ, 215→118 КБ, 96→24 КБ) в apps/web/public/assets/.
  3. Три параллельных кодера (ветки design/a,b,c, слиты --no-ff):
    • A: Layout.astro — глобальные стили = адаптация style.css целиком + [hidden] + go-task на светлых токенах; шапка-стекло с канji 碁, проп section → aria-current, мобильное меню, подвал, Google Fonts (PT Sans/Serif/Mono); DEFAULT_THEME доски → светлая; главная по эталону (hero-meta с честными числами: 10/33/6).
    • B: learn, урок, tsumego, progress — разметка по паттернам.
    • C: play, account, register, password-reset — разметка по паттернам.
  4. Интеграционные правки оркестратора (найдены скриншот-проверкой):
    • страницы потока B без .container — контент уезжал в полную ширину;
    • сортировка уроков по data.order не работала (во frontmatter у всех уроков order: 1 — исторически) → сортировка по id файла;
    • shiki рендерил ASCII-диаграммы тёмной темой поверх светлого pre → markdown.shikiConfig.theme: 'github-light' в astro.config;
    • дублирующий H1 из тела markdown → скрыт через .lesson-body > :global(h1:first-child) (scoped-стили Astro не достают до разметки <Content/> — важный нюанс, записать в опыт).

Проверки

  • gates: 467/467 (28 файлов), format+lint+typecheck зелёные — после каждого слияния и финально.
  • Вес страниц (HTML+CSS+JS+img eager): максимум ~157 КБ (index с hero); ink/stones — loading="lazy". Бюджет ≤300 КБ выполнен.
  • Контраст ключевых пар ≥ 4.5:1 (расчёт по токенам + отчёт кодера A).
  • Скриншот-проверка в браузере: index, learn, урок, tsumego, play, account, register — соответствуют эталону; логика (id, data-атрибуты, островки) на месте.

Доставка

  • dist → /mnt/agents/output/app, сохранена новая версия превью (website_version_manager, id b0b2da7). Прежняя рабочая версия не тронута — можно сравнить.

Опыт сессии

  • Scoped-стили .astro не действуют на разметку из <Content/> и set:html — использовать :global(...) с узким селектором.
  • Shiki в Astro по умолчанию тёмный: при смене темы сайта не забыть shikiConfig.theme.
  • /mnt FS: повторяющиеся сбои index.lock/HEAD.lock при git-операциях — лечатся повтором; stale HEAD.lock удалять вручную после проверки, что git-процессов нет. merge лучше делать маленькими порциями.

Открыто

  • Тексты кикеров/абзацев этапа 10 живут прямо в разметке страниц (помечены комментариями «до переноса в strings.ts») — кандидат на чистку при следующем касании.
  • Поле order во frontmatter уроков у всех = 1 (не используется; порядок — по id). Либо проставить 1..10, либо убрать из схемы.
  • Восстановление пароля/капча в статическом превью не работают (API на хостинге) — by design, картинка капчи в превью битая.