feat: add mod editing, revision merges and secure game storage
Add immutable revisions, PGVN editor, asset replacement, merge and rebase workflows, authenticated media delivery and reachability GC. Harden the script interpreter, pin unrpyc and remove tracked build metadata. Include current compatibility checks, Naninovel import and regression tests.
This commit is contained in:
1 parent
06ff19ac4a
commit
c8d83b3fe7
65 files changed
+3825
-68
No files matched your search
+10
-6
@@ -12,7 +12,7 @@ Proxmox host ── Caddy (TLS, домен) ──► http://<IP VM>:8080
|
||||
│
|
||||
VM: docker compose│
|
||||
┌─────────────────────────────────────┴───────────┐
|
||||
│ web (nginx) : SPA, /api → backend, /blobs → том │
|
||||
│ web (nginx) : SPA, API → backend, media internal │
|
||||
│ backend : FastAPI (uvicorn) │
|
||||
│ worker : конвертер, тот же образ │
|
||||
│ db : PostgreSQL 16 │
|
||||
@@ -56,8 +56,9 @@ LOCKED`), Redis не нужен.
|
||||
|
||||
### Хранилище блобов
|
||||
|
||||
`data/blobs/ab/cd/<sha256>` — неизменяемые файлы, отдаются nginx с
|
||||
`Cache-Control: immutable`. Манифест версии:
|
||||
`data/blobs/ab/cd/<sha256>` — неизменяемые файлы. Доступ проверяет backend,
|
||||
затем nginx отдаёт файл через закрытый internal location с `private, no-cache`.
|
||||
Манифест версии:
|
||||
|
||||
```json
|
||||
{ "files": { "game.json": {"hash": "…", "size": 1234},
|
||||
@@ -103,7 +104,9 @@ LOCKED`), Redis не нужен.
|
||||
Скрипт-модуль (`script/*.json`) — упорядоченный список меток, у каждой тело
|
||||
из узлов-операторов. Структура остаётся деревом (близко к исходнику, удобно
|
||||
редактировать), состояние плеера — стек `{label, path}` где `path` — индексы
|
||||
внутри вложенных блоков, так что сохранения стабильны и компактны.
|
||||
внутри вложенных блоков. Новые сохранения дополнительно содержат ревизию и ID
|
||||
узлов для проверки позиции при изменении скрипта; совместимость переменных
|
||||
после изменения игровой логики требует отдельной проверки.
|
||||
|
||||
У каждого узла есть постоянный `id`, у реплик — ещё `tid` для перевода.
|
||||
Переводы лежат отдельно, в `locales/<язык>/…` (см. [LOCALIZATION.md](LOCALIZATION.md)).
|
||||
@@ -130,7 +133,8 @@ LOCKED`), Redis не нужен.
|
||||
|
||||
## Дорожная карта
|
||||
|
||||
* Веб-редактор форка: правка скриптов и замена ассетов (манифест уже готов).
|
||||
* Реализованы редактор PGVN-форка, замена ассетов, ревизии, трёхстороннее слияние
|
||||
и перенос на новый оригинал — см. [MODDING.md](MODDING.md).
|
||||
* Поддержка screens/ATL-трансформаций в IR.
|
||||
* Другие движки (TyranoBuilder, RPG Maker MV) через тот же IR.
|
||||
* Сборщик мусора блобов по расписанию.
|
||||
* Сборщик мусора доступен как `python -m app.gc`, включая периодический режим.
|
||||
Reference in new issue
Block a user