refactor(subscriptions): content update, remove footer link, forgejo svg #15
Loading…
Reference in a new issue
No description provided.
Delete branch "refactor/subscriptions-content"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что сделано
Правки страницы
/subscriptions(issue #14) — контент, UI, футер.Изменённые файлы (5)
src/lib/i18n.ts— Dict тип (footer.subscriptionsудалён,subscriptions.openButtonудалён,cards[].description: string→cards[].descriptions: string[]), RU/EN словари обновлены (новые title/description/heading, 4 карточки новыми текстами, Umans — 2 абзаца).src/app/[locale]/subscriptions/page.tsx—text-fgна заголовке карточки (видимый), рендерdescriptions.map()(массив абзацев сspace-y-3), кнопка «Перейти →» удалена (ссылки только в заголовках).src/components/site-footer.tsx—<Link>на/subscriptionsудалён (доступ через ☰-меню шапки), GitHub octocat SVG → Forgejo circular mark (упрощённая иконка,aria-label="Forgejo", 16x16).src/__tests__/subscriptions.test.ts—c.description→c.descriptions(длина массива + каждый элемент), проверкиopenButtonудалены.src/__tests__/subscriptions-metadata.test.ts— новые title/description/OG-title для ru/en.Удалённые файлы (1)
src/__tests__/subscriptions-page.test.tsx— тестировал только footer-ссылку на /subscriptions (удалена).Карточки RU (verbatim от заказчика)
Почему
Заказчик выявил правки при ревью: title «Проверенные подписки» точнее, H1 «...которые я проверил на себе» естественнее, кнопка «Перейти →» избыточна (заголовок-ссылка достаточно), заголовки карточек серые (не видно на тёмном фоне), footer-ссылка на /subscriptions не нужна (доступ через ☰-меню), GitHub-SVG вводит в заблуждение (ссылка на Forgejo).
Watch out
biome-ignore lint/suspicious/noArrayIndexKeyдляkey={j}вdescriptions.map()— Biome 1.9.4 правило вsuspicious(неcorrectness). Массивы статичные (не переупорядочиваются), index-key безопасен.contacts.test.tsxSVG-index тест (svgs[0]heart,svgs[1]forgejo) — проходит: новый Forgejo SVG один<svg>элемент (несколько<path>внутри),svgs.length >= 2сохраняется,aria-label="Forgejo"без изменений.subscriptions-metadata.test.ts— дополнительно обновлены OG-title проверки (строки 38/44), не упомянутые в ТЗ, но ссылались на старые «Подписки»/«Subscriptions» и упали бы.footer.subscriptions— typecheck ловит stale-ссылки.site-footer.tsxбыл единственным потребителем (обновлён).Pending
.forgejo/workflows/, триггерpull_requestвосстановлен). Если CI упал наnpm cache(issue #13) — это инфра-баг, не блокер review.Closes #14
Code Review Summary
Ревью PR #15 (issue #14) — правки контента
/subscriptions, UI карточек, футер. Все контракты выполнены: RU-тексты совпадают verbatim с ТЗ, UI корректный, cross-file связи обновлены, тесты зелёные.Positives
src/lib/i18n.ts:161-185.src/lib/i18n.ts:276-301).text-fg(видимый,page.tsx:62),target="_blank" rel="noopener noreferrer", ↗ сaria-hidden. Кнопка «Перейти →» удалена. Umans рендерится черезdescriptions.map()сspace-y-3(page.tsx:66-73).madeBy · heart(contacts) · forgejo-linkверный (site-footer.tsx:7-33). Forgejo SVG — круг с точкой (не GitHub octocat),aria-label="Forgejo",href="https://git.slaid098.dev/slaid098", 16x16.header.subscriptionsсохранён — критическая проверка пройдена: ключ ☰-меню не тронут (типi18n.ts:21, ru:96, en:211, readersite-header.tsx:116). Частая ошибка при удаленииfooter.subscriptions— избегнута.footer.subscriptionsудалён (тип+ru+en),openButtonудалён,cards[].description: string→cards[].descriptions: string[](тип+ru+en).noUncheckedIndexedAccessсоблюдён:card?.descriptions ?? [](page.tsx:55).footer.subscriptions,openButton,card.description(singular) — 0 dangling readers (grep подтвердил). Paired updates в одном PR (writeri18n.ts+ readerspage.tsx,site-footer.tsx, тесты). Окно сломанного main закрыто.subscriptions-page.test.tsxудалён (glob подтвердил отсутствие).subscriptions.test.ts—c.descriptions(массив), нетopenButton.subscriptions-metadata.test.ts— новые title/description/OG-title для ru/en.contacts.test.tsx— проходит с новым SVG (svgs≥2, aria-label, href, 16x16).key={j}— обоснован: статичные иммуттабельные массивы, index-key безопасен (page.tsx:68).## Что сделано,## Почему,## Watch out,## Pending) заполнены осмысленно, CI green (run id=130).Suggestions (info, not blocking)
githubдля второго SVG теперь устарела (это Forgejo SVG, не GitHub). Тест проходит корректно, но имя вводит в заблуждение. Можно переименовать вforgejoдля читаемости — косметика, не блокер.expect(c.descriptions.length > 0 && c.descriptions.every((d) => d.length > 0)).toBe(true)работает, но менее идиоматично чем раздельныеexpect(c.descriptions.length).toBeGreaterThan(0)+expect(c.descriptions.every(...)).toBe(true). Косметика, не блокер.Verdict: APPROVE