Skip to content

v1.7.0

Choose a tag to compare

@github-actions github-actions released this 18 Jul 16:19

Correctness fixes in the framework and a substantial repair of the WebStorm editing experience,
plus a pass over the documentation site's own presentation.

🐛 Fixes

  • WebStorm no longer paints correct code red. The language server bundled inside the WebStorm
    plugin had gone stale: it predated auto-expose (a setup() may omit its return), so it typed
    the template context as void and flagged every binding of every such component. On a real
    application that was 1642 false errors across 39 of 41 files — while weave check on the same
    files reported none. Install weave-webstorm-0.23.0.zip. A new CI gate now fails the build if the
    server inside the shipped .zip ever differs from the one in the repository again.

  • Template highlighting is no longer one lonely colored word. A call inside a binding —
    {{ rangeValue() }}, {{ adapter() }} — rendered as plain black text, because the color key it
    inherited from has no foreground in any scheme WebStorm ships. A bare identifier next to it was
    colored, which made the whole thing look broken rather than merely plain. Calls and directive
    prefixes now carry explicit colors, and remain retunable under
    Settings → Editor → Color Scheme → Weave.

  • The editor now actually enforces a child component's props. Because the server never resolved
    an imported component's synthesized default export, typeof Child fell back to any and every
    <Child prop={{ … }}> check quietly passed — passing a number where a handler belongs, or a prop
    the child does not declare, produced no error. The same gap stripped inline handler parameters of
    their contextual type, so onChange={{ (v) => … }} reported a spurious implicit-any. Both are
    fixed, and a prop error is now pinned to the prop name in the template.

  • A nested @for no longer reads the wrong row. Every loop row function took a parameter
    literally named _row, so an inner loop shadowed its parent. An outer loop variable referenced
    inside a nested loop compiled to the inner item — silently, with no error. Where the inner item
    happened to carry a same-named property the value looked plausible; where it did not, the binding
    rendered empty. Each loop now gets its own row identifier. The magic names ($index, $first,
    $last, …) still rebind to the innermost loop, which is the correct shadowing.

  • A bare #fragment scrolls instead of navigating away. navigate('#section') took the empty
    string before the # as the destination path, which resolves to / — so an in-page anchor threw
    the app back to the root route and lost the page you were reading. A bare fragment now keeps the
    current path and query and just scrolls.

  • <Sidenav> fills its container. The shell set no height, so a drawer stopped at its last nav
    item instead of running the full height of the box it was given. Auto-height parents are
    unaffected (it resolves to a no-op there).

  • <Tree> and <List> use real icons. The tree disclosure marker was a CSS glyph and both
    components drew their reorder handle as a character; they are lucide <Icon>s now
    (chevron-right, grip-vertical). grip-vertical joins the built-in icon set. The tree's
    toggle-glyph token moves 12px → 14px, since a chevron icon needs slightly more than the glyph
    did to read at the same weight.

⚠️ Deprecated (still emitted, still safe to set)

Five design tokens became inert during this cycle — the rules that read them went away when a ×
character became a lucide icon and a marked button's underline became a tonal fill. They are kept
and emitted
, because the design-token contract is frozen public API: a token is deprecated first and
removed only in a major. If you set one of these, nothing breaks — but nothing happens either, so move
to the replacement when convenient.

Deprecated Instead
--weave-button-mark-width no replacement — marked is a tonal fill, not an underline
--weave-chips-remove-font-size --weave-chips-remove-icon
--weave-input-clear-size sized by the icon rules
--weave-datepicker-cell-size (typography) --weave-datepicker-cell-font
--weave-date-range-picker-cell-size (typography) --weave-date-range-picker-cell-font

(The sizing group's cell-size on both pickers is untouched and still does what it always did.)

📚 Documentation site

  • Each API reference package page now opens with a jump index of its exports, grouped by kind
    with a per-entry badge — @weave-framework/runtime alone is 56 symbols, previously all expanded
    end to end with no way to see what the package contained.
  • API anchors are unique. A function and a same-named type collided (resource and Resource
    both became #resource), which is a duplicate DOM id and sent half those links to the wrong
    symbol. Existing deep links still resolve.
  • Component demos read as finished, anchored surfaces rather than floating on the backdrop, and the
    Progress Bar — previously zero-width in the demo stage, with a track the colour of the page — is
    visible.