Release v2.2.0
Added
- A top-level
ui profile <Name>block declares a named target: the platform(s) it runs on (target platform), its default size class (target size, using namedcompact/regular/expandedclasses rather than raw pixel breakpoints), and an orderedpackageslist a build resolves widget names against. A document may declare more than one profile; profile names must be unique. - Package declaration order within a
packagesblock is override priority — a later package shadows an earlier one on a name collision.core, the built-in vocabulary, is always the final fallback. - A
screennever declares which profile it targets — profile selection stays a build/Stage concern, so the same screen resolves against different package chains per build. - New diagnostic codes
PLAY0201–PLAY0207for malformed/duplicateui profiledeclarations.
Notes
- A
ui profileround-trips through compile → print → recompile byte-identically. - Resolving a bare widget name used inside a
screenagainst a profile's active packages (the "ambiguous name → named-candidates warning" behavior described in the issue) is a build-time concern owned by Stage and the package resolution engine (Cratis/Scene#3) — the Screenplay compiler has no visibility into what widgets an external package like PrimeReact defines, so it cannot check that itself. What this PR validates at compile time is the profile declaration's own shape: duplicate profile names and duplicate packages within one profile are both compile errors.
(#94)