Skip to content

Release v4.61.0

Choose a tag to compare

@github-actions github-actions released this 16 Oct 11:25
8418107

Part of #159 (epic #157). Engine half: the one shell resolver, the root template role, and the engine-owned diagnostics. The preview-host / composeApplicationScreen switch to this function follows once the SC4 PR (#165, same file) has merged; #159 stays open until then.

Added

  • TemplateRole.Root and TemplateMetadata.role / .primaryOutlet (C# + TS + shape contract). A screen template with the root role is an application shell like a layout: offered only at the Application scope, never fits a slot, never a dialog template. ApplicableTemplates(Application) returns layouts and root screen templates; the template-applicability corpus has 6 new vectors and a root screen template in the library.
  • resolveEffectiveShell (TS, @cratis/scene.engine) and ShellResolver.Resolve (C#, Cratis.Scene.Engine.Shell) returning EffectiveShell (reference, template, kind, source, package + version, pin evaluation, outlets, primary outlet, options, diagnostics). Order: profile.root -> legacy profile.layout -> first installed blueprint default -> built-in Bare (single content outlet).
  • Diagnostics rootTemplateUnknown, rootTemplateVersionNotSatisfied, rootTemplateNotApplicable, rootTemplateMissingContentSlot, rootTemplateCycle, rootTemplateBlueprintNotInstalled, profileThemeIncompatible, profilePackageMissing, profileSlotUnplaced, each with a fixture vector and a message with real names.
  • Shared corpus effective-shell-fixtures.json (own, blueprint, pinned, drifted, unknown, legacy, none; 31 cases) asserted byte-for-byte by C# (for_ShellResolver) and TS (for_resolveEffectiveShell).
  • blueprintCatalog.json entries describe a shell's outlets, primaryOutlet and role.
  • Docs: blueprints/root-template.md (resolution order, root role, diagnostics table, catalog).

Changed

  • TemplateMetadata gains role and primaryOutlet; ApplicableTemplates default scopes treat a root screen template as application-scope.