Skip to content

Release v2.2.0

Choose a tag to compare

@github-actions github-actions released this 15 Aug 05:51
b19ba63

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 named compact/regular/expanded classes rather than raw pixel breakpoints), and an ordered packages list a build resolves widget names against. A document may declare more than one profile; profile names must be unique.
  • Package declaration order within a packages block 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 screen never 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 PLAY0201PLAY0207 for malformed/duplicate ui profile declarations.

Notes

  • A ui profile round-trips through compile → print → recompile byte-identically.
  • Resolving a bare widget name used inside a screen against 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)