Commit Graph

15 Commits

Author SHA1 Message Date
bd6ab03b2e feat(seo): discoverability + Schema.org + IndexNow + Trivy (#1)
All checks were successful
deploy / deploy (push) Successful in 3m7s
2026-05-21 14:25:12 +03:00
8cab51d590 ci: workflow по стандартному шаблону Gitea Actions
All checks were successful
deploy / deploy (push) Successful in 46s
Workflow приведён к шаблону из memory/reference_gitea_actions.md:
- runs-on: ubuntu-latest (act_runner на str-u-01 даёт node:20-bookworm)
- apt-get install openssh-client (нет в node:20 by default)
- secrets: SSH_DEPLOY_KEY (raw private key, не base64) + SSH_KNOWN_HOSTS
- ssh ... bash -s <<'REMOTE' с git clone/pull, docker compose build+up,
  health-check curl, docker image prune retention 7d
2026-05-21 02:53:52 +03:00
7f85f34b6a docs(CLAUDE.md) + fix(nginx): application/rss+xml для feed.xml
All checks were successful
Deploy to web.hhivp.com / deploy (push) Successful in 33s
- CLAUDE.md проекта: сервер, cutover-инструкция, откат за минуту,
  бэкап-пути, стек, структура, RSS-конфигурация под IPB, аналитика+consent,
  CI/CD, локальная разработка
- nginx.conf: types{} default_type application/rss+xml — теперь Content-Type
  правильный для RSS Importer (раньше отдавалось text/xml из дефолтного MIME)
2026-05-21 02:47:39 +03:00
db0d27cf4e build: Dockerfile + nginx.conf + docker-compose + Gitea CI + 404 page
Some checks failed
Deploy to web.hhivp.com / deploy (push) Failing after 3s
- Dockerfile multi-stage: node:22-alpine builds Astro → nginx:1.29-alpine
  отдаёт dist/. healthcheck wget --spider /
- nginx.conf: gzip с подходящими типами (RSS/JSON/SVG/woff2), кэш /_astro/
  immutable 1y, кэш css/js/img 30d, MIME application/rss+xml для feed,
  text/plain для robots/ai/llms/sitemap, кастомная 404
- docker-compose: контейнер anotherreflections-ru-v2 на 127.0.0.1:4084
  (старый WP на :4080 остаётся для отката)
- .gitea/workflows/deploy.yml: push в main → SSH-деплой на web,
  git fetch+reset → docker compose build → up -d → docker image prune
  (retention 7d по правилу проекта). Verify-шаг curl на :4084
- src/pages/404.astro — тематическая страница «не найдено» с навигацией
2026-05-21 02:37:46 +03:00
4319759d88 feat: OG-image, логотип, компактный hero, кнопка отзыва consent
- public/logo-mark.svg (знак, 512×512) и public/logo.svg (знак+надпись,
  640×160). Копии для пользователя — E:/Projects/anotherreflections-logo*.{svg,png}
- public/og-image.png 1200×630 — тематический баннер с лого, заголовком
  градиентом и подписью. og:image + twitter:summary_large_image в meta,
  расшаривание в Telegram/VK/WhatsApp/Twitter получит превью
- scripts/build-og-image.mjs — пересоздание баннера через sharp (devdep)
- .hero.hero-compact — внутренние страницы /miry/, /kontakty/, /privacy/,
  /category/* перешли на компактный hero (меньше padding, без курсивного
  tagline). На главной hero остался прежний — entry point
- На /privacy/ кнопка «Отозвать согласие» — ставит ar-consent=deny
  одним кликом (152-ФЗ: отозвать должно быть так же просто, как дать)
- Описание Главного форума: «Архивный» → «Действующий форум проекта»
2026-05-21 02:14:49 +03:00
6f2cfdd63d feat: счётчики с consent, политика, фиксы дизайна
Дизайн-фиксы:
- Перенесены картинки из старого WP в public/wp-content/uploads/
  (header_bg.gif + 3 размера NY-baner.png 2014/12). migrate-wp.mjs
  обновлён: корректно обрабатывает <a><img></a>, переписывает абсолютные
  URL anotherreflections.ru/wp-content/... в относительные
- Description в frontmatter теперь чистый plain text — без markdown-разметки
- Слаги 11/95/152 → kto-my, s-23-fevralya-2011, s-nastupayushhim-novym-2012-godom
- Hero-метрика: «N лет онлайн» → «с 2006 года» (последний пост 2015,
  активной жизни «20 лет» нет)
- Drop cap (буквица) — только для постов длиннее 240 символов
  (короткие посты раньше выглядели обрезанными)

Аналитика и конфиденциальность:
- Яндекс.Метрика (counter 13938862, webvisor) и Google gtag (GT-PH39R3X)
  перенесены со старого WP
- Cookie consent banner — самописный, без зависимостей: счётчики грузятся
  только после явного «Принять». Выбор хранится в localStorage + cookie
  ar-consent на 12 месяцев. Уведомление в духе 152-ФЗ
- /privacy/ — полная политика конфиденциальности: что собираем (через
  Метрику и GA), для чего, как cookies устроены, права пользователя,
  контакт для запросов на удаление
- В футере добавлены ссылки «Политика конфиденциальности» и «Контакты»
- sitemap.txt + llms.txt включают /privacy/
2026-05-21 02:07:08 +03:00
864819a67c refactor(kontakty): убрана сетка форумов — оставлены только три карточки контактов 2026-05-21 01:52:27 +03:00
841826ba8e feat: страница /kontakty/, robots.txt, ai.txt, llms.txt, sitemap.txt
- /kontakty/ — email, Telegram, ВКонтакте + сетка игровых форумов
- Меню обновлено: добавлен пункт «Контакты»
- public/robots.txt — статика, разрешено всё; Host для Yandex; перечислены
  AI-краулеры (GPTBot, ClaudeBot, Google-Extended, CCBot, PerplexityBot,
  anthropic-ai); ссылки на оба sitemap (XML + TXT)
- public/ai.txt — Train/Cite/Quote: yes, контактная почта
- public/llms.txt — структура llmstxt.org с описанием проекта, ключевыми
  страницами, форумами, RSS-фидами, контактами
- src/pages/sitemap.txt.ts — endpoint, генерит plain-text список 66 URL
  (главная + статика + страницы + посты + категории)
2026-05-21 01:51:51 +03:00
fce2278129 feat: плавающая боковая панель + бейдж «в разработке» для Глубины/Над бездны
- Социальные кнопки и «Наверх» теперь — плавающая вертикальная панель
  в правом нижнем углу, всегда видна; «Наверх» появляется после первого
  скролла (200px+) с плавной анимацией
- Карточки миров получили поле wip; Глубина и Над бездной помечены
  pill-бейджем «в разработке» рядом с названием
2026-05-21 01:46:39 +03:00
5f9ec37211 feat: соц-кнопки и кнопка «Наверх» внизу + русская плюрализация
- Под лентой контента появилась панель из трёх pill-кнопок:
  Telegram (t.me/anotherreflections), ВКонтакте (vk.com/anotherreflections)
  и «Наверх» (smooth scroll to top)
- Универсальный plural() в consts.ts — больше нет «8 мира»,
  hero показывает «8 миров / 50 публикаций / 20 лет онлайн»
  с автоматически правильной формой при любом значении
- Уточнено описание Ренессанса: «фантастическими допущениями мира Сумрака»
2026-05-21 01:43:30 +03:00
65a55ca6ef refactor: «Миры» вынесены на отдельную /miry/
С главной убрана секция миров — лента из 50 постов длинная и до миров
мало кто долистает. Меню «Миры» теперь ведёт на полноценную /miry/.
2026-05-21 01:33:24 +03:00
8e6f5ff6de fix(content): убраны упоминания версий форумов из публичных карточек
Тех. детали движка (IPB 4.x) ни к чему конечному читателю.
2026-05-21 01:28:10 +03:00
9a6f07d302 feat(design): добавлен характер — hero, цветные миры, карточки с акцентами
- Hero на главной: большой заголовок в градиенте, мистический тэглайн,
  мета-плашка «N миров / N публикаций / N лет онлайн»
- Декоративный фон: звёздная россыпь + радиальные градиенты акцента
  (CSS-only, без картинок)
- Карточки постов с цветовой полосой по категории + hover-эффект
- Цветные теги категорий с glow-точкой
- «Миры и проекты» вместо «Форумы»: 8 карточек с тэгом, названием,
  описанием каждой вселенной и цветовой кодировкой
- Single post: буквица в первом абзаце, центрированный заголовок
  в градиенте, тег категории сверху
- BrandMark SVG (две зеркальные арки) + липкая шапка с blur
- Cormorant Garamond вместо Lora — больше серифной выразительности
- CATEGORY_COLORS в consts.ts (расширяемая палитра)
- Mobile-адаптация (clamp заголовки, перенос меты, уменьшенные паддинги)
2026-05-21 01:22:13 +03:00
0c3e248ccc feat: каркас v2 — Astro 5 + миграция 50 постов из WP + RSS для IPB Importer
- Astro 5 (6.3.6) minimal scaffold с Content Collections для posts/pages
- Тёмная палитра в духе старой темы darkness-10 (тонкая типографика Inter+Lora)
- Layout с шапкой/футером, главной-лентой, страницами категорий и одиночными постами
- RSS (общий + per-category) под IPB RSS Importer: RFC-822 pubDate,
  <guid isPermaLink="true">, <content:encoded> с CDATA, <lastBuildDate>
- RSS_CUTOFF фильтр: архив 2009-2015 на сайте остаётся, в RSS — только новые
- 50 постов и 6 страниц мигрированы из WP (anotherreflctions_ru @ db.hhivp.com)
  через scripts/migrate-wp.mjs (HTML→md без внешних зависимостей)
- sitemap.xml автоматически через @astrojs/sitemap
2026-05-21 00:58:44 +03:00
b458cc6fa3 Initial commit 2026-05-20 18:08:03 +03:00