Skip to content

Commit cb62297

Browse files
committed
release: 0.22.41
1 parent 8f86579 commit cb62297

3 files changed

Lines changed: 16 additions & 2 deletions

File tree

‎webf/CHANGELOG.md‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
## 0.22.41
2+
3+
### Fixes
4+
5+
- Prevent re-entrant `flushUICommand` from dropping DOM elements. In dedicated-thread mode, an `asyncCaller` command processed during a flush could trigger a nested `flushUICommand` that drained the UI command ring buffer mid-batch, reordering commands so an `insertAdjacentNode` ran before the `createElement` that registers its target's binding object — surfacing as a Dart `hasBindingObject(selfPointer)` assertion and missing DOM nodes. A re-entrancy guard now makes nested flushes no-ops, so the deferred commands are processed in order by the next top-level flush.
6+
- Preserve FIFO order when the UI command ring buffer overflows. When the ring filled, commands spilled into an overflow buffer that the consumer drained *before* the ring; because overflow items are always newer than ring items, this reordered commands under backpressure (an `insertAdjacentNode` package could be delivered before the `createElement` it depends on). Both the command- and package-level ring buffers now keep overflow sticky on push and drain the ring before overflow on pop, with regression tests.
7+
- Prerendering: fire `resize → DOMContentLoaded → load → prerendered` exactly once, at mount, with real geometry. In the `addWithPrerendering` flow the controller finished prerendering (`evaluated == true`) before the widget mounted, so the mount-time dispatch was skipped entirely: `resize` and `prerendered` never fired, and `DOMContentLoaded`/`load` fired during the prerender phase while layout was still deferred (so `clientWidth` / `getBoundingClientRect` returned `0` inside their handlers). The four events are now dispatched on mount, in order, once.
8+
- Prerendering: await an initial hybrid route at mount instead of reporting it missing. Opening a prerendered controller with a non-default `initialRoute` (e.g. `/modal_popup`) failed with "The route path for … was not found" because the root view's loading guard was skipped once `evaluated == true`, building the root view before the route's load future resolved. WebF now waits for the initial hybrid route to load before building the root view.
9+
- Routing: remove a hybrid build context by its `BuildContext` identity rather than by route path. A single controller can back several simultaneously-mounted route widgets — a root `WebF` view plus `WebFRouterView` sub-routes on an inner `Navigator` — that share one build-context stack and can legitimately hold two entries with the same path. `popBuildContext` removed *every* entry matching the path, so unmounting one route deleted a still-mounted sibling, emptied the stack, and left `currentBuildContext` null for a visible page — which made `HybridHistory` navigation throw "Could not invoke HybridHistory API when flutter context was not attached" (the popup mask showed but its content/navigation failed). Each route now removes only its own entry, and a route's metrics are disposed only when no remaining entry uses that path.
10+
11+
### Maintenance
12+
13+
- Add the missing `#include <algorithm>` to `form_data.cc`, `executing_context.cc`, and `event_listener_map.cc` for `std::remove_if` / `std::find_if`. GCC 14 / libstdc++ no longer pulls `<algorithm>` in transitively, which broke the Linux bridge build after it was re-enabled in the release pipeline (macOS/Android were unaffected because libc++ still provided it transitively).
14+
115
## 0.22.40
216

317
### Features

‎webf/ios/webf.podspec‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Pod::Spec.new do |s|
3030
'GCC_OPTIMIZATION_LEVEL' => 's', # Enable optimization for size
3131
'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) ' +
3232
'APP_REV=\\"cf1ca27c7\\" ' +
33-
'APP_VERSION=\\"0.22.20\\" ' +
33+
'APP_VERSION=\\"0.22.41\\" ' +
3434
'CONFIG_VERSION=\\"2025-04-26\\" ' +
3535
'WEBF_QUICK_JS_ENGINE=1 ' +
3636
'FLUTTER_BACKEND=1 ' +

‎webf/pubspec.yaml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: webf
22
description: W3C standards-compliant web rendering engine based on Flutter, allowing web applications to run natively on Flutter.
3-
version: 0.22.40
3+
version: 0.22.41
44
homepage: https://openwebf.com
55
environment:
66
sdk: ">=3.0.0 <4.0.0"

0 commit comments

Comments
 (0)