SQLBI Whiteboard 1.3.1 (dev 3317)
Pre-release
Pre-release
Add KQL as a text container language, highlighted and formatted (#103) Closes #101. Kusto Query Language joins DAX and SQL Server: a text container can be KQL, the title-bar chip offers it, F6 formats it, and `.kql` files and `kql` / `kusto` fences import as KQL. ## Why this shape `SQLBI.Whiteboard.Kql` wraps `Microsoft.Azure.Kusto.Language` the way `SQLBI.Whiteboard.SqlServer` wraps ScriptDOM. Microsoft ships the parser, the classifier, and the formatter for their own language, so unlike DAX there is no grammar to write here and nothing to keep current by hand as KQL grows. The package is Apache-2.0, has no dependencies of its own, and targets netstandard2.0. Only the syntax is judged. A board carries a snippet rather than a connection, so the semantic pass reports every table and column it cannot resolve; all of those would be false alarms on a whiteboard, so acceptance and the F6 guard both read syntax diagnostics alone. ## The one place the library default was overridden Formatting keeps the author's spacing around the assignment sign. The library default writes `join kind = inner hint.strategy = broadcast`, which rewrites the hints that real queries carry; the examples on the issue are all written the tight way. Everything else is the library's own layout. As with DAX and SQL, formatting compares the tokens and the comments before and after and returns the text untouched when they differ, so F6 can never quietly change a query. ## Notes for review - The language is appended last everywhere, so a board or a settings file saved before this release keeps its Snippet format order and simply gains KQL at the end. There is a test for that. - A bare word is a valid KQL query, so KQL would claim `Agenda` if it were tried before Plain text. Plain text stays first by default and always accepts, so this only reaches someone who has reordered the list deliberately. - `SQLBI.Whiteboard.Kql.dll` is in the pipeline signing list. The installer harvests the publish folder, so it and `Kusto.Language.dll` need nothing there. - Verified in the running application, not only in tests: both containers of a `.wimport` imported as KQL, highlighted, and F6 reformatted a one-line query in place while keeping `T=7d` and `kind=inner` as written. `dotnet build Whiteboard.sln -c Release` is clean with no warnings, and the smoke tests pass. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5 <noreply@anthropic.com>