diff --git a/PRD.md b/PRD.md new file mode 100644 index 0000000..1e6ec18 --- /dev/null +++ b/PRD.md @@ -0,0 +1,35 @@ +# PRD — Chronicle (блогоплатформа) + +> См. также: ROADMAP.md (миссия/боль/решение, фазы), telegram-archiver/README.md (фаза 0). +> Правило проекта: все изменения через OpenSpec/документирование в ROADMAP + todo. + +## Цель +Единая среда для создания, публикации и архивирования технического контента +(«The Operating System for Technical Creators»): редактор лонгридов с нормальной +подсветкой кода + кросс-постинг + архив на своём сайте. + +## Пользователи +- Технические авторы (разработчики, DevOps, IT-евангелисты) — основная аудитория. +- Сам пользователь (kpa39l) — первый потребитель через VESTI и свой блог. + +## Функциональные требования +1. Telegram Archiver (Фаза 0): парсинг канала → Markdown для Hugo, медиа, front-matter, дедуп. ✅ MVP +2. Markdown-редактор (Фаза 2) — отдельный модуль для встраивания: + - блоки кода с кнопкой «Скопировать» + - включение/выключение нумерации строк (копирование без номеров) + - подсветка синтаксиса по выбранному языку + - выделение инлайн-команд в тексте (`` `cmd` ``) + - живой предпросмотр + GFM +3. Кросспостинг источников: Телеграм, GtS, Hugo, VK (эпогей — новостные каналы VESTI). + +## Нефункциональные +- Модульность: редактор встраивается в VESTI и другие проекты. +- Локальность: основная инфраструктура на bigbox (/opt/vesti, Ollama qwen3:8b). + +## Границы (что НЕ делаем) +- Не перепубликовывать чужие новости (контент-стратегия VESTI). +- Пока без облачной синхронизации (StackEdit-подобное — позже). + +## Критерии готовности Фазы 2 +- Редактор работает как отдельный модуль, встроен в VESTI. +- Блоки кода с копированием/нумерацией/подсветкой работают в реальном посте. \ No newline at end of file diff --git a/ROADMAP.md b/ROADMAP.md index 0aebe7d..c82e3b8 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -77,11 +77,19 @@ **Цель:** Дать тех-блогерам редактор, в котором можно писать статьи с кодом -- [ ] **2.1** Веб-редактор (React / Vue) +**Требования пользователя (2026-09-18):** отдельный модуль для встраивания в другие проекты +(VESTI — первый потребитель) + основа блогоплатформы chronicle: +- Блоки кода с кнопкой «Скопировать» +- Включение/выключение нумерации строк (копирование БЕЗ номеров) +- Подсветка синтаксиса по выбранному языку +- Выделение инлайн-команд в тексте (`` `cmd` ``) +- Живой предпросмотр + GFM + +- [ ] **2.1** Веб-редактор (React / Vue) — как ОТДЕЛЬНЫЙ модуль (web component / npm-пакет / собственная сборка), встраивается в VESTI и другие проекты - [ ] **2.2** Интеграция Monaco Editor (как в VS Code) - [ ] **2.3** Поддержка языков: Python, JavaScript, Go, Rust, Bash, SQL - [ ] **2.4** Темы оформления (светлая / тёмная) -- [ ] **2.5** Блоки кода с кнопкой «скопировать» +- [ ] **2.5** Блоки кода с кнопкой «скопировать» + нумерация строк (toggle; копирование без номеров) - [ ] **2.6** Markdown-режим + WYSIWYG превью - [ ] **2.7** Сохранение черновиков (локально / в GitHub) - [ ] **2.8** Drag-and-drop изображений diff --git a/STATUS.md b/STATUS.md new file mode 100644 index 0000000..840dc2d --- /dev/null +++ b/STATUS.md @@ -0,0 +1,34 @@ +# Chronicle — Статус + +Обновлено: 2026-09-18 (сессия: запись задач редактора и кросспостинга) + +## Текущее состояние +- Репозиторий: gitverse `kpa39l/chronicle.nixg.ru` (ветка master), локальный клон `/opt/chronicle.nixg.ru`. +- Фаза 0 (Telegram Archiver MVP) — выполнена (992 поста, конвертация в Markdown, экспорт медиа, front-matter, дедуп; см. telegram-archiver/). +- Фаза 1 (лендинг c7e.ru) — DNS настроен, SSL/лендинг/репозиторий — открытые задачи. +- Фаза 2 (Редактор с подсветкой кода) — только план, кода нет. Требования пользователя добавлены 2026-09-18. + +## Сделано +- Клонирован репозиторий gitverse в /opt/chronicle.nixg.ru (был только на gitverse). +- ROADMAP.md, Фаза 2 — уточнены задачи 2.1–2.5 требованиями пользователя (отдельный модуль, кнопка «Скопировать», toggle нумерации строк, подсветка по языку, инлайн-команды). +- todo.md — добавлены задачи: Markdown-редактор (модуль для VESTI + chronicle), кросспостинг личных источников. + +## В работе / Следующие шаги +- [ ] Фаза 2: проектирование и реализация Markdown-редактора (см. ROADMAP.md 2.1–2.8) +- [ ] Встроить редактор в VESTI (первый потребитель) +- [ ] Кросспостинг источников (Телеграм, GtS, Hugo, VK) — TODO.md вестей +- [ ] Фаза 1: SSL c7e.ru, лендинг, README + +## Как запустить / проверить +- Клон: `git clone git@gitverse.ru:kpa39l/chronicle.nixg.ru.git /opt/chronicle.nixg.ru` +- Архиватор: `cd /opt/chronicle.nixg.ru/telegram-archiver && python run_archiver.py` (см. README.md) + +## Ключевые артефакты +- /opt/chronicle.nixg.ru/ROADMAP.md — дорожная карта +- /opt/chronicle.nixg.ru/telegram-archiver/ — MVP фазы 0 +- /opt/chronicle.nixg.ru/todo.md — текущие шаги + +## Открытые вопросы +- Стек редактора: Monaco (как в ROADMAP) или легче (CodeMirror / textarea+подсветка) — решение пользователя +- Языки подсветки: базовый список (Python, JS, Go, Rust, Bash, SQL) или расширить +- Хостинг модуля: статический компонент (JS/CSS) или npm-пакет \ No newline at end of file diff --git a/WALKTHROUGH.md b/WALKTHROUGH.md new file mode 100644 index 0000000..279d37d --- /dev/null +++ b/WALKTHROUGH.md @@ -0,0 +1,34 @@ +# Chronicle — Walkthrough (хронология) + +## 2026-09-18 — Сессия: клон репозитория + запись задач (редактор, кросспостинг) + +### Что сделано +1. Обнаружено: локального каталога проекта нет; репозиторий есть на gitverse `kpa39l/chronicle.nixg.ru` (ветка master). +2. Клонирован в `/opt/chronicle.nixg.ru`: + ``` + GIT_SSH_COMMAND="ssh -i /home/estorozhenko/.ssh/gitverse -o IdentitiesOnly=yes -o StrictHostKeyChecking=accept-new" \ + git clone git@gitverse.ru:kpa39l/chronicle.nixg.ru.git /opt/chronicle.nixg.ru + ``` + Важно: ключ gitverse — `/home/estorozhenko/.ssh/gitverse`, НЕ `.ssh_box` (см. git-forge-management, gitverse-ssh-and-repo-exists). +3. Изучены: ROADMAP.md (фазы 0–4), TODO_NEXT.md (телеграм-архиватор), todo.md, telegram-archiver/. +4. Записаны задачи пользователя: + - Markdown-редактор по аналогии с Dillinger/StackEdit — ОТДЕЛЬНЫЙ модуль (встраивается в VESTI и др.), основа блогоплатформы chronicle. Требования: блоки кода с кнопкой «Скопировать», toggle нумерации строк (копирование без номеров), подсветка по выбранному языку, инлайн-команды, живой предпросмотр + GFM. + - Уточнена Фаза 2 ROADMAP.md (задачи 2.1–2.5) этими требованиями. + - Добавлены пункты в todo.md (редактор + кросспостинг). + - Кросспостинг источников (Телеграм @dedinit, GtS @kpa39l@social.dedinit.ru, Hugo dedinit.ru, VK) — записан также в TODO.md вестей. +5. Созданы STATUS.md, PRD.md (по конвенции закрытия сессии). + +### Файлы/артефакты +- `ROADMAP.md` — Фаза 2 уточнена (2.1–2.5) +- `todo.md` — задачи пользователя +- `STATUS.md`, `PRD.md` — созданы + +### Питфолы/заметки +- Репозиторий chronicle — gitverse (не gitea), ветка по умолчанию `master` (не main). +- В репо нет STATUS/PRD/WALKTHROUGH до этой сессии — созданы. +- gitverse-ключ для пуша: `ssh -i /home/estorozhenko/.ssh/gitverse` (реальный home). + +### Следующие шаги +- Проектирование редактора (выбор стека — решение пользователя). +- Встраивание в VESTI (OpenSpec change). +- Кросспостинг — спроектировать change. \ No newline at end of file diff --git a/todo.md b/todo.md index fb41565..339d332 100644 --- a/todo.md +++ b/todo.md @@ -6,6 +6,13 @@ [ ] Создать простой лендинг на c7e.ru (один экран: что это, зачем, как начать) [ ] Завести репозиторий github.com/evgenystor/c7e На этой неделе: -Обновить задачу №13 в списке: -[ ] Настроить chronicle.nixg.ru → c7e.ru как точку сбора контента... -Написать README.md с ASCII-арт логотипом \ No newline at end of file +[ ] Обновить задачу №13 в списке: настроить chronicle.nixg.ru → c7e.ru как точку сбора контента +[ ] Написать README.md с ASCII-арт логотипом + +## Задачи пользователя (2026-09-18) +- [ ] **Markdown-редактор по аналогии с Dillinger/StackEdit** — ОТДЕЛЬНЫЙ модуль, встраиваемый в другие проекты (первый: VESTI нixg), основа блогоплатформы chronicle. + Требования: блоки кода с кнопкой «Скопировать»; toggle нумерации строк (копирование без номеров); + подсветка синтаксиса по выбранному языку; выделение инлайн-команд в тексте; живой предпросмотр + GFM. + → см. ROADMAP.md Фаза 2 (задачи 2.1–2.8). +- [ ] **Кросспостинг личных источников**: Телеграм (@dedinit) + GtS (@kpa39l@social.dedinit.ru) + блог dedinit.ru (Hugo) + VK.ru; + обмен данными между источниками, эпогей — новостные каналы VESTI. → TODO.md вестей (открыта). \ No newline at end of file