Skip to content

Release v4.179.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 07:47
4951c73

Added

  • Toolbar buttons that invoke State Change slices. A screen toolbar accepts button <id> title "<text>" [slice <Module>.<Feature>.<Slice>] [emphasis primary|secondary|quiet] [icon <name>] beside its item entries - the Screenplay form of Scene's ToolbarButton. The slice names the command and the dialog that opens over the page, so the button needs no command of its own. slice is a dotted path or any unambiguous suffix; the title is a quoted string or a $strings.<key> token. See Toolbar buttons.
  • Diagnostics PLAY0760-PLAY0765: a malformed button line, a slice the document does not declare, a slice that is not a State Change slice (a button invokes State Change slices only), a button without a slice (warning), an ambiguous slice reference, and a duplicate id. They mirror Scene's toolbarButtonSliceNotFound, toolbarButtonSliceNotStateChange and toolbarButtonSliceEmpty.
  • The syntax tree carries ToolbarButtonSyntax on ScreenToolbarSyntax.Buttons; it is omitted from the JSON when empty, so existing documents keep their bytes. The printer round-trips every button, and the TypeScript compiler reads buttons into the same tree with a shared conformance vector (toolbar-buttons).
  • Monaco and VS Code highlight, document and complete buttons; the Invoicing sample uses them.

Changed

  • Renaming or moving a slice, feature or module that a toolbar button names is refused with an explicit message instead of leaving the button's slice stale.