v0.36.0 — The builder gets its own interface back
Two features that had been waiting on a binary, and seven fixes. Most of the fixes are consequences of 0.35.0 making the typography tokens real, and every one of them was found by using the panel rather than by reading it.
Fixed
- The typography tokens were restyling the Etch builder itself.
?etch=magicis a front-end request, so the generated stylesheet loads in the builder shell like anywhere else -- and once the tokens started writing a real rule,body, p, li, a, buttonreached into Etch's own interface. Measured there: Etch's body, its paragraphs and its buttons all rendered in whichever family held the body-text token. The same was quietly true of any Apply to naming a bare element.build_css()now draws a line between declaring fonts and painting a page. The builder shell and the block editor get the faces and the family variables; the canvas iframe and the real front end still get everything, because both are the page. - The Google weights row was a delete control wearing a download label. Installing replaces a family's variant list with whatever that row holds, so unticking a weight and pressing Download selection downloaded nothing and removed the weight. Installed weights are ticked and locked now, the row only adds, and the button counts what it will actually fetch. Weights are removed in the Variants table, which says so.
- Variable axes were offered for fonts that have none. They were read from Google's catalogue, which describes a family however it was fetched, so a library holding five static Open Sans weight files was given sliders for an axis none of those files carry. Whether a family is variable is now read from the install: a weight stored as a range, or axes actually read out of a file.
Apply tonow refuses any selector a typography token covers, not only one this family's own token covers. A second family namingh1used to win, because a plain selector beats a token, and quietly took the heading font from whoever held it. The two features no longer overlap: the tokens own their tags and Apply to owns everything else.- The warnings under
Apply towere never live. The field updated the save bar and nothing else, so the lines naming refused selectors sat stale while you typed the very thing they warn about. - A disabled family counted as holding its token in the panel and as holding nothing in the stylesheet, so the panel dropped an Apply to selector that the stylesheet then wrote.
- The panel sat below overlays painted by other plugins. At
z-index: 60a fixed layer at 900 drew over the manager. It sits at 950 now: above the builder's decorations, below Etch's menus and toasts at 999 and 1000.
Added
- The WOFF2 decoder. Only the encoder half of google/woff2 was compiled in, so a variable font that arrived already compressed carried its axes where nothing could read them. Verified by the build's own smoke test, on the binary that ships: Inter 876,576 to 350,352 and back to 878,964 bytes with
fvarintact, and a decoder that refuses garbage. It cost 72,201 bytes. - Reading a font already on the server. A family whose axes are unknown offers to read its files. An empty result is recorded as "looked, found nothing"; a file that cannot be read stores nothing, so a failed read is never mistaken for a font without axes.
- Holding the space while a font loads. An optional metric-matched fallback per family, carrying that font's own vertical metrics from its
hheatable, so line boxes are the right height before the web font arrives.
Changed
- The format filter on Font files shows even when the folder holds one format, because a single
WOFF2 8chip says everything is already converted. - An already-installed Google weight is ticked, so having one looks different from having asked for one.
Full detail in CHANGELOG.md.