Release v4.12.1
Summary
Two related but independent problems with .play tooling: the Monaco invoicing sample had drifted from the current grammar, and the VS Code/Monaco language service was reporting real policy, event, and type names as "unknown" because of a bug in its own scanner — not the compiler.
Fixed
- The invoicing sample declared
layout MasterDetail/layout DashboardLayoutnested inside the module and referenced them from screens aslayout X. The current grammar declares the application shell as a top-levellayout(with anarrangement), selected from aui profile, while a module declaresscreen template/dialog templateand a screen fills one withtemplate X. The sample now matches the shape already used and compiler-verified infor_ScreenplayCompiler/invoicing.play. - The editor's symbol scanner (
screenplay-language/symbols.ts) matched any two-token indented line as a typed property, without excluding reserved directive keywords.authorize <Policy>,produces <Event>,tag <Name>,validate csharp, and eachconcurrencydimension (sourceType/streamType/streamId <Value>) were all misread as properties and flagged "Unknown type" whenever the second token wasn't coincidentally a declared concept or type — 16 false warnings on the invoicing sample alone. Directive lines are now excluded from property matching, honoring the existing@nameescape for the rare property genuinely named after a reserved word.
🤖 Generated with Claude Code