From ebe6302baf8bc6168c92e632feb44c31e325f7e2 Mon Sep 17 00:00:00 2001 From: James Coleman Date: Tue, 29 Sep 2026 14:35:56 -0500 Subject: [PATCH] build(gui): update libcosmic to master 03d7dcb832bc - The interface moves from 87ab8179 to libcosmic master of 2026-09-24, which brings its newer winit and accesskit forks and upstream's menu, context-menu and maximized-window fixes. - The accesskit_winit build failure newer libcosmic has on Windows does not reach this build: macOS and Windows disable libcosmic's default features, a11y with them, so no accesskit crate compiles there. Enabling a11y on Windows would need a patched accesskit, as the pin's comment notes. - The lock keeps gpu-allocator on windows 0.62.2, the version wgpu-hal 28.0.1 passes it; the update had re-resolved it to an older windows, breaking the Windows build with mismatched Direct3D types, and a later cargo update can do so again. --- Cargo.lock | 74 +++++++++++------------ crates/gui/Cargo.toml | 8 ++- specs/010-graphical-interface/research.md | 21 +++++++ 3 files changed, 63 insertions(+), 40 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2e37286..8a07fa7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -21,7 +21,7 @@ checksum = "366ffbaa4442f4684d91e2cd7c5ea7c4ed8add41959a31447066e279e432b618" [[package]] name = "accesskit" version = "0.22.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" +source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" dependencies = [ "uuid", ] @@ -29,7 +29,7 @@ dependencies = [ [[package]] name = "accesskit_atspi_common" version = "0.15.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" +source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" dependencies = [ "accesskit", "accesskit_consumer", @@ -41,7 +41,7 @@ dependencies = [ [[package]] name = "accesskit_consumer" version = "0.32.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" +source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" dependencies = [ "accesskit", "hashbrown 0.16.1", @@ -50,7 +50,7 @@ dependencies = [ [[package]] name = "accesskit_macos" version = "0.23.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" +source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" dependencies = [ "accesskit", "accesskit_consumer", @@ -63,7 +63,7 @@ dependencies = [ [[package]] name = "accesskit_unix" version = "0.18.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" +source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" dependencies = [ "accesskit", "accesskit_atspi_common", @@ -78,7 +78,7 @@ dependencies = [ [[package]] name = "accesskit_windows" version = "0.30.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" +source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" dependencies = [ "accesskit", "accesskit_consumer", @@ -91,7 +91,7 @@ dependencies = [ [[package]] name = "accesskit_winit" version = "0.30.0" -source = "git+https://github.com/wash2/accesskit?tag=cosmic-0.14#f0599eed5f18111228266fe3f28991cc48b5964f" +source = "git+https://github.com/wash2/accesskit?rev=6c20249#6c20249d3b9fd45e7002efad9f6b6171a9257912" dependencies = [ "accesskit", "accesskit_macos", @@ -884,7 +884,7 @@ dependencies = [ [[package]] name = "build_helpers" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git?rev=87ab8179#87ab8179e1bd9880239c340855ae8862034bd0e8" +source = "git+https://github.com/pop-os/libcosmic.git?rev=03d7dcb832bc#03d7dcb832bc6d15bc1bb07327a1aa426b2d5bc0" dependencies = [ "cfg_aliases", ] @@ -1282,7 +1282,7 @@ dependencies = [ [[package]] name = "cosmic-config" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic.git?rev=87ab8179#87ab8179e1bd9880239c340855ae8862034bd0e8" +source = "git+https://github.com/pop-os/libcosmic.git?rev=03d7dcb832bc#03d7dcb832bc6d15bc1bb07327a1aa426b2d5bc0" dependencies = [ "atomicwrites", "cosmic-config-derive", @@ -1303,7 +1303,7 @@ dependencies = [ [[package]] name = "cosmic-config-derive" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic.git?rev=87ab8179#87ab8179e1bd9880239c340855ae8862034bd0e8" +source = "git+https://github.com/pop-os/libcosmic.git?rev=03d7dcb832bc#03d7dcb832bc6d15bc1bb07327a1aa426b2d5bc0" dependencies = [ "quote", "syn 2.0.119", @@ -1372,7 +1372,7 @@ dependencies = [ [[package]] name = "cosmic-theme" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic.git?rev=87ab8179#87ab8179e1bd9880239c340855ae8862034bd0e8" +source = "git+https://github.com/pop-os/libcosmic.git?rev=03d7dcb832bc#03d7dcb832bc6d15bc1bb07327a1aa426b2d5bc0" dependencies = [ "almost", "configparser", @@ -1855,7 +1855,7 @@ checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "dpi" version = "0.1.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" +source = "git+https://github.com/pop-os/winit.git?rev=9567503#9567503d34130113e36b0167a2b8829c3756e429" [[package]] name = "drm" @@ -2793,7 +2793,7 @@ dependencies = [ [[package]] name = "iced" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git?rev=87ab8179#87ab8179e1bd9880239c340855ae8862034bd0e8" +source = "git+https://github.com/pop-os/libcosmic.git?rev=03d7dcb832bc#03d7dcb832bc6d15bc1bb07327a1aa426b2d5bc0" dependencies = [ "build_helpers", "dnd", @@ -2815,7 +2815,7 @@ dependencies = [ [[package]] name = "iced_accessibility" version = "0.1.0" -source = "git+https://github.com/pop-os/libcosmic.git?rev=87ab8179#87ab8179e1bd9880239c340855ae8862034bd0e8" +source = "git+https://github.com/pop-os/libcosmic.git?rev=03d7dcb832bc#03d7dcb832bc6d15bc1bb07327a1aa426b2d5bc0" dependencies = [ "accesskit", "accesskit_winit", @@ -2824,7 +2824,7 @@ dependencies = [ [[package]] name = "iced_core" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git?rev=87ab8179#87ab8179e1bd9880239c340855ae8862034bd0e8" +source = "git+https://github.com/pop-os/libcosmic.git?rev=03d7dcb832bc#03d7dcb832bc6d15bc1bb07327a1aa426b2d5bc0" dependencies = [ "bitflags 2.13.2", "build_helpers", @@ -2851,7 +2851,7 @@ dependencies = [ [[package]] name = "iced_debug" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git?rev=87ab8179#87ab8179e1bd9880239c340855ae8862034bd0e8" +source = "git+https://github.com/pop-os/libcosmic.git?rev=03d7dcb832bc#03d7dcb832bc6d15bc1bb07327a1aa426b2d5bc0" dependencies = [ "iced_core", "iced_futures", @@ -2861,7 +2861,7 @@ dependencies = [ [[package]] name = "iced_futures" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git?rev=87ab8179#87ab8179e1bd9880239c340855ae8862034bd0e8" +source = "git+https://github.com/pop-os/libcosmic.git?rev=03d7dcb832bc#03d7dcb832bc6d15bc1bb07327a1aa426b2d5bc0" dependencies = [ "futures", "iced_core", @@ -2875,7 +2875,7 @@ dependencies = [ [[package]] name = "iced_graphics" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git?rev=87ab8179#87ab8179e1bd9880239c340855ae8862034bd0e8" +source = "git+https://github.com/pop-os/libcosmic.git?rev=03d7dcb832bc#03d7dcb832bc6d15bc1bb07327a1aa426b2d5bc0" dependencies = [ "bitflags 2.13.2", "bytemuck", @@ -2896,7 +2896,7 @@ dependencies = [ [[package]] name = "iced_program" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git?rev=87ab8179#87ab8179e1bd9880239c340855ae8862034bd0e8" +source = "git+https://github.com/pop-os/libcosmic.git?rev=03d7dcb832bc#03d7dcb832bc6d15bc1bb07327a1aa426b2d5bc0" dependencies = [ "iced_graphics", "iced_runtime", @@ -2905,7 +2905,7 @@ dependencies = [ [[package]] name = "iced_renderer" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git?rev=87ab8179#87ab8179e1bd9880239c340855ae8862034bd0e8" +source = "git+https://github.com/pop-os/libcosmic.git?rev=03d7dcb832bc#03d7dcb832bc6d15bc1bb07327a1aa426b2d5bc0" dependencies = [ "iced_graphics", "iced_tiny_skia", @@ -2917,7 +2917,7 @@ dependencies = [ [[package]] name = "iced_runtime" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git?rev=87ab8179#87ab8179e1bd9880239c340855ae8862034bd0e8" +source = "git+https://github.com/pop-os/libcosmic.git?rev=03d7dcb832bc#03d7dcb832bc6d15bc1bb07327a1aa426b2d5bc0" dependencies = [ "build_helpers", "bytes", @@ -2934,7 +2934,7 @@ dependencies = [ [[package]] name = "iced_tiny_skia" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git?rev=87ab8179#87ab8179e1bd9880239c340855ae8862034bd0e8" +source = "git+https://github.com/pop-os/libcosmic.git?rev=03d7dcb832bc#03d7dcb832bc6d15bc1bb07327a1aa426b2d5bc0" dependencies = [ "bytemuck", "cosmic-text", @@ -2951,7 +2951,7 @@ dependencies = [ [[package]] name = "iced_wgpu" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git?rev=87ab8179#87ab8179e1bd9880239c340855ae8862034bd0e8" +source = "git+https://github.com/pop-os/libcosmic.git?rev=03d7dcb832bc#03d7dcb832bc6d15bc1bb07327a1aa426b2d5bc0" dependencies = [ "as-raw-xcb-connection", "bitflags 2.13.2", @@ -2983,7 +2983,7 @@ dependencies = [ [[package]] name = "iced_widget" version = "0.14.2" -source = "git+https://github.com/pop-os/libcosmic.git?rev=87ab8179#87ab8179e1bd9880239c340855ae8862034bd0e8" +source = "git+https://github.com/pop-os/libcosmic.git?rev=03d7dcb832bc#03d7dcb832bc6d15bc1bb07327a1aa426b2d5bc0" dependencies = [ "build_helpers", "cosmic-client-toolkit", @@ -3003,7 +3003,7 @@ dependencies = [ [[package]] name = "iced_winit" version = "0.14.0" -source = "git+https://github.com/pop-os/libcosmic.git?rev=87ab8179#87ab8179e1bd9880239c340855ae8862034bd0e8" +source = "git+https://github.com/pop-os/libcosmic.git?rev=03d7dcb832bc#03d7dcb832bc6d15bc1bb07327a1aa426b2d5bc0" dependencies = [ "build_helpers", "cosmic-client-toolkit", @@ -3513,7 +3513,7 @@ checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "libcosmic" version = "1.0.0" -source = "git+https://github.com/pop-os/libcosmic.git?rev=87ab8179#87ab8179e1bd9880239c340855ae8862034bd0e8" +source = "git+https://github.com/pop-os/libcosmic.git?rev=03d7dcb832bc#03d7dcb832bc6d15bc1bb07327a1aa426b2d5bc0" dependencies = [ "apply", "ashpd 0.12.3", @@ -7724,7 +7724,7 @@ checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" [[package]] name = "winit" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" +source = "git+https://github.com/pop-os/winit.git?rev=9567503#9567503d34130113e36b0167a2b8829c3756e429" dependencies = [ "bitflags 2.13.2", "cfg_aliases", @@ -7750,7 +7750,7 @@ dependencies = [ [[package]] name = "winit-android" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" +source = "git+https://github.com/pop-os/winit.git?rev=9567503#9567503d34130113e36b0167a2b8829c3756e429" dependencies = [ "android-activity", "bitflags 2.13.2", @@ -7765,7 +7765,7 @@ dependencies = [ [[package]] name = "winit-appkit" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" +source = "git+https://github.com/pop-os/winit.git?rev=9567503#9567503d34130113e36b0167a2b8829c3756e429" dependencies = [ "bitflags 2.13.2", "block2 0.6.2", @@ -7787,7 +7787,7 @@ dependencies = [ [[package]] name = "winit-common" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" +source = "git+https://github.com/pop-os/winit.git?rev=9567503#9567503d34130113e36b0167a2b8829c3756e429" dependencies = [ "memmap2 0.9.11", "objc2 0.6.4", @@ -7802,7 +7802,7 @@ dependencies = [ [[package]] name = "winit-core" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" +source = "git+https://github.com/pop-os/winit.git?rev=9567503#9567503d34130113e36b0167a2b8829c3756e429" dependencies = [ "bitflags 2.13.2", "cursor-icon", @@ -7816,7 +7816,7 @@ dependencies = [ [[package]] name = "winit-orbital" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" +source = "git+https://github.com/pop-os/winit.git?rev=9567503#9567503d34130113e36b0167a2b8829c3756e429" dependencies = [ "bitflags 2.13.2", "dpi", @@ -7832,7 +7832,7 @@ dependencies = [ [[package]] name = "winit-uikit" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" +source = "git+https://github.com/pop-os/winit.git?rev=9567503#9567503d34130113e36b0167a2b8829c3756e429" dependencies = [ "bitflags 2.13.2", "block2 0.6.2", @@ -7852,7 +7852,7 @@ dependencies = [ [[package]] name = "winit-wayland" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" +source = "git+https://github.com/pop-os/winit.git?rev=9567503#9567503d34130113e36b0167a2b8829c3756e429" dependencies = [ "ahash", "bitflags 2.13.2", @@ -7878,7 +7878,7 @@ dependencies = [ [[package]] name = "winit-web" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" +source = "git+https://github.com/pop-os/winit.git?rev=9567503#9567503d34130113e36b0167a2b8829c3756e429" dependencies = [ "atomic-waker", "bitflags 2.13.2", @@ -7900,7 +7900,7 @@ dependencies = [ [[package]] name = "winit-win32" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" +source = "git+https://github.com/pop-os/winit.git?rev=9567503#9567503d34130113e36b0167a2b8829c3756e429" dependencies = [ "bitflags 2.13.2", "cursor-icon", @@ -7916,7 +7916,7 @@ dependencies = [ [[package]] name = "winit-x11" version = "0.31.0-beta.2" -source = "git+https://github.com/pop-os/winit.git?tag=cosmic-0.14#71ce08c043814514a8fd92d9d0599f115ae854e8" +source = "git+https://github.com/pop-os/winit.git?rev=9567503#9567503d34130113e36b0167a2b8829c3756e429" dependencies = [ "bitflags 2.13.2", "bytemuck", diff --git a/crates/gui/Cargo.toml b/crates/gui/Cargo.toml index 1555151..9e5f7e9 100644 --- a/crates/gui/Cargo.toml +++ b/crates/gui/Cargo.toml @@ -27,17 +27,19 @@ tracing.workspace = true # deliberate and re-verified by hand (research R-001). [target.'cfg(target_os = "macos")'.dependencies.libcosmic] git = "https://github.com/pop-os/libcosmic.git" -rev = "87ab8179" +rev = "03d7dcb832bc" default-features = false features = ["winit", "wgpu", "tokio", "multi-window"] [target.'cfg(target_os = "linux")'.dependencies.libcosmic] git = "https://github.com/pop-os/libcosmic.git" -rev = "87ab8179" +rev = "03d7dcb832bc" features = ["winit", "wgpu", "tokio", "multi-window", "wayland"] +# Without `a11y` no accesskit crate is built here, so the accesskit_winit fix newer libcosmic needs +# on Windows does not apply; enabling it would need the override in R-001. [target.'cfg(windows)'.dependencies.libcosmic] git = "https://github.com/pop-os/libcosmic.git" -rev = "87ab8179" +rev = "03d7dcb832bc" default-features = false features = ["winit", "wgpu", "tokio", "multi-window"] diff --git a/specs/010-graphical-interface/research.md b/specs/010-graphical-interface/research.md index 4165b0f..f0768e4 100644 --- a/specs/010-graphical-interface/research.md +++ b/specs/010-graphical-interface/research.md @@ -35,6 +35,27 @@ Linux-oriented and must be turned off on macOS. **Alternatives considered**: `iced` directly (libcosmic is built on it) — rejected because the user specified libcosmic and the spike proved it viable. `egui` — rejected for the same reason. +**Bumped to `03d7dcb832bc`** (libcosmic master of 2026-09-24, nine commits after `87ab8179`) on +2026-09-29: + +- The Windows failure the owner's notes (`veris/docs/libcosmic.md`) describe, `accesskit_winit` + passing `&Window` where winit now has a trait, is still there at accesskit `6c20249`, but it does + not reach this build: macOS and Windows turn libcosmic's default features off, `a11y` with them, + so no accesskit crate is compiled there. Linux builds `accesskit_winit` with its Unix backend, + which is unaffected. Enabling `a11y` on Windows would need the notes' `[patch]` of + `wash2/accesskit` to a fork with the fix, rebased onto the accesskit revision libcosmic then + uses. +- `cargo update -p libcosmic` re-resolved `gpu-allocator`'s range for the `windows` crate to 0.57, + then 0.61, which the newer accesskit and `ble-peripheral-rust` bring in. `wgpu-hal` 28.0.1 passes + it `windows` 0.62 types, so the Windows build failed with mismatched `ID3D12Device` types. The + lock file names `windows` 0.62.2 for `gpu-allocator`, as it did before the bump; check it after + any `cargo update`, which may move it again. +- The window at `03d7dcb832bc`: on macOS it opened with its menus; on Linux the AppImage's window + rendered on X11 in XFCE; the Windows build passed its tests on the test machine, but the window + was not seen there, the machine's desktop being in use. +- libcosmic's X11 attributes are still overwritten by its Wayland ones + (`iced/winit/src/conversion.rs`), so the X11 window class still comes from `argv[0]` (R-104). + --- ## R-025: What building the window found that no test had