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:
mrleo1nid committed 2026-10-25 04:42:48 +03:00
1 parent 06ff19ac4a
commit c8d83b3fe7
65 files changed
+3825 -68

No files matched your search

+24
View File
@@ -0,0 +1,24 @@
"""Capture every manifest change, including translation/import writers."""
import copy
from uuid import uuid4
from sqlalchemy import event, inspect
from sqlalchemy.orm import Session
from app.models import GameVersion, Revision
@event.listens_for(Session, "before_flush")
def capture_revisions(session, flush_context, instances):
for obj in list(session.new) + list(session.dirty):
if not isinstance(obj, GameVersion) or not obj.manifest or obj in session.deleted:
continue
if obj not in session.new and not inspect(obj).attrs.manifest.history.has_changes():
continue
parents = list(getattr(obj, "_revision_parents", None) or
([obj.revision_id] if obj.revision_id else []))
rid = str(uuid4())
session.add(Revision(id=rid, game_id=obj.game_id, user_id=session.info.get("user_id", obj.owner_id),
parents=parents, manifest=copy.deepcopy(obj.manifest)))
obj.revision_id = rid
obj._revision_parents = None