From ca9e7cbcc0ee0e25e83e1aa6b3aaf786b9c5d64a Mon Sep 17 00:00:00 2001 From: Ivan Fontosh Date: Wed, 1 Jul 2026 15:56:46 +0800 Subject: [PATCH] docs: add ttrpgplayer.ru public domain map after migration Co-authored-by: Cursor --- AGENTS.md | 15 ++++++++++++++- WORKSPACE.md | 19 +++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 1cc1d6d..5858441 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -19,10 +19,22 @@ | **`../dnd_player`** | **Основной код** DNDGamePlayer (Electron + React + TypeScript + Vite, Pixi.js, Sharp, ffmpeg-static и др.). Сюда уходит большинство задач по UI, логике игры, IPC, пакетам проектов. | | **`../project-converter`** | Отдельное Electron-приложение: **миграция/конвертация** `.dnd.zip` (добавление превью сцен WebP и правки `project.json`). Не входит в артефакт сборки плеера. | | **`../DndGamePlayerLicenseServer`** | **HTTP-сервис лицензий** для плеера (ключ → подписанный токен Ed25519, админ-эндпоинты, статус для клиента). Node (без тяжёлых зависимостей в `package.json`). | +| **`../ttrpg-player-landing`** | **Маркетинговый лендинг** НРИ Плеер (React + Vite + TypeScript). Статический сайт, не входит в сборку плеера. | | **`cursorAi` (текущий репо)** | Документация воркспейса, **`AGENTS.md`**, **`WORKSPACE.md`**, единый **`.cursor/`** (правила, MCP-напоминания, пайплайн, агенты, хук verify). | Удалённые копии (Gitea, пример): `CursorAi`, `DndGamePlayer`, `GameConverter`, `DndGamePlayerLicenseServer` под пользователем **`ifontosh`** на **`git.mailib.ru`** — актуальные URL смотри в `git remote` каждого репозитория. +**Публичные домены продукта** (с июля 2026, git остаётся на `git.mailib.ru`): + +| Домен | Назначение | +|-------|------------| +| `https://ttrpgplayer.ru/` | Лендинг (`ttrpg-player-landing`) | +| `https://updates.ttrpgplayer.ru/` | Фид автообновлений Electron | +| `https://license.ttrpgplayer.ru/` | API лицензий (`DndGamePlayerLicenseServer`) | +| `https://api.ttrpgplayer.ru/` | Backend API (PM2 `mailib`, порт 3000) | + +Старые `license.mailib.ru` и `updates.mailib.ru` отключены; `mailib.ru`, `api.mailib.ru`, `git.mailib.ru` — без изменений. + --- ## Где по умолчанию править код @@ -30,6 +42,7 @@ - **Фичи, баги, UI, тесты плеера** → репозиторий **`dnd_player`**, команды из его корня: `npm run dev`, `npm run build`, `npm run lint`, `npm run typecheck`, `npm run test`. - **Конвертер проектов** → **`project-converter`**: `npm run dev` и т.д. (отдельного production `build` в `package.json` может не быть). - **Лицензии** → **`DndGamePlayerLicenseServer`**: `npm start`, переменные окружения см. README там и в клиенте. +- **Лендинг продукта** → **`ttrpg-player-landing`**: `npm run dev`, `npm run build`, `npm run lint`, `npm run typecheck`, `npm run test`. Хук Cursor **`stop`** (`.cursor/hooks/final-verify.cjs`) после четырёх этапов в **`pipeline-state.json`** гоняет **lint / typecheck / test** в каталоге **`dnd_player`** (поиск корня: `DND_PLAYER_ROOT` или соседний `../dnd_player`). @@ -57,6 +70,6 @@ ## Итог для новой сессии 1. Прочитай **`AGENTS.md`** (этот файл) и при необходимости **`WORKSPACE.md`**. -2. Определи, в каком из репозиториев живёт задача (**`dnd_player`**, **`project-converter`**, **`DndGamePlayerLicenseServer`**, **`cursorAi`**). +2. Определи, в каком из репозиториев живёт задача (**`dnd_player`**, **`project-converter`**, **`DndGamePlayerLicenseServer`**, **`ttrpg-player-landing`**, **`cursorAi`**). 3. Для кода приложений: полный пайплайн и хук **`stop`**; в **`pipeline-state.json`** выставь **`verify_repo`** на целевой репо (**`none`** — только правки в **`cursorAi`**, тогда хук не гоняет `npm` в других репо). Для **`dnd_player`** — также **lint, typecheck, test**; планируется i18n **ru**/**en** (отдельная задача). 4. Соблюдай **минимальный diff** и существующие паттерны репозитория. diff --git a/WORKSPACE.md b/WORKSPACE.md index 26a7e45..943d7e6 100644 --- a/WORKSPACE.md +++ b/WORKSPACE.md @@ -16,18 +16,33 @@ | **`../dnd_player`** | DNDGamePlayer | Electron: редактор и проигрыватель игр (React, Pixi.js, `.dnd.zip`, лицензирование). **Основной** код и полный CI-набор: `lint`, `typecheck`, `test`, `build`. | | **`../project-converter`** | dnd-project-converter | Утилита: конвертация `.dnd.zip`, добавление превью сцен (WebP). Свой `package.json`, отдельный Electron-пакет. | | **`../DndGamePlayerLicenseServer`** | dndgameplayer-license-server | HTTP-сервис лицензий (Ed25519, активация, отзыв). Node ≥20, без npm-зависимостей в манифесте. | +| **`../ttrpg-player-landing`** | ttrpg-player-landing | Статический маркетинговый лендинг **НРИ Плеер** (React + Vite + TypeScript). Не входит в сборку плеера. | Связь клиента и сервера лицензий описана в README сервера и в коде плеера (`bundledPublicKey` и переменные окружения). --- +## Публичные домены (продакшен) + +| Сервис | Домен | Репозиторий / путь на VPS | +|--------|-------|---------------------------| +| Лендинг | `https://ttrpgplayer.ru/` | `ttrpg-player-landing` → `/var/www/ttrpgplayer_ru/www` | +| Автообновления | `https://updates.ttrpgplayer.ru/` | артефакты в `/var/www/updates_mailib_ru` | +| Лицензии | `https://license.ttrpgplayer.ru/` | `DndGamePlayerLicenseServer` → `/var/www/license_mailib_ru` (PM2 `dnd-license`, порт 3847) | +| API | `https://api.ttrpgplayer.ru/` | PM2 `mailib`, порт 3000 | + +Git: **`git.mailib.ru`** — без изменений. + +--- + ## Сборка и проверки - **`dnd_player`**: из каталога репозитория — `npm install`, `npm run dev`, `npm run build`, `npm run lint`, `npm run typecheck`, `npm run test`. - **`project-converter`**: отдельного `build` нет; `npm install`, `npm run dev`. Синтаксис: `node --check` по файлам в `src/`. **`npm run test`** — обязателен после появления скрипта `test` (**вариант A**, см. **`project.mdc`**). - **`DndGamePlayerLicenseServer`**: `npm start` (или `node src/server.mjs`); `node --check` для `src/` и `lib/`. **`npm run test`** — обязателен после появления скрипта `test` (**вариант A**). +- **`ttrpg-player-landing`**: `npm install`, `npm run dev`, `npm run build`, `npm run lint`, `npm run typecheck`, `npm run test`. -Хук **`stop`** (`.cursor/hooks/final-verify.cjs`): читает **`.cursor/pipeline-state.json`**. Если **`verify_repo`** = **`none`** (правки только в **`cursorAi`**), хук **сразу** завершается успехом. Иначе при четырёх **`done`** пайплайна запускает проверки **целевого** репо: **`dnd_player`** — `lint` / `typecheck` / `test`; **`project-converter`** — `npm run lint`, `node --check` по `src/`, обязательный **`npm run test`** (скрипт `test` должен быть в `package.json`); **`DndGamePlayerLicenseServer`** — `node --check` по `src/` и `lib/`, обязательный **`npm run test`**. Переопределение репо для хука: **`VERIFY_REPO`**; корень соседних репозиториев: **`DND_PROJECT_ROOT`**; для плеера: **`DND_PLAYER_ROOT`**. +Хук **`stop`** (`.cursor/hooks/final-verify.cjs`): читает **`.cursor/pipeline-state.json`**. Если **`verify_repo`** = **`none`** (правки только в **`cursorAi`**), хук **сразу** завершается успехом. Иначе при четырёх **`done`** пайплайна запускает проверки **целевого** репо: **`dnd_player`** / **`ttrpg-player-landing`** — `lint` / `typecheck` / `test`; **`project-converter`** — `npm run lint`, `node --check` по `src/`, обязательный **`npm run test`**; **`DndGamePlayerLicenseServer`** — `node --check` по `src/` и `lib/`, обязательный **`npm run test`**. Переопределение репо для хука: **`VERIFY_REPO`**; корень соседних репозиториев: **`DND_PROJECT_ROOT`**; для плеера: **`DND_PLAYER_ROOT`**. --- @@ -38,7 +53,7 @@ - Под-агенты: **`.cursor/agents/`** (`frontend-developer`, `ui-test-developer`, `code-reviewer`, `ui-tester`). - PR-чеклисты: **`.cursor/pr-checklists/`** (пути к файлам в чеклистах заданы относительно репозитория **`dnd_player/`**). -Для **`project-converter`** и **`DndGamePlayerLicenseServer`** действуют те же требования пайплайна и гейтов, что и для **`dnd_player`** (см. **`project.mdc`**, **`agents-pipeline-order.mdc`**). **Политика тестов — вариант A:** любое изменение поведения в **том же PR** добавляет/обновляет **`npm test`** и сами тесты; откладывать на отдельный эпик нельзя. Запуск проверок из **`dnd_player`** при задаче только в другом репо **не заменяет** verify целевого репозитория. +Для **`project-converter`** и **`DndGamePlayerLicenseServer`** действуют те же требования пайплайна и гейтов, что и для **`dnd_player`** (см. **`project.mdc`**, **`agents-pipeline-order.mdc`**). **`ttrpg-player-landing`** — полный набор `lint` / `typecheck` / `test` как у плеера. **Политика тестов — вариант A:** любое изменение поведения в **том же PR** добавляет/обновляет **`npm test`** и сами тесты; откладывать на отдельный эпик нельзя. Запуск проверок из **`dnd_player`** при задаче только в другом репо **не заменяет** verify целевого репозитория. ---