feat: restore lost issues (404 fix, subscriptions page, header redesign) #4

Closed
opened 2026-08-07 12:59:38 +03:00 by slaid098 · 1 comment
Owner

Контекст

GitHub-аккаунт забанен, три issue созданные на GitHub потеряны: #137 (404 перевод + скорость), #139 (страница подписок), и третий (редизайн шапки) вообще не успел создаться из-за 403. Все три задачи актуальны и обсуждались с пользователем — тексты и контракты готовы. Перенести на Forgejo как три отдельных issue (этот issue — umbrella, отслеживает создание трёх).

Задача

Создать три issue на Forgejo (через API, без labels — известный баг Forgejo с int64 ID):

  1. fix(not-found): localize 404 page and make it static

    • Структурный фикс: статический роут src/app/[locale]/__404__/page.tsx + общий компонент src/components/not-found-view.tsx; локализация через params.locale.
    • Корневой not-found.tsx — редирект на /ru/__404__ (статика, локаль узнать нельзя).
    • src/app/[locale]/not-found.tsx (прямые хиты /en/<несуществующее> через notFound()) — клиентская детекция локали по usePathname(), статус 404 сохраняется.
    • Инвариант: никаких cookies()/headers() в server components (регрессия PR #120 не допускается).
    • Полный текст есть в переписке (issue #137 на GitHub).
  2. feat(subscriptions): personal AI subscriptions page

    • Роут src/app/[locale]/subscriptions/page.tsx (статика), заголовок «Подписки, которыми пользуюсь сам» / EN.
    • Конфиг src/lib/subscriptions.ts: 4 сервиса — OpenCode Go (https://opencode.ai/go), Synthetic.new (https://synthetic.new/?referral=KKPRqRfw), Ollama (https://ollama.com), Umans (https://app.umans.ai/register?ref=YZ78E3D7).
    • Тексты карточек (ru/en) утверждждены пользователем. Карточка: кликабельный заголовок со стрелкой ↗ + кнопка «Перейти →». Сноска со звёздочкой под списком. Никаких сумм бонусов/моделей/лимитов цифрами (устаревают).
    • Ссылка на страницу — только в футер (шапку не трогаем). Sitemap, metadata, тесты.
    • Полный текст есть в переписке (issue #139 на GitHub).
  3. refactor(header): unified menu navigation for all devices

    • Бренд всегда слева (убрать swap → чинится «прыжок» шапки при переходе на карточку).
    • Унифицированное меню ☰ справа рядом с языком, одинаковое на всех устройствах: Утилиты, Подписки. aria-expanded, закрытие по Esc и по переходу.
    • Стрелка «← Утилиты» уезжает из шапки на страницу [slug]; на /contacts и /subscriptions стрелки НЕТ (сейчас ложно показывается на /contacts из-за грубого условия isAppPage).
    • Словари header (ru/en), тесты. Должен быть влит ПОСЛЕ issue 2 (подписки), т.к. добавляет ссылку на /subscriptions в меню.
    • Полный текст есть в переписке.

Контракты

  • Три issue созданы на Forgejo со своими номерами.
  • Порядок исполнения: 404 (независимый) и подписки (независимый) — параллельно возможно; header — строго после подписок.

Инварианты

  • Все тексты и контракты взяты из переписки с пользователем без изменений.
  • Labels не используются (Forgejo API баг с int64 ID — workaround без labels).

Граничные случаи

  • Если один из issue уже создан частично — проверить дубликаты перед созданием.

Влияние на связанные компоненты

  • После создания этих трёх issue — umbrella issue закрывается (его цель = создание трёх).

Вне scope

  • Исполнение самих задач (это отдельные пайплайны после миграции на Forgejo).

Критерии приемки

  • На Forgejo созданы три issue: 404, subscriptions, header.
  • Каждый содержит полный текст (контекст, задача, контракты, инварианты, граничные случаи, влияние, вне scope, критерии приемки).
  • Этот umbrella issue закрыт после создания трёх.
## Контекст GitHub-аккаунт забанен, три issue созданные на GitHub потеряны: #137 (404 перевод + скорость), #139 (страница подписок), и третий (редизайн шапки) вообще не успел создаться из-за 403. Все три задачи актуальны и обсуждались с пользователем — тексты и контракты готовы. Перенести на Forgejo как три отдельных issue (этот issue — umbrella, отслеживает создание трёх). ## Задача Создать три issue на Forgejo (через API, без labels — известный баг Forgejo с int64 ID): 1. **fix(not-found): localize 404 page and make it static** - Структурный фикс: статический роут `src/app/[locale]/__404__/page.tsx` + общий компонент `src/components/not-found-view.tsx`; локализация через `params.locale`. - Корневой `not-found.tsx` — редирект на `/ru/__404__` (статика, локаль узнать нельзя). - `src/app/[locale]/not-found.tsx` (прямые хиты `/en/<несуществующее>` через `notFound()`) — клиентская детекция локали по `usePathname()`, статус 404 сохраняется. - Инвариант: никаких `cookies()`/`headers()` в server components (регрессия PR #120 не допускается). - Полный текст есть в переписке (issue #137 на GitHub). 2. **feat(subscriptions): personal AI subscriptions page** - Роут `src/app/[locale]/subscriptions/page.tsx` (статика), заголовок «Подписки, которыми пользуюсь сам» / EN. - Конфиг `src/lib/subscriptions.ts`: 4 сервиса — OpenCode Go (`https://opencode.ai/go`), Synthetic.new (`https://synthetic.new/?referral=KKPRqRfw`), Ollama (`https://ollama.com`), Umans (`https://app.umans.ai/register?ref=YZ78E3D7`). - Тексты карточек (ru/en) утверждждены пользователем. Карточка: кликабельный заголовок со стрелкой ↗ + кнопка «Перейти →». Сноска со звёздочкой под списком. Никаких сумм бонусов/моделей/лимитов цифрами (устаревают). - Ссылка на страницу — только в футер (шапку не трогаем). Sitemap, metadata, тесты. - Полный текст есть в переписке (issue #139 на GitHub). 3. **refactor(header): unified menu navigation for all devices** - Бренд всегда слева (убрать swap → чинится «прыжок» шапки при переходе на карточку). - Унифицированное меню ☰ справа рядом с языком, одинаковое на всех устройствах: Утилиты, Подписки. `aria-expanded`, закрытие по Esc и по переходу. - Стрелка «← Утилиты» уезжает из шапки на страницу `[slug]`; на `/contacts` и `/subscriptions` стрелки НЕТ (сейчас ложно показывается на /contacts из-за грубого условия `isAppPage`). - Словари `header` (ru/en), тесты. Должен быть влит ПОСЛЕ issue 2 (подписки), т.к. добавляет ссылку на /subscriptions в меню. - Полный текст есть в переписке. ## Контракты - Три issue созданы на Forgejo со своими номерами. - Порядок исполнения: 404 (независимый) и подписки (независимый) — параллельно возможно; header — строго после подписок. ## Инварианты - Все тексты и контракты взяты из переписки с пользователем без изменений. - Labels не используются (Forgejo API баг с int64 ID — workaround без labels). ## Граничные случаи - Если один из issue уже создан частично — проверить дубликаты перед созданием. ## Влияние на связанные компоненты - После создания этих трёх issue — umbrella issue закрывается (его цель = создание трёх). ## Вне scope - Исполнение самих задач (это отдельные пайплайны после миграции на Forgejo). ## Критерии приемки - На Forgejo созданы три issue: 404, subscriptions, header. - Каждый содержит полный текст (контекст, задача, контракты, инварианты, граничные случаи, влияние, вне scope, критерии приемки). - Этот umbrella issue закрыт после создания трёх.
Author
Owner

Umbrella complete.

  • 404 fix: already merged in PR#138 (commit fe1c623).
  • Subscriptions: created issue #7.
  • Header redesign: created issue #8.

Closing umbrella.

Umbrella complete. - 404 fix: already merged in PR#138 (commit fe1c623). - Subscriptions: created issue #7. - Header redesign: created issue #8. Closing umbrella.
Sign in to join this conversation.
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#4
No description provided.