|
feat(game): визуальный редактор графов диалогов
- tools/dialogue-editor/server.mjs — node http без зависимостей: статика, GET /api/graphs, GET/PUT /api/graph/<id> (mtime-гард 409, атомарная запись .tmp->rename, формат 4 пробела + \n), POST /api/dry-run, GET /api/registries - валидация и dry-run — спавн vite-node tools/dialogues/probe.ts (stdin -> JSON), реестры — tools/dialogues/registries.ts: правила одни (dialogueRules.ts) для валидатора, CLI и редактора, дублирования нет - UI (index.html/editor.js/editor.css, без CDN): список графов, SVG-канва с карточками и рёбрами (next — сплошные, choices — пунктир, сироты — красный пунктир), инспектор узла (текст/speaker/mood/tags/условия/ setFlags/setVars/do[]/выборы), dry-run в панели - npm run dialogues (порт 5199) - проверено в Chromium: канва и инспектор, dry-run, правка + сохранение (422 на битом флаге, 409 на старом mtime, 200 при записи) - доки: ui-and-dialogue.md, practices.md, llms.txt, CLAUDE.md Co-Authored-By: Claude Code <noreply@anthropic.com> |
|---|
|
|
| CLAUDE.md |
|---|
| apps/game/tools/dialogue-editor/editor.css 0 → 100644 |
|---|
| apps/game/tools/dialogue-editor/editor.js 0 → 100644 |
|---|
| apps/game/tools/dialogue-editor/index.html 0 → 100644 |
|---|
| apps/game/tools/dialogue-editor/server.mjs 0 → 100644 |
|---|
| apps/game/tools/dialogues/probe.ts 0 → 100644 |
|---|
| apps/game/tools/dialogues/registries.ts 0 → 100644 |
|---|
| docs/engine/practices.md |
|---|
| docs/engine/ui-and-dialogue.md |
|---|
| docs/llms.txt |
|---|
| package.json |
|---|