Repository navigation
0.6.2
·
70 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Added
- The loader marks an element
data-fui-ready(script::READY) once every
module itsdata-fuinames has enhanced it, so a console's journey can
wait for a component whose module changes nothing it can see before it
drives it by the keyboard;html[data-fui-script]is written before any
module arrives (#523). - The
keysmodule binds every key a control announces in
aria-keyshortcuts, from 40 rem up: a chord such as Ctrl Enter
(view::transform::Run::shortcut) or Ctrl S (view::dock::Decision::shortcut)
presses its control from inside a field too, the one in the focused
field's form first, and a single key such aslor]presses its
control, or focuses a field such as the dock's reason
(view::dock::DockField::shortcut), outside a field alone. The dock's
and Run's keys load it themselves, and so does the shortcut legend; a
console's own control writesdata-fui="keys"(view::shortcuts::KEYS_JOB)
on a page with no legend (#526). view::shortcuts::shortcut_legend_with_go_tolists a console's go-to
pairs (GoTowith its first key and eachGoToPairof a letter and a
link of the navigation) in their own group, each as the link thekeys
module follows on the pair's keys;GoTo::groupgives them as a
ShortcutGroupfor a console's own shortcuts page (#526).view::preferences::typed_preferencedraws a console's own typed
preference, a text or a number field (Typed::Textwith its length
bounds,Typed::Numberwith itsmin,maxandstep) with its
placeholder, in the same plain form asselect_preference: its Save
button posts it with no script, and once thepreferencemodule runs it
posts when the field changes and the row just saved gives the field the
focus back. The module sends one post when Enter both changes and
submits a field (#527).view::side_panel::side_panel_with_shortcutdraws a side panel whose
opener announces its keys, such aso: in a work-list row thekeys
module opens the focused row's panel on that key, and the browser
returns the focus to the row when the panel closes (#530).- A form that answers on its page can answer in place: mark it with
view::answer::Answer::new(region)and theanswermodule posts it with
fetchto its own action and moves the answer region of the page that
route draws into the same region here, the focus kept and the answer
announced by the region's polite live region.with_settle(ms)also
posts once a field rests from typing, for a check on the server as you
type, and an answer to an older request is dropped. With the modules
refused, or on an answer that is no HTML page holding the region, the
form posts and the whole page answers as before. It is the thirdfetch
wire, indocs/consoles.md§ Answered in place (#546).
Changed
- The script modules take a phrase's words, a number's digit groups and a
new element from one module,shared.js, and the JSON and XML
highlighting after an edit moves fromhighlight.jsto its own module,
rehighlight.js. A console that serves the modules from
script::MODULESserves both with no change (#541). - The script budget measures what a reader pays: 16 KiB a module as
before, 144 KiB for the modules any one page loads (the loader, the
page's jobs and their imports), and 72 KiB for every module compressed,
in place of 160 KiB for every module raw. The caps, their measurements
on the gallery's pages and their reasons are in
.claude/rules/console-ui.md§12 (#547).
Fixed
- A long identifier in a
<code>of a stacked table cell wraps inside the
cell at 320 px, so the page no longer scrolls sideways (WCAG 2.2 SC
1.4.10). A stacked cell's value is held to its column, where before it
took the code's whole length (#525). - A select in a dense options row keeps to its field below 40 rem, its
chosen value ending in an ellipsis, so a select whose longest option is
wider than the phone no longer scrolls the page sideways at 320 px (WCAG
2.2 SC 1.4.10) (#528). - A link in a stacked table's group row wraps inside the row below 40 rem,
so a name longer than the card no longer scrolls the page sideways at
320 px (WCAG 2.2 SC 1.4.10) (#529). - The code editor highlights a JSON or XML document again only from the
first line a key changes, up to the line where the highlighting is the
same as before, where before it highlighted the whole text on every key.
The stylesheet's rules for a focused work-list row and for a field row
with a help line select the same elements as before, written so Chrome
no longer restyles the editor's whole layer on every key. A key typed
into a 20 kB JSON or XML document now costs 1 to 2 ms at the median,
script, style and layout together, where it cost 5 to 8 ms, so typing an
openEHR composition into the editor no longer slows with its length (#531). - A work-list row keeps its actions, a glance opener beside the row menu,
on its one line, where since a row's own key (#530) the menu's…
wrapped under the opener and every row stood twice as tall. In the row
a glance opener with a glyph shows the glyph alone, its words kept as
its accessible name, so the record names keep their line with wider
fonts too. The side panel's opener writes its words in
span.fui-side-panel-words. A side panel opened from a table cell
starts and wraps its text, where it took the cell's end alignment (#540). - On a phone, a stacked work-list row whose actions hold a glance opener
keeps them in the first line's flow, where the opener drew over the
second record's name (#540). - A key that changes a line of the code editor updates that line's
element in place, so the browser no longer counts every line number
again, and the caret's line and column are read without walking the
text before the caret. A key typed at the end of a 20 kB XML document
costs the same as one in a short document, and in a 20 kB JSON document
in the operations page it costs about 1.8 ms, where it cost 2.6 to 3.8 ms
on the same machine (#541). - The stylesheet no longer looks for a decision bar, a toast, a work-list
foot or an open menu sheet anywhere in the page with:has(), which made
Chrome weigh the whole page again on every key typed into the code
editor. Each rule now looks only where the shell draws what it looks
for: the decision bar as the last part of the main area or of its
column, the work-list's card in the column at most two levels down, the
toast region beside the body, the menu sheets in the top bar and in a
transform pane's head, and the editor as a transform pane's own child.
A code editor with an error mark carriesis-invalid, which draws its
red edge. A key typed at the end of a 20 kB XML document costs 0.2 ms at
the median where it cost 0.7 to 1.4 ms, and in a 20 kB JSON document 0.5
to 0.6 ms where it cost 0.9 to 1.0 ms, on the same machine (#544). - The script modules answer as the library's Rust does where both decide:
they trim white space as Rust'sstr::trimdoes (a typed date, the
editor's grammar and empty state, the typeahead's words, a menu's typed
letter, the filter), a date picker at the calendar's first or last month
keeps its weeks to the calendar's days, the session watch reads a count
between tabs as au32, and the upload field compares a file's extension
in ASCII case alone. A parity test now feeds each rule written in both
languages the same inputs and fails on any difference;docs/consoles.md
lists every pair (#548).
Support period
Only the newest release is supported: there are no maintenance branches, no long-term-support line and no backports, and upgrading is free. Under the Cyber Resilience Act, Cadasto B.V. commits to keep publishing security fixes for at least five years after each release (Art 13(8)) and ships them only in the newest release (Art 13(10)). For this release that commitment runs until the end of October 2031 (Regulation (EU) 2024/2847 Art 13(19)); see SECURITY.md.