fix(site): subscription copy, restore GitHub icon, move contacts to header menu #26

Merged
slaid098 merged 5 commits from fix/site/subscriptions-contacts-footer into main 2026-08-07 18:52:21 +03:00
Owner

Что сделано

5 правок по issue #25 (supersedes #19):

  1. Коп подписок (src/lib/i18n.ts): добавлена запятая после Pro в RU-карточке Ollama (как Pro, так и); убрано упоминание «Внутри — Kimi K3» из RU/EN-карточки Synthetic.new; убран хвост-повтор «Без 5-часовых и недельных лимитов.» в RU/EN-карточке Umans (1-й description).
  2. Футер (src/components/site-footer.tsx): заменён генерический SVG «точка в круге» (viewBox 0 0 24 24) на узнаваемый GitHub octocat (viewBox 0 0 16 16); окружающий <a>, aria-label и sr-only без изменений.
  3. QA-чат: удалена 5-я пара «Как с тобой связаться?» / «How can I contact you?» (RU+EN) из qa.pairs; убрано мёртвое поле link? из типа QAPair; убран мёртвый блок рендера activeQA.link в src/components/qa-chat.tsx.
  4. Бургер-меню хедера (src/components/site-header.tsx): добавлен 3-й пункт «Контакты»/«Contacts» → /${locale}/contacts по тому же паттерну что Subscriptions (className, hover, focus, onClick=close).
  5. Тесты: qa-chat.test.tsx54 кнопки, убраны assert'ы по имени контакта, удалены RU/EN тест-кейсы контактной ссылки; site-header.test.tsx — добавлены assert'ы ссылок /ru/contacts и /en/contacts.

Почему

  • Опечатка в Ollama-карточке — пунктуация (как Pro, так и).
  • «Внутри — Kimi K3» — упоминание конкретной модели немaintainable (меняется в любой момент).
  • Хвост-повтор в Umans — «без недельных лимитов» уже сказано в середине абзаца, концовка дублировала.
  • Иконка GitHub была заменена на нераспознаваемый SVG в PR #15 (path — radio-button, не логотип Forgejo) — возвращена узнаваемая иконка.
  • Контакты в бургере хедера заметнее, чем сердечко в футере; главная упрощается (4 вопроса вместо 5); убирается мёртвый код (QAPair.link + рендер в qa-chat.tsx).

Watch out

  • Поле QAPair.link убрано из типа вместе с блоком рендера activeQA.link в qa-chat.tsx — мёртвый код не оставляем.
  • Импорт Link из next/link в qa-chat.tsx сохранён — он используется в renderTextWithLinks (inline markdown-ссылки [здесь](/apps) и project links). Не unused.
  • Сердечко в футере со ссылкой на /contacts остаётся — второй путь к контактам (по спеке, вне scope).
  • Страница /contacts без изменений.
  • page.tsx (главная) без изменений — рендерит <QAChat>, который теперь отдаёт 4 пары.
  • Все 3 локальные проверки зелёные: npm test (162 passed), npm run lint (biome, 65 files), npm run typecheck (tsc --noEmit).

Pending

Closes #25

## Что сделано 5 правок по issue #25 (supersedes #19): 1. **Коп подписок (`src/lib/i18n.ts`)**: добавлена запятая после `Pro` в RU-карточке Ollama (`как Pro, так и`); убрано упоминание «Внутри — Kimi K3» из RU/EN-карточки Synthetic.new; убран хвост-повтор «Без 5-часовых и недельных лимитов.» в RU/EN-карточке Umans (1-й description). 2. **Футер (`src/components/site-footer.tsx`)**: заменён генерический SVG «точка в круге» (viewBox `0 0 24 24`) на узнаваемый GitHub octocat (viewBox `0 0 16 16`); окружающий `<a>`, aria-label и sr-only без изменений. 3. **QA-чат**: удалена 5-я пара «Как с тобой связаться?» / «How can I contact you?» (RU+EN) из `qa.pairs`; убрано мёртвое поле `link?` из типа `QAPair`; убран мёртвый блок рендера `activeQA.link` в `src/components/qa-chat.tsx`. 4. **Бургер-меню хедера (`src/components/site-header.tsx`)**: добавлен 3-й пункт «Контакты»/«Contacts» → `/${locale}/contacts` по тому же паттерну что Subscriptions (className, hover, focus, onClick=close). 5. **Тесты**: `qa-chat.test.tsx` — `5`→`4` кнопки, убраны assert'ы по имени контакта, удалены RU/EN тест-кейсы контактной ссылки; `site-header.test.tsx` — добавлены assert'ы ссылок `/ru/contacts` и `/en/contacts`. ## Почему - Опечатка в Ollama-карточке — пунктуация (`как Pro, так и`). - «Внутри — Kimi K3» — упоминание конкретной модели немaintainable (меняется в любой момент). - Хвост-повтор в Umans — «без недельных лимитов» уже сказано в середине абзаца, концовка дублировала. - Иконка GitHub была заменена на нераспознаваемый SVG в PR #15 (path — radio-button, не логотип Forgejo) — возвращена узнаваемая иконка. - Контакты в бургере хедера заметнее, чем сердечко в футере; главная упрощается (4 вопроса вместо 5); убирается мёртвый код (`QAPair.link` + рендер в `qa-chat.tsx`). ## Watch out - Поле `QAPair.link` убрано из типа вместе с блоком рендера `activeQA.link` в `qa-chat.tsx` — мёртвый код не оставляем. - Импорт `Link` из `next/link` в `qa-chat.tsx` **сохранён** — он используется в `renderTextWithLinks` (inline markdown-ссылки `[здесь](/apps)` и project links). Не unused. - Сердечко в футере со ссылкой на `/contacts` остаётся — второй путь к контактам (по спеке, вне scope). - Страница `/contacts` без изменений. - `page.tsx` (главная) без изменений — рендерит `<QAChat>`, который теперь отдаёт 4 пары. - Все 3 локальные проверки зелёные: `npm test` (162 passed), `npm run lint` (biome, 65 files), `npm run typecheck` (tsc --noEmit). ## Pending — Closes #25
Author
Owner

Code Review Summary

5 правок по issue #25 реализованы точно по спеке: Ollama comma (RU), убрано «Kimi K3» (RU+EN), убран хвост-повтор Umans (RU+EN), восстановлен GitHub octocat в футере, удалена 5-я QA-пара + добавлен пункт «Контакты» в бургер. CI green, 5 атомарных conventional-коммитов, 4 PR-heading'а, Closes #25.

Positives

  • Мёртвый код убран полностью: поле QAPair.link удалено из типа вместе с блоком рендера activeQA.link в qa-chat.tsx — grep по activeQA.link/.link = 0.
  • Link import из next/link в qa-chat.tsx корректно сохранён — используется в renderTextWithLinks для inline markdown-ссылок [здесь](/apps) (строка 31). PR body явно это отмечает.
  • 3-й пункт меню добавлен по тому же паттерну что соседи (className, scroll={false}, onClick={close}) — логика open/close/escape/outside-click/pathname-change и автофокус firstLinkRef не затронуты.
  • Внешние ссылки сохраняют rel="noreferrer"/noopener noreferrer + target="_blank" — новых XSS-векторов нет.
  • Двуязычная синхронизация RU+EN выдержана; весь коп в i18n.ts; иконки inline SVG.
  • Тесты обновлены согласованно: qa-chat (4 кнопки, убраны contacts-кейсы), site-header (добавлены /ru/contacts + /en/contacts asserts), subscriptions/contacts без изменений и совместимы.
  • Cross-file: writer QAPair type изменён → reader qa-chat.tsx обновлён в том же PR (paired update), других readers нет.

Suggestions (info, not blocking)

  • src/tests/qa-chat.test.tsx:38,140 [style] Текст описания теста всё ещё «renders all 5 question buttons» / «renders all 5 English question buttons», хотя assert уже toHaveLength(4). Название не обновлено — косметика, на прохождение не влияет.

Verdict: APPROVE

## Code Review Summary 5 правок по issue #25 реализованы точно по спеке: Ollama comma (RU), убрано «Kimi K3» (RU+EN), убран хвост-повтор Umans (RU+EN), восстановлен GitHub octocat в футере, удалена 5-я QA-пара + добавлен пункт «Контакты» в бургер. CI green, 5 атомарных conventional-коммитов, 4 PR-heading'а, Closes #25. ### Positives - Мёртвый код убран полностью: поле `QAPair.link` удалено из типа вместе с блоком рендера `activeQA.link` в qa-chat.tsx — `grep` по `activeQA.link`/`.link` = 0. - `Link` import из `next/link` в qa-chat.tsx корректно сохранён — используется в `renderTextWithLinks` для inline markdown-ссылок `[здесь](/apps)` (строка 31). PR body явно это отмечает. - 3-й пункт меню добавлен по тому же паттерну что соседи (className, `scroll={false}`, `onClick={close}`) — логика open/close/escape/outside-click/pathname-change и автофокус `firstLinkRef` не затронуты. - Внешние ссылки сохраняют `rel="noreferrer"`/`noopener noreferrer` + `target="_blank"` — новых XSS-векторов нет. - Двуязычная синхронизация RU+EN выдержана; весь коп в i18n.ts; иконки inline SVG. - Тесты обновлены согласованно: qa-chat (4 кнопки, убраны contacts-кейсы), site-header (добавлены /ru/contacts + /en/contacts asserts), subscriptions/contacts без изменений и совместимы. - Cross-file: writer `QAPair` type изменён → reader qa-chat.tsx обновлён в том же PR (paired update), других readers нет. ### Suggestions (info, not blocking) - **src/__tests__/qa-chat.test.tsx:38,140** [style] Текст описания теста всё ещё «renders all 5 question buttons» / «renders all 5 English question buttons», хотя assert уже `toHaveLength(4)`. Название не обновлено — косметика, на прохождение не влияет. ### Verdict: APPROVE
slaid098 deleted branch fix/site/subscriptions-contacts-footer 2026-08-07 18:52:21 +03:00
Sign in to join this conversation.
No reviewers
No labels
bug
performance
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
slaid098/slaid098-dev!26
No description provided.