From 68545f38dd0a27a0c97186131e20d45d96ca6546 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wies=C5=82aw=20=C5=A0olt=C3=A9s?= Date: Sun, 1 Nov 2026 07:03:35 +0100 Subject: [PATCH 1/2] FerroUI 0.4.0 with the GPU effects The submodule moves to FerroUI main after the 0.4.0 release (5318b82a3): the 0.4.0 sources and fixes, with the composition lights, the effect pixel operations and the rounded clips drawn on the GPU in Skia, the Reveal lighting on the GPU in Vello, and the image texture budget of Vello. Cargo.lock follows the new dependencies of the workspace. --- Cargo.lock | 8 ++++++++ FerroUI | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 4055a3e..d285a2f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -530,6 +530,7 @@ dependencies = [ "ferroui-base", "ferroui-controls", "futures-util", + "uuid", "zbus", ] @@ -589,6 +590,9 @@ dependencies = [ [[package]] name = "ferroui-microcom" version = "0.4.0" +dependencies = [ + "uuid", +] [[package]] name = "ferroui-native" @@ -618,6 +622,9 @@ dependencies = [ [[package]] name = "ferroui-remote-protocol" version = "0.4.0" +dependencies = [ + "uuid", +] [[package]] name = "ferroui-skia" @@ -1609,6 +1616,7 @@ version = "1.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cc1186384beb7dd8eedea376413fd654937285ea6c9cfbb928dc3043ea4b606" dependencies = [ + "getrandom 0.4.3", "js-sys", "serde_core", "wasm-bindgen", diff --git a/FerroUI b/FerroUI index 12db0c2..5318b82 160000 --- a/FerroUI +++ b/FerroUI @@ -1 +1 @@ -Subproject commit 12db0c25f40b054f99d5573a00ecdcd710fe9a20 +Subproject commit 5318b82a393d4181912ca074c61020fe47455c9d From 2afab20a9986779a675355e03da5ebf898b8065d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wies=C5=82aw=20=C5=A0olt=C3=A9s?= Date: Sun, 1 Nov 2026 07:06:01 +0100 Subject: [PATCH 2/2] The FerroUI blocks of the workspace from the new submodule python3 FerroUI/scripts/apps/sync-workspace.py: the workspace dependencies FerroUI gained since the last bump (uuid among them). --- Cargo.toml | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index 25c947b..4c7c925 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,12 +13,40 @@ repository = "https://github.com/FerroUI/Solitaire" [workspace.dependencies] # >>> FerroUI workspace dependencies (written by FerroUI/scripts/apps/sync-workspace.py from FerroUI/Cargo.toml; do not edit) +# The Dock port (docs/porting/dock): its crates and the dependencies only it has. +ferrodock-controls-recycling-model = { path = "FerroUI/src/Dock/FerroDock.Controls.Recycling.Model" } +ferrodock-controls-recycling-model-ferro = { path = "FerroUI/src/Dock/FerroDock.Controls.Recycling.Model.Ferro" } +ferrodock-model = { path = "FerroUI/src/Dock/FerroDock.Model" } +ferrodock-model-ferro = { path = "FerroUI/src/Dock/FerroDock.Model.Ferro" } +ferrodock-runtime = { path = "FerroUI/src/Dock/FerroDock.Runtime" } +ferrodock-settings = { path = "FerroUI/src/Dock/FerroDock.Settings" } +ryu = "1.0" +serde = "1.0" +serde_json = { version = "1.0", features = ["raw_value"] } + +ferroui-pretext-contracts = { version = "=0.4.0", path = "FerroUI/src/Pretext/FerroUI.Pretext.Contracts" } +ferroui-pretext = { version = "=0.4.0", path = "FerroUI/src/Pretext/FerroUI.Pretext" } +ferroui-pretext-layout = { version = "=0.4.0", path = "FerroUI/src/Pretext/FerroUI.Pretext.Layout" } +ferroui-pretext-media = { version = "=0.4.0", path = "FerroUI/src/Pretext/FerroUI.Pretext.Media" } +ferroui-designer-core = { version = "=0.4.0", path = "FerroUI/src/FerroUI.Designer.Core" } +ferroui-designer-project = { version = "=0.4.0", path = "FerroUI/src/FerroUI.Designer.Project" } +ferroui-designer-tools = { version = "=0.4.0", path = "FerroUI/src/FerroUI.Designer.Tools" } +ferroui-designer-language = { version = "=0.4.0", path = "FerroUI/src/FerroUI.Designer.Language" } +ferroui-designer-animation = { version = "=0.4.0", path = "FerroUI/src/FerroUI.Designer.Animation" } +ferroui-designer-collaboration = { version = "=0.4.0", path = "FerroUI/src/FerroUI.Designer.Collaboration" } +ferroui-designer-collaboration-host = { version = "=0.4.0", path = "FerroUI/src/FerroUI.Designer.Collaboration.Host" } +ferroui-designer = { version = "=0.4.0", path = "FerroUI/src/FerroUI.Designer" } ferroui-hot-reload = { version = "=0.4.0", path = "FerroUI/src/FerroUI.HotReload" } ferroui-hot-patch = { version = "=0.4.0", path = "FerroUI/src/FerroUI.HotPatch" } ferroui-inspect = { version = "=0.4.0", path = "FerroUI/src/FerroUI.Inspect" } ferroui-devtools = { version = "=0.4.0", path = "FerroUI/src/FerroUI.DevTools", default-features = false } ferroui-mcp = { version = "=0.4.0", path = "FerroUI/src/FerroUI.Mcp" } ferroui-system = { version = "=0.4.0", path = "FerroUI/src/FerroUI.System" } +ferroui-protranslate-core = { version = "=0.4.0", path = "FerroUI/src/ProTranslate/FerroUI.ProTranslate.Core" } +ferroui-protranslate-formats = { version = "=0.4.0", path = "FerroUI/src/ProTranslate/FerroUI.ProTranslate.Formats" } +ferroui-protranslate-build = { version = "=0.4.0", path = "FerroUI/src/ProTranslate/FerroUI.ProTranslate.Build" } +ferroui-protranslate-studio = { version = "=0.4.0", path = "FerroUI/src/ProTranslate/FerroUI.ProTranslate.Studio" } +ferroui-protranslate = { version = "=0.4.0", path = "FerroUI/src/ProTranslate/FerroUI.ProTranslate" } ferroui-reactive = { version = "=0.4.0", path = "FerroUI/src/FerroUI.Reactive" } ferroui-reactive-testing = { version = "=0.4.0", path = "FerroUI/src/FerroUI.Reactive.Testing" } ferroui-dependency-injection = { version = "=0.4.0", path = "FerroUI/src/FerroUI.DependencyInjection" } @@ -33,6 +61,9 @@ ferroui-view = { version = "=0.4.0", path = "FerroUI/src/FerroUI.View" } ferroui-view-macros = { version = "=0.4.0", path = "FerroUI/src/FerroUI.View.Macros" } ferroui-controls-color-picker = { version = "=0.4.0", path = "FerroUI/src/FerroUI.Controls.ColorPicker" } ferroui-controls-charts = { version = "=0.4.0", path = "FerroUI/src/FerroUI.Controls.Charts" } +ferroui-livecharts = { version = "=0.4.0", path = "FerroUI/src/FerroUI.LiveCharts" } +ferroui-controls-livecharts = { version = "=0.4.0", path = "FerroUI/src/FerroUI.Controls.LiveCharts" } +ferroui-controls-repeater = { version = "=0.4.0", path = "FerroUI/src/FerroUI.Controls.Repeater" } ferroui-controls-inking = { version = "=0.4.0", path = "FerroUI/src/FerroUI.Controls.Inking" } ferroui-treedatagrid-core = { version = "=0.4.0", path = "FerroUI/src/TreeDataGrid/FerroUI.TreeDataGrid.Core" } ferroui-controls-treedatagrid = { version = "=0.4.0", path = "FerroUI/src/TreeDataGrid/FerroUI.Controls.TreeDataGrid" } @@ -41,6 +72,7 @@ ferroui-static-view-locator-macros = { version = "=0.4.0", path = "FerroUI/src/S ferroui-static-view-locator-build = { version = "=0.4.0", path = "FerroUI/src/StaticViewLocator/FerroUI.StaticViewLocator.Build" } ferroui-markup = { version = "=0.4.0", path = "FerroUI/src/Markup/FerroUI.Markup" } ferroui-markup-xaml = { version = "=0.4.0", path = "FerroUI/src/Markup/FerroUI.Markup.Xaml" } +ferroui-markup-xaml-winui = { version = "=0.4.0", path = "FerroUI/src/Markup/FerroUI.Markup.Xaml.WinUI" } # Without the default features: the default is the run-time back end, which links the XAML runtime library # and the controls, and the build tool (`ferroui-build`) takes the compiler alone. Every crate that loads # markup at run time states the `runtime` feature. @@ -95,9 +127,28 @@ ferroui-skia = { version = "=0.4.0", path = "FerroUI/src/Skia/FerroUI.Skia" } ferroui-vello = { version = "=0.4.0", path = "FerroUI/src/Vello/FerroUI.Vello" } ferroui-harfbuzz = { version = "=0.4.0", path = "FerroUI/src/HarfBuzz/FerroUI.HarfBuzz" } bitflags = "2" +# The legacy code pages of RTF (the optional feature `rtf-codepages` of ferroui-controls, +# docs/porting/winui-rich-text.md, decision D2): strict byte decoding, no platform code page. +encoding_rs = { version = "=0.8.42", default-features = false } +# ICU4X, one version for the whole workspace (owner decision, 2026-10-30): its crates require each +# other within a minor version (`~2.4.0`), so two crates of the workspace on different minor +# versions cannot be resolved together. The text preparation of the Pretext port (segmentation) and +# the formatting of the ProTranslate port (locales, numbers, calendars, dates) take them from here, +# with the compiled data and without the default features; a crate adds the features it needs. +icu_segmenter = { version = "2.4", default-features = false, features = ["compiled_data"] } +icu_locale_core = "2.4" +icu_properties = "2.4" +icu_locale = "2.4" +icu_decimal = { version = "2.4", features = ["alloc"] } +icu_calendar = { version = "2.4", default-features = false, features = ["compiled_data"] } +icu_datetime = { version = "2.4", default-features = false, features = ["compiled_data"] } # A fast hasher for maps keyed by identities and short keys (the TreeDataGrid's recycle pools). rustc-hash = "2.1" smallvec = "1.16" +# GUIDs and UUIDs, one type for the workspace (docs/idiomatic-rust.md, section 2.2): the identifiers +# of Splat, the remote protocol and MicroCom are built on it. Without the random generator here; a +# crate that makes random identifiers adds the feature `v4`. +uuid = { version = "1.28", default-features = false, features = ["std"] } # The bindings of the Windows API for the Windows platform backend (docs/porting/win32-platform.md, # section 2). Without features here: the backend names the API namespaces it calls. windows-sys = { version = "0.61.2" }