Merge branch 'main' of gitverse.ru:kpa39l/dedinit.ru

This commit is contained in:
12 changed files with 446 additions and 3 deletions
+35
View File
@@ -0,0 +1,35 @@
# dedinit.ru — PRD (требования к проекту)
## Цель
Личный технический блог dedinit.ru на Hugo: быстрая публикация статей (MLOps/DevOps/Linux/CI-CD, личный опыт) без поломки сайта.
## Пользователи
- Автор (владелец) — публикует контент, настраивает тему.
- Читатели — русскоязычная аудитория (ru-ru), потребляют статьи.
## Функциональные требования
- Генерация статического сайта Hugo Extended, тема rDedInit (форк PaperMod).
- Статьи — bundle: `content/posts/<YYYYMMDD - slug>/index.md` + hero.svg (viewBox 1200x400, фон #0a0c10, заголовок #58a6ff).
- `date`/`lastmod` — в прошлом (иначе Hugo не публикует); `draft: false`.
- Подсветка блочного кода (цель проекта).
- RSS с полным текстом (site.Params.ShowFullTextinRSS, лимит 5 постов).
- Деплой — ТОЛЬКО `make deploy` (SFTP paramiko на kpa39l.myjino.ru:2222; аккаунт SFTP-only, rsync/ssh-exec невозможны).
- Русскоязычный UI (задача локализации i18n в процессе).
## Нефункциональные требования
- Git-история сохраняется (без потерь; git mv).
- Секреты/пароли в коммиты НЕ добавлять.
- Документация — на русском, в docs/; README — краткое введение.
- Все изменения проекта — через OpenSpec (propose → design → apply → archive).
- Не удалять/не перезаписывать данные пользователя без явного подтверждения.
## Границы (что НЕ делаем)
- Не внедряем мультиязычность en/ru (пока).
- Не переводим контент постов — только UI.
- Не меняем провайдер хостинга/деплоя без запроса.
## Критерии готовности
- Сайт собирается (`make build`) и деплоится (`make deploy`) без ошибок.
- UI на русском (по завершении локализации).
- Репозиторий: чистый git-статус, все коммиты в gitverse.
- Изменения проходят OpenSpec-цикл и архивируются.
+38
View File
@@ -0,0 +1,38 @@
# dedinit.ru — Статус
Обновлено: 2026-09-13 (пост про GoToSocial/релеи)
## Текущее состояние
Сайт-блог dedinit.ru на Hugo Extended (тема rDedInit/форк PaperMod) в порядке: структура репозитория приведена к стандарту (README краткий + вся документация в docs/ + AGENTS.md), всё запушено в gitverse (main). Опубликован новый пост про GoToSocial и релеи. Следующая задача (локализация UI) оформлена через OpenSpec, реализация не начата.
## Сделано
- 2026-09-13: Опубликован пост «GoToSocial молча съедал все статусы с релеев — и я нашёл почему» (commit 0fcfeb3): hero.svg, index.md, `make build`, `make deploy` — прод отдаёт 200 (проверено).
- 2026-09-12: Уборка структуры репозитория — вся документация перенесена в docs/ (git mv, история сохранена), README.md переписан кратко, создан AGENTS.md с правилами проекта.
- 2026-09-12: Правило «ВСЕ изменения проекта — через OpenSpec» добавлено в AGENTS.md (commit 0f4d6da).
- 2026-09-12: Задача «Русская локализация i18n/ru.toml» оформлена через OpenSpec (propose) — change `localize-i18n-ru` валиден, запушен (f07bffe). Артефакты: proposal.md, specs/i18n/spec.md, design.md, tasks.md.
- 2026-09-12: В локальные openspec-скиллы проекта (.hermes/skills/) добавлена секция «Проверка (validate) — ПРАВИЛЬНЫЙ синтаксис» во все 6 SKILL.md (правильный вызов: `openspec validate <имя>`, НЕ `--change`).
## В работе / Следующие шаги
- [ ] **Реализация локализации i18n/ru.toml** (openspec change `localize-i18n-ru`, стадия apply): создать `i18n/ru.toml` с русскими переводами ключей темы, `make build`, проверить grep'ами в public/, закоммитить и запушить.
- [ ] Затем (из ROADMAP): цветовая схема под бренд dedinit(), русские переводы i18n, Telegram-посты (layout + карточки + shortcode), навигация, SEO и др.
## Как запустить / проверить
```bash
cd /opt/dedinit.ru
make build # сборка (hugo --minify)
make deploy-dry-run # симуляция деплоя
make deploy # ЕДИНСТВЕННЫЙ способ деплоя (SFTP, требует SSHPASS)
openspec validate localize-i18n-ru # валидация active-change
```
Источник истины — gitverse (origin main, SSH).
## Ключевые артефакты
- `/opt/dedinit.ru/AGENTS.md` — правила работы агентов (русский, docs/, make deploy, OpenSpec)
- `/opt/dedinit.ru/README.md` — краткое введение
- `/opt/dedinit.ru/docs/` — вся подробная документация (DEPLOY_INSTRUCTIONS, ROADMAP, PAPERMOD_PARAMS, QWEN, gitea-setup, ssh_setup, Telegram_frontend, local-aux-models, favicon-logo-setup, archive/)
- `/opt/dedinit.ru/openspec/changes/localize-i18n-ru/` — активный change (propose готов, apply впереди)
- `/opt/dedinit.ru/.hermes/skills/openspec-*/SKILL.md` — openspec-скиллы проекта (с секцией про validate)
## Открытые вопросы
- Продолжать ли локализацию (apply change localize-i18n-ru) в следующей сессии? (пользователь ещё не подтвердил apply)
- Перенести ли секцию про validate в глобальный скилл Hermes (переживёт перезапись локальных openspec-скиллов)?
+14
View File
@@ -0,0 +1,14 @@
# TODO — dedinit.ru
Формат: | дата | задача | статус | закрыта в |
|---|---|---|---|
| 2026-09-12 | Уборка структуры: вся документация в docs/, краткий README, AGENTS.md | ✅ закрыта | session уборки (коммит d426aa3) |
| 2026-09-12 | Правило «ВСЕ изменения через OpenSpec» в AGENTS.md | ✅ закрыта | commit 0f4d6da |
| 2026-09-12 | Оформить задачу локализации i18n/ru.toml через OpenSpec (propose) | ✅ закрыта | commit f07bffe (change localize-i18n-ru) |
| 2026-09-12 | Добавить в openspec-скиллы правильный синтаксис validate | ✅ закрыта | .hermes/skills/openspec-*/SKILL.md |
| 2026-09-12 | Файлы проекта (STATUS/PRD/TODO/WALKTHROUGH) — в docs/ | ✅ закрыта | docs/STATUS.md, docs/PRD.md, docs/TODO.md, docs/WALKTHROUGH.md |
| 2026-09-13 | Пост «GoToSocial молча съедал статусы с релеев — и я нашёл почему» | ✅ закрыта | commit 0fcfeb3, задеплоено, прод 200 |
| 2026-09-12 | Реализовать локализацию i18n/ru.toml (apply change localize-i18n-ru) | 🔵 открыта | |
| — | Настроить цветовую схему под бренд dedinit() | 🔵 открыта | (ROADMAP) |
| — | Русские переводы i18n (Read more→Читать далее и др.) | 🔵 открыта | (ROADMAP) |
| — | Telegram-посты: layout + карточки + shortcode | 🔵 открыта | (ROADMAP) |
+55
View File
@@ -0,0 +1,55 @@
# WALKTHROUGH — dedinit.ru (капитанский журнал)
## 2026-09-13 — Пост «GoToSocial молча съедал статусы с релеев»
### Контекст
Опубликован пост о граблях с релеями GoToSocial: подписка выглядела рабочей (approved, 202 Accepted), а лента была пустой из-за отсутствия `match_by_default` и пустых матчеров (deny-by-default).
### Что сделано
1. Создан бандл `content/posts/20260913 - gotosocial relay match by default/`: index.md (frontmatter по конвенции, date 2026-09-13T03:00+03:00 в прошлом) + hero.svg (единый стиль).
2. `make build` — без ошибок; статья в `public/2026/gotosocial-relay-match-by-default/`, title и hero.svg на месте, RSS собрался (5 постов, новый первый).
3. Коммит 0fcfeb3 запушен в gitverse (истина).
4. Деплой `make deploy` (SSHPASS из docs/DEPLOY_INSTRUCTIONS.md) — прод отдаёт 200:
https://dedinit.ru/2026/gotosocial-relay-match-by-default/
5. docs/STATUS.md и docs/TODO.md обновлены (запись о публикации).
### Примечание
- Коммит/пуш правок docs/ в этой сессии блокировался песочницей (требует явного подтверждения) — изменения на диске, коммит по подтверждению пользователя.
## 2026-09-12 — Уборка структуры репозитория + OpenSpec
### Контекст
Репозиторий dedinit.ru (Hugo, тема rDedInit/PaperMod) имел документацию в корне; задача — привести к стандарту: README краткий, вся документация в docs/, AGENTS.md для агентов.
### Что сделано
1. **AGENTS.md создан** (корень) — правила: русский язык, структура (README краткий + docs/), стек (Hugo Extended, тема rDedInit, gitverse источник истины, деплой SFTP), статьи (bundle, date в прошлом, hero.svg), деплой только `make deploy`, git-правила, OpenSpec-процесс, проверки перед публикацией.
2. **Документация перенесена в docs/** (git mv): DEPLOY_INSTRUCTIONS.md, ROADMAP.md, PAPERMOD_PARAMS.md, QWEN.md, gitea-setup.md, ssh_setup_instructions.md, Telegram_frontend.md.
3. **Промежуточные файлы**: `.qwen/PROJECT_SUMMARY.md` → docs/archive/, `winscp_script.txt` → tools/.
4. **README.md переписан** кратко (55 строк): суть, быстрый старт, структура, указатели на docs/, конвенции. История убрана.
5. **Ссылки обновлены**: Makefile и tools/deploy_sftp.py → docs/DEPLOY_INSTRUCTIONS.md; docs/QWEN.md, docs/ROADMAP.md — пути.
6. **Коммиты/пуш**: d426aa3 (уборка), 0f4d6da (правило OpenSpec в AGENTS.md), f07bffe (openspec-propose локализации).
### OpenSpec — задача локализации
- Change: `openspec/changes/localize-i18n-ru/` (propose завершён, валиден).
- Артефакты: proposal.md (зачем), specs/i18n/spec.md (требования + сценарии), design.md (решения), tasks.md (5 задач).
- **Питфол синтаксиса**: `openspec validate --change <name>` — ОШИБКА (`unknown option '--change'`). Правильно: `openspec validate <name>`. Это зафиксировано во всех 6 локальных openspec-скиллах (.hermes/skills/openspec-*/SKILL.md).
### Файлы проекта
- Согласно правилу «вся документация в docs/» — файлы проекта лежат в docs/:
- `docs/STATUS.md` — текущее состояние, сделано, следующие шаги, как проверить.
- `docs/PRD.md` — требования, границы, критерии готовности.
- `docs/TODO.md` — журнал задач (история, статусы).
- `docs/WALKTHROUGH.md` — этот журнал.
### Как повторить / проверить
```bash
cd /opt/dedinit.ru
make build # сборка
openspec validate localize-i18n-ru # валидация active-change
git pull # обновление (origin = gitverse)
```
### Известные подводные камни
- `.hermes/` игнорируется git (.gitignore) — openspec-скиллы не коммитятся.
- Секреты: winscp_script.txt и DEPLOY_INSTRUCTIONS.md содержали SFTP-пароль в истории (известно, ротация не проводилась). В новые файлы пароли НЕ записывать.
- Yandex.Disk НЕ должен синхронизировать .git (ломал репозиторий на Windows).