Skip to content

Release v4.63.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 12:34
72cb18c

Implements #162 (epic #157).

Added

  • migrateLegacyProfile(legacy, library) (TypeScript, @cratis/scene.engine) and ProfileMigrator.Migrate(legacy, library) (C#, Cratis.Scene.Engine.Profiles): one pure function that turns a legacy profile - the blueprint (shell) and layout name plus the Studio-only navigationMode, colorScheme, accent and defaultScreenTemplate - into the new shape: root (blueprint reference pinned to ^major.minor, or own reference), root.options.navigationMode, appearance, defaults.newScreenTemplate.
  • Idempotent: a migrated profile comes back unchanged (changed: false) with or without the legacy fields; a value already in the new shape wins. Once a root exists the legacy layout is dropped (readers accept both shapes, writers emit the new one).
  • Six engine-owned diagnostics for what cannot be mapped, with real names: legacyLayoutUnknown, legacyShellNotInstalled, legacyShellHasNoLayout, legacyColorSchemeUnknown, legacyNavigationModeWithoutRoot, legacyDefaultScreenTemplateUnknown.
  • Shared corpus profile-migration-fixtures.json (29 permutations incl. idempotence) asserted by for_ProfileMigrator (C#) and for_migrateLegacyProfile (TS) with identical profiles (canonical JSON) and identical diagnostics.
  • Docs: "Migrating a legacy profile" and the compatibility rules in blueprints/root-template.md.