Skip to content

Release v4.216.0

Choose a tag to compare

@github-actions github-actions released this 03 Nov 18:38
9cbe5d2

Added

  • Screen forms can continue with the submitted command's typed response — scalar, concept or record values — in both generated applications and the live Stage host. (part of #175)
  • Render given-only Translate specifications from private events into keyed read-model assertions, including read models in separate view slices. (part of #14)
  • New applications can now select rendering configuration version 4, which renders running totals (add, subtract, increment, decrement) and clear in flat projections as model-bound read model attributes instead of a separate projection class. Version 3 applications keep their output unchanged. Moving an existing application from version 3 to 4 changes the observer identity of the newly eligible projections, so plan a rebuild or replay and remove the obsolete generated fluent projection files before using the new output; Stage does not migrate observer state or remove those files automatically. Older Stage versions refuse version 4. (part of #496)
  • $eventContext projection mappings (occurred, sequenceNumber, correlationId, eventSourceId) now render as Chronicle ToEventContextProperty in from, every and all blocks and in nested properties, when the target type is compatible. Before, they were refused or dropped with STAGE-DEGRADE-002. Other event-context paths still degrade. (#876)
  • Reaction specifications that expect command invocations (then invokes) now render as generated specifications that assert the recorded commands. (#907)
  • Rendered applications can require Microsoft Entra ID sign-in for every endpoint, configured with Cratis:Authentication settings and off by default. See the Entra ID sign-in guide. (part of #120)
  • Command fields that reference another entity can offer a searchable picker using an unambiguous modeled list query instead of requiring a raw identifier. (#744)
  • New application scaffolds preapprove recently published @Cratis packages in .yarnrc.yml. (#734)
  • Application chrome shows readable screen titles. (#736)
  • Actions and toolbar commands show humanized labels when the model gives none. (#737)
  • Command forms use the themed submit button labelled with the action, and toolbar commands keep their authored emphasis. (#738)
  • Tables show readable dates and booleans. (#739)
  • The ui profile root option showThemeSwitcher controls the theme switcher. (#740)

Changed

  • Rendering now admits Screenplay models at ESM semantic version 34; specifications that expect then invokes are still refused with STAGE-ESM-016 for the selected slices. (#905)
  • STAGE-ESM-017 names the from block, event and mapping it rejects. (#735)
  • Destination-less produced events report STAGE-ESM-053 rather than STAGE-ESM-006. (#629)
  • Rendered C# now carries XML documentation and no longer leaves unused usings in rendered specifications. (#497)
  • Generated specification projects now reference Cratis.Specifications and Cratis.Specifications.XUnit 5.1.0, and Stage's own specifications run on Cratis.Specifications 5.1.0. (#853)
  • Composite-key lookup refusals now identify the Stage issue and the Chronicle lookup dependency. (part of #839)
  • Creation actions no longer borrow unrelated selected-row identifiers, while explicitly modeled item bindings remain enforced. (part of #693)
  • Board toolbar forms use the selected card and wait for required item selection, with screen-local isolation. (#696)
  • Command dialog date pickers use the non-modal calendar configuration. (part of #717) (part of #718)
  • Clarified in the reaction rendering reference how redelivery and [OnceOnly] apply to reactions that both produce events and invoke commands. (part of #342)
  • CI starts the slower verification lanes right after the build instead of after the specs, so pull requests get feedback sooner, and the nightly failure alert now works. (#632)
  • Changes to files outside known areas now always run the full CI suite. (#632)

Fixed

  • Rendering no longer throws when a scene object carries a property named kind whose value is an object or a number, such as a command or response member named kind. (#908)
  • Classic-convention reducer files now import the application's Common namespace when their read model uses concepts or types, so reducer bodies can name those concepts. (#903)
  • Debug builds of Host no longer republish SpecRunner and BodyWorker when nothing in their sources changed. (#910)

Security

  • Generated applications with Entra sign-in pin the patched System.Security.Cryptography.Pkcs package. (#937)