Repository navigation
Release v4.61.0
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.RootandTemplateMetadata.role/.primaryOutlet(C# + TS + shape contract). A screen template with the root role is an application shell like a layout: offered only at theApplicationscope, 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) andShellResolver.Resolve(C#,Cratis.Scene.Engine.Shell) returningEffectiveShell(reference, template, kind, source, package + version, pin evaluation, outlets, primary outlet, options, diagnostics). Order:profile.root-> legacyprofile.layout-> first installed blueprint default -> built-in Bare (singlecontentoutlet).- 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.jsonentries describe a shell'soutlets,primaryOutletandrole.- Docs:
blueprints/root-template.md(resolution order, root role, diagnostics table, catalog).
Changed
TemplateMetadatagainsroleandprimaryOutlet;ApplicableTemplatesdefault scopes treat a root screen template as application-scope.