Repository navigation
v5.9.0
An app's frame — layers, shortcuts, gestures, long lists, workers, frames —
and the compiler as a library an editor, a visual builder or an agent
builds on, each piece also a wf command.
Additions
- Layers (chapter 9).
Popover, aMenuat
its button, at an anchor or at a point (at:, for a context menu), with
submenus, andTooltip, drawn in the browser's top layer, so nothing
clips or covers them. Each flips and slides to stay on screen; Escape
closes the top one, a press outside closes what it is outside of, and
focus goes back where it was. - Shortcuts for an app (chapter 9).
modis ⌘
on Apple's systems and Ctrl elsewhere; chords ("mod+k mod+s");
keyIs(e, …)andkeyLabel(…)for a table of commands that drives
menus and a palette; a page, a component orapphearskeydownand the
window's events itself;trapFocuskeeps focus inside a panel. - Gestures (chapter 9).
drag:and
on receive(d)with a ghost, edge scroll and Escape;on longpress,
on swipe; andSplitterbetween two regions, with its size kept. VirtualList(chapter 37): a
long list drawn a window at a time, rows measured or of a fixed height,
reveal:to scroll one into view, andV12for a long list that is
not windowed.worker(chapter 18): a Web Worker held
like a connection, asked with.request(method, params)and heard with
on message, restarted when it crashes; a store may hold connections.Frame(chapter 28): another page inside
this one, itson messageonly that page's;A17for a frame with no
title.persistfollows its key (chapter 12):
key: Project.idkeeps one value per project;in: .appnames a
storage the project gives itself, which may answer later.- The policy names an app's own schemes and WebAssembly
(chapter 33):meta.connectand
meta.frametakeipc:orwfpreview:,meta.wasmlets a page compile
WebAssembly,meta.style_elementslets a script write<style>. - A build cache: only the pages an edit changed are pre-rendered
again, in a session (BuildCache::in_memory) or across runs. - An
Image's literalsrc:inpublic/is processed as animage
declaration is: each width and format, its size, a<picture>. - Previews of what a reader asked for:
data-wf-motion="reduce"on
the page's root stills every animation asprefers-reduced-motiondoes,
anddata-wf-validation="shown"shows every field's message as a failed
submit does. - Plurals by CLDR (chapter 21): the build picks
each count's form by the default locale's rules (CLDR 48, the same
table the browser'sIntl.PluralRulesreads), and exactly none is
key.zeroin any language.
For tools
Every one reads the project through a Vfs, so an editor's unsaved
buffers count (chapter 38).
- Printing and reprinting:
webfluent::print,reprintand
edit::rewrite_*change an element, a statement or a declaration in the
tree and write the smallest edit, every other byte as it was. - The node map both ways: each element's id, place, parent and what it
is inside; the node at a caret; the Layers tree;wf build --studio
stampsdata-wf-nodeand writesnodes.json. - Data an inspector draws from, each a command too:
wf components
(every component, built-in and the project's),wf theme(every token,
its uses and its contrast),wf motion,wf rules(thevalidate
rules, named patterns, every state's rules),wf scope FILE:LINE(what
can be read at a place, typed),wf translations(what each locale
lacks, what nothing names;--plurals),wf assets,wf config,
wf commands; and style values read into their parts and written back. wf fix: one decided fix on every family that has a certain one,
and fix-all per family.- An agent's change set and context:
webfluent::agentholds an
agent's edits apart from the working tree, builds them before anyone
reads them, and gives them back by file or by hunk;wf contextis what
an agent is given — the files, the problems, the components, the theme,
the config with only its publicenv, and the guide.
Fixes
- A project's own animation (
Card(animate: .Drop)) did nothing on an
element that stood still; it plays. - A refined type's open end (
Number(0..10)took 10) and itsafter:and
before:were not checked as the reader typed. - Pre-rendered controls dropped
name:andautocomplete:, and an
Inputwith its ownid:got a second one, so its label named nothing. - A locale missing one plural form showed the default locale's form, two
languages on one page; a site whose default locale is right to left was
served left to right until a script ran;ar-EGwas not right to left. - A
letin an action, a handler, an effect or a timer was offered by
completion everywhere in its page, and listed as a store's member. I01andI02missed at()in a page's header;I03said a reader
sees the key, where they see the default locale's message.Unsafe.Htmlwithout asanitize(…)elsewhere put nothing in; a typo
was reported once per check that found it; a page's ownstate envread
the project'senv.- A comma between two style declarations made the browser drop both; it is
an error.
Upgrading
See chapter 46: a comma between style
declarations, a field that accepted its range's open end, an animation
that now plays, a zero message that now shows, and a right-to-left
default locale are what a project may notice. Run wf check.
Full Changelog: v5.8.0...v5.9.0