* chore(assets): update cover without subtitle * fix(assets): restore optional slots in cover template for engine tests * docs(handoff): add handoff + ADR for PR #195 cover update --------- Co-authored-by: opencode-agent <agent@opencode.local>
24 lines
No EOL
3.8 KiB
Markdown
24 lines
No EOL
3.8 KiB
Markdown
---
|
||
pr: 195
|
||
title: "chore(assets): update cover without subtitle"
|
||
---
|
||
|
||
## Что сделано
|
||
Обновил обложку репозитория (issue #194) — три правки в существующих файлах, без структурных изменений:
|
||
|
||
1. **`cover.svg` — увеличен icon-слот** — `.opencode/draw-image/templates/cover.svg`: слот `icon` 400×400 → 520×520, позиция x=312 → x=252 (центрирование по 1024-канвасу: (1024−520)/2=252). Заголовок `{{title}}` переведён в lowercase (`opencode config`), font-size 72 → 80, позиция y=870 → y=830 (компенсация роста icon-слота, чтобы title не налезал на логотип).
|
||
2. **Опциональные слоты движка сохранены** — `<text>` с `{{subtitle}}` и слоты `sub-icon`/`badge` оставлены в шаблоне. Удаление `<text>` сломало бы тесты `render.optional.test.ts` / `e2e.optional.test.ts` (PR#144), которые проверяют, что пустой subtitle → нет `<text>` элемента. Финальный `assets/cover.png` отренерен БЕЗ subtitle-аргумента — `render.ts` conditional-regex (PR#144) удаляет `<text>` строку с `{{subtitle}}` при falsy `args.subtitle`.
|
||
3. **Регенерация `assets/cover.png` + `cover.meta.json`** — перерендерено через `draw-image` CLI (template=cover, icon=opencode, title="opencode config", без subtitle). Новый хеш `646197c4…` (был `de803675…`), `generatedAt` 2026-07-31. Размер 1024×1024 сохранён (density:72, PR#161).
|
||
|
||
Изменены 3 файла: `cover.svg`, `cover.png`, `cover.meta.json`. README, brand.json, тесты — не затронуты.
|
||
|
||
## Почему
|
||
Финальный вариант обложки (без subtitle, с крупным логотипом 520×520 и lowercase-заголовком) выглядит чище и лучше подходит для showcase на slaid098.dev. Сохранение опциональных слотов движка (`sub-icon`/`badge`/`subtitle`) в шаблоне — сознательное решение: шаблон остаётся универсальным для других репо, а conditional-логика `render.ts` (PR#144) гарантирует, что незаполненные слоты не оставляют пустых элементов в финальном PNG.
|
||
|
||
## Pending
|
||
— (после merge: при желании можно применить тот же шаблон к другим репо slaid098 через `draw-image` — отдельный шаг, как после PR#158)
|
||
|
||
## Watch out
|
||
- **PR body vs фактический diff** — PR body утверждает «Убрал subtitle из шаблона», но `<text>` с `{{subtitle}}` остался в `cover.svg`. Это не расхождение с intent: subtitle убран из финального PNG (через отсутствие аргумента), а не из шаблона. Шаблон сохраняет слот для переиспользования.
|
||
- **Хэш `cover.meta.json` изменился** — `computeHash` (sha256) зависит от SVG-контента и `generatedAt`. Все cached PNG будут перерендерены при следующем вызове CLI, если файл удалён (meta.json hash не меняется, но пиксели differ).
|
||
- **icon-слот 520×520 при x=252** — нижний край иконки на y=180+520=700, title на y=830 (font-size 80, baseline). Зазор ~130px — достаточно для Geist Sans. Если увеличить icon дальше (>560), title начнёт налезать. |