2026.09.49 — 2026-09-27
Added
Grid columns fit their content and can be resized (44ab5f3f)
Data grids no longer cut the values an operator came to read. When rows first render, each column sizes to its widest value or header (up to 480 px), never below its declared width, and spare width is still shared. MULTICAST in the queues' Type column, long queue and address names, and a flow's status reason now show in full.
Every column can be resized: drag its header's border, double-click the border to fit the column to its content, or press Ctrl+Shift+Left/Right on a focused header cell (the new width is announced, and the grid stays one tab stop). Widths are remembered per viewer in this browser for every built-in grid. Plugins get the same behaviour through the SDK's VirtualTable and remember widths by passing a storageKey.
Decided in ADR-0116. web/scripts/verify-grid.ts checks it in a real browser.
The code editor highlights YAML and JSON properly, folds and searches (e4e31bab)
The SDK's CodeEditor now colours a document's keys, values, numbers, comments, anchors and tags distinctly and dims its punctuation, from two new tokens (--as-code-property, --as-code-meta) measured at 4.5:1 or more in both colour schemes. Before, keys and plain values rendered as body text.
It also folds blocks, matches and closes brackets, indents on input, highlights the active line and the selection's other matches, and searches with Ctrl+F. Tab indents; Escape then Tab leaves the editor, and a hint under the editor says so. New optional props: maxHeight (the editor scrolls inside itself past it) and lineWrapping. Long lines scroll inside the editor instead of spilling out of a narrow container such as a drawer.
The SQL console shares the highlight style and now dims its punctuation too. @codemirror/search, already installed with CodeMirror, is now declared.
Plugins can read the Studio version and a cluster's name (1d1367ce)
A new @PluginApi bean, StudioInfo, tells a plugin which Studio it runs on: version() is the running release (empty for a development build), and clusterName(clusterId) is a cluster's display name when the current caller holds cluster:read on it, answering exactly as for an unknown id otherwise. A plugin can now head a file it exports with where it came from. The plugin guide's new "Studio facts and shared UI" section describes it. The addition keeps Contract.VERSION at 3.