Skip to content

Release v4.178.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 07:22
830a20d

Added

  • Navigation regions in the language. A layout declares the application's navigation topbar and navigation sidebar with an optional logo image "<path>" title "<text>" and item <id> title "<text>" [icon <name>] [target <Module>[.<Feature>]] [slot <name>] lines; sidebar items nest sub-items. A module declares only what it changes: navigation sidebar extends, navigation topbar overrides, or inherits (the default when absent). The blocks are the Screenplay form of Scene's NavigationModel; contribute to Navigation stays valid and independent. See the new Navigation regions page.
  • Diagnostics PLAY0740-PLAY0752 for malformed blocks and items, duplicate regions, application-only logos, modes where they are not allowed, topbar sub-items, and the findings that mirror Scene's navDuplicateId, navTargetMissing, navSlotUnknown, navTargetOutOfScope and navModuleWithoutFeatures, plus a warning for an override without items.
  • The syntax tree carries NavigationRegionSyntax, NavigationItemSyntax, NavigationTargetSyntax and NavigationLogoSyntax on LayoutSyntax.Navigation and ModuleSyntax.Navigation. They are omitted from the JSON when empty, so existing documents keep their bytes. The printer round-trips every item, id, icon, slot, target and mode; the executable model reports the blocks as deferred (PLAY0269).
  • Monaco and VS Code highlight, document and complete the new words and blocks; the Invoicing sample uses them.

Changed

  • Renaming or moving a module or feature that a navigation item targets is refused with an explicit message instead of leaving the target stale. The TypeScript compiler recognizes module navigation blocks and skips them, as it skips layouts, so the reference checks are C# only.