Skip to content

Commit 8f1ecc4

Browse files
committed
fix: harden all engines — safe ViewId lookups, CEF shutdown, blitz keyboard/mouse/dark mode
1 parent a8fbcf5 commit 8f1ecc4

9 files changed

Lines changed: 449 additions & 144 deletions

File tree

CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,20 @@
11
# Changelog
22

3+
## [0.1.5] - 2026-03-13
4+
5+
### Added
6+
- Blitz keyboard event handling — translates iced key events to blitz, enabling form interaction
7+
- Blitz right-click, middle-click, back/forward mouse button support
8+
- Blitz dark mode detection via `ICED_WEBVIEW_COLOR_SCHEME` env var and `GTK_THEME` fallback
9+
- CEF mouse modifier tracking (Shift, Ctrl, Alt passed to mouse events)
10+
11+
### Fixed
12+
- All engines: invalid ViewId no longer panics — `find_view` returns Option with graceful fallback
13+
- Blitz frame comparison now uses hash instead of full pixel buffer diff
14+
- CEF child processes (zygote, GPU, network service) left running after exit — added proper shutdown
15+
- Litehtml selection rectangles cleared on page navigation
16+
- Litehtml image staging deduplicates by URL (last write wins)
17+
318
## [0.1.4] - 2026-02-23
419

520
### Fixed

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "iced_webview_v2"
3-
version = "0.1.4"
3+
version = "0.1.5"
44
edition = "2021"
55
rust-version = "1.90.0"
66
description = "An easily embedded webview library for iced"
@@ -35,6 +35,7 @@ blitz = [
3535
"dep:peniko",
3636
"dep:cursor-icon",
3737
"dep:keyboard-types",
38+
"dep:smol_str",
3839
"dep:reqwest",
3940
"dep:tokio",
4041
]
@@ -61,6 +62,7 @@ anyrender_vello_cpu = { version = "0.9", optional = true }
6162
peniko = { version = "0.6", optional = true }
6263
cursor-icon = { version = "1", optional = true }
6364
keyboard-types = { version = "0.7", optional = true }
65+
smol_str = { version = "0.3", optional = true }
6466
tokio = { version = "1", features = ["rt"], optional = true }
6567

6668
# Servo engine deps
@@ -92,4 +94,3 @@ name = "email"
9294

9395
[[example]]
9496
name = "embedded_webview"
95-

build.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ fn main() {
99
if let Ok(out_dir) = std::env::var("OUT_DIR") {
1010
let build_dir = std::path::Path::new(&out_dir)
1111
.ancestors()
12-
.find(|p| p.file_name().map_or(false, |n| n == "build"));
12+
.find(|p| p.file_name().is_some_and(|n| n == "build"));
1313

1414
if let Some(build_dir) = build_dir {
1515
if let Ok(entries) = std::fs::read_dir(build_dir) {

src/engines.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ pub type ViewId = usize;
4545

4646
/// Trait to handle multiple browser engines
4747
/// Currently only supports cpu renders via pixel_buffer
48-
/// Passing a View id that does not exist will cause a panic
48+
/// Passing a View id that does not exist is handled gracefully (no-op / defaults)
4949
pub trait Engine {
5050
/// Used to do work in the actual browser engine
5151
fn update(&mut self);

0 commit comments

Comments
 (0)