Skip to content

Releases: openwebf/webf

0.24.12

11 Feb 04:39
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

0.24.12

Major Features

  • Routing: add browser-history routing support for @openwebf/react-router and
    @openwebf/vue-router, improving web-style navigation and RouterLink behavior (#850).
  • Native UIs/Icons: expand webf_lucide_icons support and add React/Vue showcases (#850).
  • Tooling/Codegen: enhance Vue generator output (runtime enum exports, updated templates) and
    add generator tests for Dart method interface bindings (#850).

Performance Improvements

  • Widget Elements: cache stable default attributes on the native side to make getAttribute()
    non-blocking for common widget defaults (#850).

Bug Fixes

  • CSS/Selectors: fix :has() selector state flags for :checked and :disabled matching in
    the Blink backend (#849).
  • CSS/Values: prevent calc(% - px) from collapsing during shrink-to-fit sizing (flex items);
    add regression snapshots (#851).
  • Scrolling/Focus: prevent focused inputs from scrolling the page to the top; add a
    showOnScreen regression test (#851).
  • Overflow: fix height collapse for overflow:hidden children inside WebFListView (#850).
  • Rendering/Grid: re-resolve fr row tracks after intrinsic sizing to match expected track
    sizing behavior (#850).
  • Bridge/UICommand: prevent re-entrant flushUICommand calls from causing missing DOM
    elements (#850).
  • Gestures: guard against null attachedRenderer in click handling (#850).
  • Lifecycle: remove asserts that could fire on disposed nodes during teardown (#850).
  • Rendering/Flexbox: correct min-size:auto behavior for replaced elements (e.g. images) in
    flex layouts (#853).

0.24.11

10 Feb 20:29
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Major Features

  • CSS/Selectors: add Selectors Level 4 :has() support to the Blink backend (Tailwind CSS
    compatibility), including invalidation coverage and snapshots (#840).

Bug Fixes

  • Rendering/Widget: avoid clamping portal/modal popup widget width to DOM parent constraints
    (#841).
  • Rendering/Text: establish a local inline formatting context for inline spans hosted under
    RenderWidget, fixing flexbox/inline layout edge cases (#842).
  • Flexbox: don’t stretch auto-height flex items when cross-axis constraints are bounded,
    improving WebFListView sizing inside flex containers (#843).
  • RTL: isolate per-subtree direction overrides and support dynamic documentElement.dir
    updates (including logical margin remapping) (#844).
  • Bridge: serialize Dart enums across the native bridge for stable NativeValue round-trips
    (#840).
  • Form Controls: add HTMLOptGroupElement support and resolve related bridge build issues
    (#840).
  • Scrolling: detach overflow scroll listeners on dispose to prevent stale callbacks/leaks.

0.24.10

01 Feb 12:37
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Major Features

  • CSSOM: expose Dart CSSOM via document.styleSheets, including CSSStyleSheet/CSSRule
    bindings (insert/delete/replace) that keep rule sets in sync and trigger style updates when
    Blink CSS is disabled (#838).
  • CSS/Cascade Layers: implement cascade layer parsing and ordering for Dart CSS (inline +
    @media + @layer + CSSOM), improving specificity tracking, rule collection, and selector
    matching (#838).
  • CSS/Selectors: support selector-list parsing/matching and route Element.matches() /
    Element.closest() through selector-list utilities when the Blink backend is enabled (#836,
    #838).
  • Native UIs: add webf_shadcn_ui components and webf_lucide_icons icon library with
    generated bindings and showcases (#834).
  • Tooling/Codegen: fix Dart binding method generation and add Jest coverage for generator
    output (Dart interface/method bindings).

Performance Improvements

  • Bridge/CSS: avoid Dart/FFI round-trips during attribute selector matching (read attributes
    from native DOM storage), add nth-index caching, and improve SelectorFilter prefiltering for
    large DOM trees/long lists (#836).

Bug Fixes

  • CSS/Selectors: fix :nth-* pseudo matching for detached elements in the Dart selector
    engine.
  • DOM/Query: use Blink traversal for getElementsByClassName() / getElementsByTagName()
    when Blink backend is enabled (including '*' wildcard and ASCII case-insensitive tag
    matching) (#836).
  • CSS/Fonts: relayout after @font-face registration to trigger font loading and repaint
    updates (#838).
  • CSS/Gap: ignore invalid gap assignments (#838).
  • Flexbox: normalize WebkitAlignItems to align-items for correct flex relayout (#838).
  • Transitions: preserve CSS transitions during Blink style synchronization (#838).
  • Transforms: fix percentage translate reset when rebuilding DOM trees (#838).
  • Rendering: detach render object mapping in didDetachRenderer to avoid stale renderer
    references (#838).

0.24.9

28 Jan 03:55
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Major Features

  • Blink/CSS: add a first-paint style synchronization barrier so the first visible frame ships
    with both DOM and computed styles (including hybrid-router RouterLink subpage mounts) (#827).
  • CSS/Logical Properties: resolve logical border-*-*-radius (start/end) across direction
    and writing-mode for correct RTL/vertical writing-mode rendering (#832).
  • CSS/Selectors: support :enabled / :disabled matching for form controls when Blink is
    enabled; add Selectors Level 4 :is() / :where() integration coverage (#824).

Bug Fixes

  • Bridge/UICommand: improve UICommand synchronization on dedicated threads (flush pending
    commands for element/layout-dependent reads; defer packages while the Blink first-paint barrier
    is active) (#827).
  • Rendering/Grid: fix RTL positioning for CSS grid columns and justify-self alignment/margins
    in RTL (#832).
  • Rendering/Flex: make main-axis margin: auto free-space distribution flow-aware (e.g. row
    in direction: rtl) and distribute space per auto margin (#832).
  • Form Controls: fix boolean attribute setters for disabled / checked; correct radio and
    checkbox checked synchronization before widget state mounts; dispatch input events for checkbox
    toggles; fix textarea.defaultValue priority (#832).
  • Viewport: notify the controller when the viewport render-object size changes during layout
    so resize listeners and native media-query caches stay in sync under widget constraint resizing.

0.24.8+1

26 Jan 18:12
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Bug Fixes

  • DOM/Style: flush styles after DOM/inline-style UICommand batches so layout queries (e.g.
    offsetLeft/offsetWidth) observe up-to-date selector matching and computed styles.
  • Viewport: remove redundant viewport size change notifications triggered during layout.

0.24.8

26 Jan 04:00
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Major Features

  • Bridge/CSS: implement CSS cascade layers (@layer) end-to-end in the Blink/bridge pipeline;
    add CSSLayerBlockRule/CSSLayerStatementRule bindings and integration coverage (Tailwind CSS
    @layer support) (#814).
  • DevTools: long-press the floating panel button to copy the render object tree to clipboard (
    #820).

Performance Improvements

  • DOM/Style: batch/coalesce style flushes triggered by childList mutations to avoid
    synchronous recalcs during large inserts (e.g. infinite scrolling) (#825).

Bug Fixes

  • CSS/Selectors: recalculate nested styles after childList mutations so general sibling
    selectors update correctly after DOM insertions (e.g. Tailwind .space-y-*) (#823, #825).
  • Bridge/CSS: fix cascade layer ordering to match expected precedence.
  • Rendering/Widget: honor percentage widths (e.g. width: 100%) for RenderWidget hosted
    Flutter subtrees once containing block width is definite (#822).
  • Rendering/Flex: avoid cross-axis center shift when free space is 0 and only the tallest item
    triggers the border-box centering tweak; add regression coverage (#819).
  • CSS/Values: trim parsed CSS function arguments to handle whitespace correctly.
  • Build/iOS: fix iOS builds after adding cascade layer bindings by adding missing generated
    sources.
  • Debugging: include stack traces in WebFController.loadingError for easier diagnosis (#822).

0.24.7

21 Jan 04:13
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Performance Improvements

  • Bridge/CSS: optimize Blink style engine matching and invalidation (including media-query evaluation and resize-triggered recalc) (#806).
  • CSS: skip caching var()-dependent colors to avoid stale cache hits and reduce variable-change overhead (#812).

Bug Fixes

  • CSS: preserve author stylesheet DOM order and base URL; fix subtree style recalculation when display:none becomes visible (#806).
  • Theme: sync system color scheme changes with Blink prefers-color-scheme media queries and dispatch ColorSchemeChangeEvent reliably (#806).
  • Router/Prerendering: mount initialRoute during prerendering and emit a prerendering event for initial router-link (#811).
  • Rendering/Widget: avoid unbounded width constraints for widget elements with min-width in unbounded contexts (e.g. Row + Expanded) (#816).

0.24.6

17 Jan 04:07
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Bug Fixes

  • Intrinsic sizing: fix width: min-content/max-content/fit-content collapsing to padding/border-only sizing (especially for flex containers and inline formatting contexts) by resolving intrinsic widths during layout and forwarding intrinsic measurements through wrapper render objects (#807).
  • Rendering/Widget: clamp hosted Flutter widget constraints using both RenderWidget constraints and WebFWidgetElementChild wrapper constraints to avoid unbounded children and unintended viewport-sized expansion (#808).
  • CSS: fix render parent lookup to only skip wrapper render objects belonging to the same element, preventing incorrect ancestor/constraint resolution in complex render trees (#809).
  • Overflow/Scrolling: when a DOM element is mounted into multiple Flutter subtrees, mark each nearest scroll container as needing layout for overflow sizing updates (#809).

0.24.5

16 Jan 09:36
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Bug Fixes

  • Layout: prevent height: auto flex containers from expanding to the sliver viewport height inside scrolling widget elements (e.g. flutter-sliver-listview) (#803).
  • iOS: fix camera/microphone permission prompts in the example app by adding usage descriptions to Info.plist (#803).

0.24.3

14 Jan 06:21
Immutable release. Only release title and notes can be modified.
102057c

Choose a tag to compare

Major Features

  • Native plugins & native UIs
    • Add webf_sqflite native plugin for SQLite database support (#793).
    • Add webf_bluetooth native plugin with React/Vue showcases (#796).
    • Add webf_camera and webf_video_player native UI plugins with React/Vue use cases (#795, #794).
  • DevTools: copy render object tree to clipboard for the inspector panel (#798).
  • Tooling/Codegen: typed module event declarations and improved React codegen typings/build output.
  • Bridge/DOM: add HTMLSelectElement/HTMLOptionElement support for React controlled <select>.

Performance Improvements

  • Parsing: replace RegExp-heavy parsing with scanners/parsers to reduce allocations and improve maintainability.

Bug Fixes

  • CSS/Layout: avoid treating bounded maxHeight as a definite height for RenderWidget children (#797).
  • Layout: clamp widget constraint width to the CSS containing block (#791).
  • Rendering/Grid: prevent overflow with minmax(0, 1fr) and percent-sized images; fix centered text combined with grid layout.
  • Rendering/Flex: avoid baseline crashes on detached children / missing parentData.
  • Build/Release: fix iOS build issues, package publish scripts, and Bluetooth license metadata.