Skip to content

v0.4.2

Latest

Choose a tag to compare

@github-actions github-actions released this 21 Sep 14:53
c8e2bbf

The browser-floor release, PR #625 (closing #624): the first consumer to
adopt 0.4.1's commandfor / command="show-modal" markup found that
"no fallback" was a functional loss on a permanent floor — Safari 17 /
18 fleets, Firefox ESR 140 — so installInvokerCommands() now carries
the two blessed commands there, feature-detected and self-retiring, the
same policy the anchor-positioning fallback already followed. The audit
that decision prompted found no other functional loss above the floor
and produced the Browser support fundamentals page, which states the
floor (the Popover API) once. 53 recipes · 5 templates · 64 behaviors.

Strictly additive, no markup change anywhere → patch per VERSIONING.md.
No recipe scaffold changed, so the CLI stays at 0.4.4; editor-kit stays
at 0.2.0.

Added

  • installInvokerCommands() — a feature-detected fallback for the
    commandfor / command="show-modal" / "close" markup the kit
    blesses
    (#624). 0.4.1 shipped the markup with no fallback; the first
    consumer to adopt it (TesseraQL) found the degradation is a
    functional loss on a permanent floor — an iPad that stays on
    Safari 18, a Mac on Ventura's Safari 17, a Firefox ESR 140 fleet — and
    that in the data-grid-page shape the Filters dialog is the only way
    to compose a filter, so a list page below the floor could not be
    filtered at all. The kit already ships a scripted fallback for CSS
    Anchor Positioning (Baseline 2026); shipping none for a Baseline 2025
    feature was inconsistent. So: at install, if
    HTMLButtonElement.prototype has commandForElement nothing is
    installed (the native path is untouched — never a second
    showModal()); otherwise one delegated click listener performs
    show-modal on a <dialog> that is not open and close on one that
    is, resolving the target by id from the button's root node, and
    leaves disabled buttons, submit buttons with a form owner,
    defaultPrevented clicks and unknown commands alone. Out of scope:
    the command event, popover commands (popovertarget covers them)
    and custom -- commands — invokers-polyfill for the full API. No
    markup changes anywhere. Unit tests (jsdom has no API, so the
    fallback path runs; the native branch is tested by defining the
    properties) plus invoker-commands-fallback.spec.mjs, which removes
    the API from the page before the bundle loads and re-runs the dialog
    / drawer / palette / tall-dialog scenarios plus the acceptance edge
    cases on every CI leg; the native spec now also asserts the fallback
    stays out. 64 behaviors (63 auto-init + opt-in chart).
  • Docs: a Browser support fundamentals page states the kit's floor
    once — the Popover API (Chromium 114 / Firefox 125 / Safari 17), which
    nothing below has a fallback for — and sorts every newer feature the
    kit uses by the rule the audit behind #624 made explicit: a functional
    loss gets a scripted, feature-detected, self-retiring fallback (anchor
    positioning, invoker commands); a cosmetic loss gets none
    (@starting-style, interpolate-size, field-sizing,
    scrollbar-width, <details name>, hidden="until-found",
    base-select); popover="hint" and custom commands are deliberately
    avoided. The dialog, drawer, data-grid-page template and anchored
    pages point at it. The audit found no other functional loss above the
    floor — the JS side uses nothing newer than the Popover API's toggle
    events. en + ja.

Full details in CHANGELOG.md.