Skip to content

feat: share a custom system as a .citysys file, and delete as a hide … - #117

Merged
over2take merged 1 commit into
feature/system-builderfrom
sb/2h-export-import
Sep 30, 2026
Merged

over2take merged 1 commit into
feature/system-builderfrom
sb/2h-export-import

Conversation

@over2take

Copy link
Copy Markdown
Owner

…that a reinstall undoes

A published system exports as one readable JSON file with a cover: name, author, version, the CITY_NET version it came from, license, and its origin, who the system is across servers. A file is read on the server as untrusted input: capped in size, checked like the editor's own work, text kept as text, and it never carries characters or sheets.

Installing is a preview that changes nothing, then new, update or keep both. An update only replaces a copy nobody has changed here, and never a system made here; keep both gives the copy its own id and origin, so the two never collide. Never a merge. A file with problems installs as a draft to fix, never as something a game can run.

Deleting now hides a system instead of removing it: it leaves every list and cannot be run, and reinstalling its file brings it back under its old id, with every character, bank and token health played in it. The preview warns when that would replace changes made here.

New custom_systems columns (origin, source_hash, deleted_at) are added on start; a system made before them is its own origin. Checked on a copy of a real database: nothing else changes.

Summary

Test plan

  • Tested locally
  • Tests pass

Pre-merge checklist

Code quality:

  • Code follows project style
  • No breaking changes (or clearly documented)
  • No console errors or warnings

Version & Release:

  • Version bumped? If releasing to users, update:
    • frontend/package.json version
    • docker-compose.yml APP_VERSION
    • CHANGELOG.md with release notes
  • GitHub Actions will auto-tag Docker images with the new version

Before merging to main:

  • All tests passing
  • PR reviewed and approved
  • Branch is up to date with main
  • No merge conflicts

Related issues

…that a reinstall undoes

A published system exports as one readable JSON file with a cover: name, author, version, the
CITY_NET version it came from, license, and its origin, who the system is across servers. A
file is read on the server as untrusted input: capped in size, checked like the editor's own
work, text kept as text, and it never carries characters or sheets.

Installing is a preview that changes nothing, then new, update or keep both. An update only
replaces a copy nobody has changed here, and never a system made here; keep both gives the
copy its own id and origin, so the two never collide. Never a merge. A file with problems
installs as a draft to fix, never as something a game can run.

Deleting now hides a system instead of removing it: it leaves every list and cannot be run,
and reinstalling its file brings it back under its old id, with every character, bank and
token health played in it. The preview warns when that would replace changes made here.

New custom_systems columns (origin, source_hash, deleted_at) are added on start; a system
made before them is its own origin. Checked on a copy of a real database: nothing else
changes.
@over2take
over2take merged commit ba447c1 into feature/system-builder Sep 30, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant