Project version check + migration API (Unity-style)
See ADR-0012 for the full technical decisions.
Why
project.json's turian_version is currently round-tripped but never checked. Breaking changes to on-disk project data (scene JSON shape, component ABI, cooked-asset formats) have so far been handled ad hoc — #45 (closed)'s material_guid → material_guids rename needed a deprecated-field-plus-warning fallback and a one-off CLI command, invented on the spot, with no discoverable home for the next breaking change.
Scope
- Compare
project.json'sturian_versionagainst the running engine's version on project open (major always, minor via a Settings toggle, default on). - Studio dialog on open: project older → Cancel / Update / Migrate-and-Update (pre-flight lists every pending migration + any manual steps); project newer → Cancel / warned Open Anyway.
- CLI equivalent:
turian-cli migrate <project-path> [--yes|--no] [--dry-run], unattended-capable for CI. editor/project/migrations/: one file per version bump, hand-maintained discovery list (no comptime reflection),idempotent: booladvisory metadata.- Fold the existing scene
material_guidfixup (turian-cli migrate, shipped ahead of this issue) in as the framework's first migration entry.
Suggested phasing
- Migration runner + registry + CLI (
migratecommand, flags, dry-run). - Studio version-check dialog on project open.
Not scoped here: migrating projects from other engines (Unity/Unreal/etc.) — this is Turian-project-to-newer-Turian-version only.