Releases: openwebf/webf
Releases · openwebf/webf
0.24.12
Immutable
release. Only release title and notes can be modified.
0.24.12
Major Features
- Routing: add browser-history routing support for
@openwebf/react-routerand
@openwebf/vue-router, improving web-style navigation andRouterLinkbehavior (#850). - Native UIs/Icons: expand
webf_lucide_iconssupport 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:checkedand:disabledmatching 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
showOnScreenregression test (#851). - Overflow: fix height collapse for
overflow:hiddenchildren insideWebFListView(#850). - Rendering/Grid: re-resolve
frrow tracks after intrinsic sizing to match expected track
sizing behavior (#850). - Bridge/UICommand: prevent re-entrant
flushUICommandcalls from causing missing DOM
elements (#850). - Gestures: guard against null
attachedRendererin click handling (#850). - Lifecycle: remove asserts that could fire on disposed nodes during teardown (#850).
- Rendering/Flexbox: correct
min-size:autobehavior for replaced elements (e.g. images) in
flex layouts (#853).
0.24.11
Immutable
release. Only release title and notes can be modified.
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,
improvingWebFListViewsizing inside flex containers (#843). - RTL: isolate per-subtree
directionoverrides and support dynamicdocumentElement.dir
updates (including logical margin remapping) (#844). - Bridge: serialize Dart enums across the native bridge for stable
NativeValueround-trips
(#840). - Form Controls: add
HTMLOptGroupElementsupport and resolve related bridge build issues
(#840). - Scrolling: detach overflow scroll listeners on dispose to prevent stale callbacks/leaks.
0.24.10
Immutable
release. Only release title and notes can be modified.
Major Features
- CSSOM: expose Dart CSSOM via
document.styleSheets, includingCSSStyleSheet/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_uicomponents andwebf_lucide_iconsicon 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 improveSelectorFilterprefiltering 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-faceregistration to trigger font loading and repaint
updates (#838). - CSS/Gap: ignore invalid
gapassignments (#838). - Flexbox: normalize
WebkitAlignItemstoalign-itemsfor 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
didDetachRendererto avoid stale renderer
references (#838).
0.24.9
Immutable
release. Only release title and notes can be modified.
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-routerRouterLinksubpage mounts) (#827). - CSS/Logical Properties: resolve logical
border-*-*-radius(start/end) acrossdirection
andwriting-modefor correct RTL/vertical writing-mode rendering (#832). - CSS/Selectors: support
:enabled/:disabledmatching 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-selfalignment/margins
in RTL (#832). - Rendering/Flex: make main-axis
margin: autofree-space distribution flow-aware (e.g.row
indirection: 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; dispatchinputevents for checkbox
toggles; fixtextarea.defaultValuepriority (#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
Immutable
release. Only release title and notes can be modified.
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
Immutable
release. Only release title and notes can be modified.
Major Features
- Bridge/CSS: implement CSS cascade layers (
@layer) end-to-end in the Blink/bridge pipeline;
addCSSLayerBlockRule/CSSLayerStatementRulebindings and integration coverage (Tailwind CSS
@layersupport) (#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
childListmutations to avoid
synchronous recalcs during large inserts (e.g. infinite scrolling) (#825).
Bug Fixes
- CSS/Selectors: recalculate nested styles after
childListmutations 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%) forRenderWidgethosted
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.loadingErrorfor easier diagnosis (#822).
0.24.7
Immutable
release. Only release title and notes can be modified.
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:nonebecomes visible (#806). - Theme: sync system color scheme changes with Blink
prefers-color-schememedia queries and dispatchColorSchemeChangeEventreliably (#806). - Router/Prerendering: mount
initialRouteduring prerendering and emit aprerenderingevent for initialrouter-link(#811). - Rendering/Widget: avoid unbounded width constraints for widget elements with
min-widthin unbounded contexts (e.g.Row+Expanded) (#816).
0.24.6
Immutable
release. Only release title and notes can be modified.
Bug Fixes
- Intrinsic sizing: fix
width: min-content/max-content/fit-contentcollapsing 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
RenderWidgetconstraints andWebFWidgetElementChildwrapper 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
Immutable
release. Only release title and notes can be modified.
0.24.3
Immutable
release. Only release title and notes can be modified.
Major Features
- Native plugins & native UIs
- 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/HTMLOptionElementsupport 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
maxHeightas a definite height forRenderWidgetchildren (#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.