From 9cebfa128f08d533b2d975c8abf4af74c4399ea3 Mon Sep 17 00:00:00 2001 From: jess Date: Sun, 17 May 2026 00:53:45 -0700 Subject: [PATCH] Begin port of front end to ICED. --- Cargo.lock | 1135 +++++++++++++++++++++++++++++++---- Cargo.toml | 1 + frontend/iced/Cargo.toml | 21 + frontend/iced/src/main.rs | 74 +++ tools/cargo-run/src/lib.rs | 2 + tools/cargo-run/src/main.rs | 8 + 6 files changed, 1134 insertions(+), 107 deletions(-) create mode 100644 frontend/iced/Cargo.toml create mode 100644 frontend/iced/src/main.rs diff --git a/Cargo.lock b/Cargo.lock index 13ba7813..43f82813 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -309,13 +309,19 @@ name = "blending-nodes" version = "0.1.0" dependencies = [ "core-types", - "glam", + "glam 0.32.1", "graphic-types", "node-macro", "serde", "vector-types", ] +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + [[package]] name = "block-buffer" version = "0.10.4" @@ -358,7 +364,7 @@ version = "0.1.0" dependencies = [ "core-types", "dyn-any", - "glam", + "glam 0.32.1", "graphene-hash", "node-macro", "raster-nodes", @@ -420,6 +426,20 @@ dependencies = [ "libbz2-rs-sys", ] +[[package]] +name = "calloop" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b99da2f8558ca23c71f4fd15dc57c906239752dd27ff3c00a1d56b685b7cbfec" +dependencies = [ + "bitflags 2.11.0", + "log", + "polling", + "rustix 0.38.44", + "slab", + "thiserror 1.0.69", +] + [[package]] name = "calloop" version = "0.14.3" @@ -428,7 +448,7 @@ checksum = "cb9f6e1368bd4621d2c86baa7e37de77a938adf5221e5dd3d6133340101b309e" dependencies = [ "bitflags 2.11.0", "polling", - "rustix", + "rustix 1.0.8", "slab", "tracing", ] @@ -439,8 +459,8 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "138efcf0940a02ebf0cc8d1eff41a1682a46b431630f4c52450d6265876021fa" dependencies = [ - "calloop", - "rustix", + "calloop 0.14.3", + "rustix 1.0.8", "wayland-backend", "wayland-client", ] @@ -579,7 +599,7 @@ dependencies = [ "serde_json", "thiserror 2.0.18", "tracing", - "wgpu", + "wgpu 29.0.3", "windows 0.62.2", "windows-sys 0.61.2", ] @@ -743,6 +763,17 @@ dependencies = [ "cc", ] +[[package]] +name = "codespan-reporting" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" +dependencies = [ + "serde", + "termcolor", + "unicode-width", +] + [[package]] name = "codespan-reporting" version = "0.13.1" @@ -878,6 +909,41 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "core-graphics" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "core-graphics-types 0.1.3", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" +dependencies = [ + "bitflags 1.3.2", + "core-foundation 0.9.4", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.11.0", + "core-foundation 0.10.1", + "libc", +] + [[package]] name = "core-types" version = "0.1.0" @@ -888,7 +954,7 @@ dependencies = [ "color", "ctor", "dyn-any", - "glam", + "glam 0.32.1", "graphene-hash", "image", "kurbo", @@ -905,7 +971,7 @@ dependencies = [ "rustc-hash 2.1.1", "serde", "serde_json", - "skrifa", + "skrifa 0.42.1", "tinyvec", "tokio", "tsify", @@ -921,6 +987,30 @@ dependencies = [ "libm", ] +[[package]] +name = "cosmic-text" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173852283a9a57a3cbe365d86e74dc428a09c50421477d5ad6fe9d9509e37737" +dependencies = [ + "bitflags 2.11.0", + "fontdb", + "harfrust 0.3.2", + "linebender_resource_handle", + "log", + "rangemap", + "rustc-hash 1.1.0", + "self_cell", + "skrifa 0.37.0", + "smol_str 0.2.2", + "swash", + "sys-locale", + "unicode-bidi", + "unicode-linebreak", + "unicode-script", + "unicode-segmentation", +] + [[package]] name = "cpufeatures" version = "0.2.17" @@ -1022,6 +1112,19 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" +[[package]] +name = "cryoglyph" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08bc795bdbccdbd461736fb163930a009da6597b226d6f6fce33e7a8eb6ec519" +dependencies = [ + "cosmic-text", + "etagere", + "lru", + "rustc-hash 2.1.1", + "wgpu 27.0.1", +] + [[package]] name = "crypto-common" version = "0.1.6" @@ -1177,6 +1280,12 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "dispatch" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" + [[package]] name = "dispatch2" version = "0.3.0" @@ -1283,7 +1392,7 @@ name = "dyn-any" version = "0.3.1" dependencies = [ "dyn-any-derive", - "glam", + "glam 0.32.1", "reqwest", ] @@ -1386,6 +1495,16 @@ version = "3.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" +[[package]] +name = "etagere" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc89bf99e5dc15954a60f707c1e09d7540e5cd9af85fa75caa0b510bc08c5342" +dependencies = [ + "euclid", + "svg_fmt", +] + [[package]] name = "euclid" version = "0.22.14" @@ -1428,7 +1547,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce92ff622d6dadf7349484f42c93271a0d49b7cc4d466a936405bacbe10aa78" dependencies = [ "cfg-if", - "rustix", + "rustix 1.0.8", "windows-sys 0.59.0", ] @@ -1503,6 +1622,15 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" +[[package]] +name = "font-types" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39a654f404bbcbd48ea58c617c2993ee91d1cb63727a37bf2323a4edeed1b8c5" +dependencies = [ + "bytemuck", +] + [[package]] name = "font-types" version = "0.11.3" @@ -1549,7 +1677,7 @@ dependencies = [ "objc2-core-text", "objc2-foundation 0.3.2", "parlance", - "read-fonts", + "read-fonts 0.39.2", "roxmltree 0.21.1", "smallvec", "windows 0.62.2", @@ -1557,6 +1685,33 @@ dependencies = [ "yeslogic-fontconfig-sys", ] +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.106", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + [[package]] name = "form_urlencoded" version = "1.2.2" @@ -1698,7 +1853,7 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc257fdb4038301ce4b9cd1b3b51704509692bb3ff716a410cbd07925d9dae55" dependencies = [ - "rustix", + "rustix 1.0.8", "windows-targets 0.52.6", ] @@ -1765,6 +1920,12 @@ dependencies = [ "xml-rs", ] +[[package]] +name = "glam" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "151665d9be52f9bb40fc7966565d39666f2d1e69233571b71b87791c7e0528b3" + [[package]] name = "glam" version = "0.32.1" @@ -1782,6 +1943,18 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" +[[package]] +name = "glow" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e5ea60d70410161c8bf5da3fdfeaa1c72ed2c15f8bbb9d19fe3a4fad085f08" +dependencies = [ + "js-sys", + "slotmap", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "glow" version = "0.17.0" @@ -1803,6 +1976,37 @@ dependencies = [ "gl_generator", ] +[[package]] +name = "gpu-alloc" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" +dependencies = [ + "bitflags 2.11.0", + "gpu-alloc-types", +] + +[[package]] +name = "gpu-alloc-types" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" +dependencies = [ + "bitflags 2.11.0", +] + +[[package]] +name = "gpu-allocator" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c151a2a5ef800297b4e79efa4f4bec035c5f51d5ae587287c9b952bdf734cacd" +dependencies = [ + "log", + "presser", + "thiserror 1.0.69", + "windows 0.58.0", +] + [[package]] name = "gpu-allocator" version = "0.28.0" @@ -1845,7 +2049,7 @@ dependencies = [ "core-types", "criterion", "dyn-any", - "glam", + "glam 0.32.1", "graph-craft", "graphene-application-io", "graphene-core", @@ -1869,7 +2073,7 @@ dependencies = [ "wasm-bindgen", "web-sys", "wgpu-executor", - "winit", + "winit 0.30.12", ] [[package]] @@ -1878,13 +2082,13 @@ version = "0.1.0" dependencies = [ "core-types", "dyn-any", - "glam", + "glam 0.32.1", "log", "serde", "text-nodes", "vector-types", "web-sys", - "wgpu", + "wgpu 29.0.3", ] [[package]] @@ -1893,14 +2097,14 @@ version = "0.1.0" dependencies = [ "core-types", "dyn-any", - "glam", + "glam 0.32.1", "graphene-application-io", "log", "serde", "text-nodes", "vector-types", "web-sys", - "wgpu", + "wgpu 29.0.3", "wgpu-executor", ] @@ -1919,7 +2123,7 @@ dependencies = [ "log", "preprocessor", "tokio", - "wgpu", + "wgpu 29.0.3", "wgpu-executor", ] @@ -1929,7 +2133,7 @@ version = "0.1.0" dependencies = [ "core-types", "dyn-any", - "glam", + "glam 0.32.1", "graphene-hash", "graphic-types", "log", @@ -1944,7 +2148,7 @@ dependencies = [ name = "graphene-hash" version = "0.0.0" dependencies = [ - "glam", + "glam 0.32.1", "graphene-hash-derive", ] @@ -1967,7 +2171,7 @@ dependencies = [ "brush-nodes", "core-types", "dyn-any", - "glam", + "glam 0.32.1", "graph-craft", "graphene-application-io", "graphene-canvas-utils", @@ -1993,7 +2197,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "wgpu", + "wgpu 29.0.3", "wgpu-executor", ] @@ -2003,7 +2207,7 @@ version = "0.1.0" dependencies = [ "core-types", "dyn-any", - "glam", + "glam 0.32.1", "graphic-types", "node-macro", "raster-types", @@ -2017,7 +2221,7 @@ version = "0.1.0" dependencies = [ "core-types", "dyn-any", - "glam", + "glam 0.32.1", "graphene-hash", "node-macro", "raster-types", @@ -2040,7 +2244,7 @@ dependencies = [ "dirs", "fd-lock", "futures", - "glam", + "glam 0.32.1", "graphite-desktop-embedded-resources", "graphite-desktop-wrapper", "interprocess", @@ -2059,10 +2263,10 @@ dependencies = [ "tracing", "tracing-subscriber", "vello", - "wgpu", + "wgpu 29.0.3", "window_clipboard", "windows 0.58.0", - "winit", + "winit 0.30.12", ] [[package]] @@ -2121,7 +2325,7 @@ dependencies = [ "thiserror 2.0.18", "tracing", "vello", - "wgpu", + "wgpu 29.0.3", "wgpu-executor", ] @@ -2136,7 +2340,7 @@ dependencies = [ "dyn-any", "env_logger", "futures", - "glam", + "glam 0.32.1", "graph-craft", "graphene-hash", "graphene-std", @@ -2163,6 +2367,17 @@ dependencies = [ "wgpu-executor", ] +[[package]] +name = "graphite-iced-frontend" +version = "0.0.0" +dependencies = [ + "graphite-editor", + "iced", + "rand", + "tracing", + "tracing-subscriber", +] + [[package]] name = "graphite-proc-macros" version = "0.0.0" @@ -2193,7 +2408,17 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "wgpu", + "wgpu 29.0.3", +] + +[[package]] +name = "guillotiere" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" +dependencies = [ + "euclid", + "svg_fmt", ] [[package]] @@ -2275,6 +2500,19 @@ dependencies = [ "serde", ] +[[package]] +name = "harfrust" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c020db12c71d8a12a3fe7607873cade3a01a6287e29d540c8723276221b9d8" +dependencies = [ + "bitflags 2.11.0", + "bytemuck", + "core_maths", + "read-fonts 0.35.0", + "smallvec", +] + [[package]] name = "harfrust" version = "0.6.0" @@ -2284,7 +2522,7 @@ dependencies = [ "bitflags 2.11.0", "bytemuck", "core_maths", - "read-fonts", + "read-fonts 0.39.2", "smallvec", ] @@ -2475,6 +2713,172 @@ dependencies = [ "cc", ] +[[package]] +name = "iced" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000e01026c93ba643f8357a3db3ada0e6555265a377f6f9291c472f6dd701fb3" +dependencies = [ + "iced_core", + "iced_debug", + "iced_futures", + "iced_renderer", + "iced_runtime", + "iced_widget", + "iced_winit", + "thiserror 2.0.18", +] + +[[package]] +name = "iced_core" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ab1937d699403e7e69252ae743a902bcee9f4ab2052cc4c9a46fcf34729d85" +dependencies = [ + "bitflags 2.11.0", + "bytes", + "glam 0.25.0", + "lilt", + "log", + "num-traits", + "rustc-hash 2.1.1", + "smol_str 0.2.2", + "thiserror 2.0.18", + "web-time", +] + +[[package]] +name = "iced_debug" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25035ab0215a620e53f4103e36fc4e59a1fb2817e4bfc38a30ad27b4202ea0be" +dependencies = [ + "iced_core", + "iced_futures", + "log", +] + +[[package]] +name = "iced_futures" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c0c85ccad42dfbec7293c36c018af0ea0dbcc52d137a4a9a0b0f6822a3fdf0a" +dependencies = [ + "futures", + "iced_core", + "log", + "rustc-hash 2.1.1", + "tokio", + "wasm-bindgen-futures", + "wasmtimer", +] + +[[package]] +name = "iced_graphics" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234ca1c2cec4155055f68fa5fad1b5242c496ac8238d80a259bca382fb44a102" +dependencies = [ + "bitflags 2.11.0", + "bytemuck", + "cosmic-text", + "half", + "iced_core", + "iced_futures", + "log", + "raw-window-handle", + "rustc-hash 2.1.1", + "thiserror 2.0.18", + "unicode-segmentation", +] + +[[package]] +name = "iced_program" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dfafec2947cda688d8eb00dac337ba11aa60f9ef6335aed343e189d26e4a673" +dependencies = [ + "iced_graphics", + "iced_runtime", +] + +[[package]] +name = "iced_renderer" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250cc0802408e8c077986ec56c7d07c65f423ee658a4b9fd795a1f2aae5dac05" +dependencies = [ + "iced_graphics", + "iced_wgpu", + "log", + "thiserror 2.0.18", +] + +[[package]] +name = "iced_runtime" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1889b819ce4c06674183242e336c8d49465665441396914dc07cc86f44fa8d4" +dependencies = [ + "bytes", + "iced_core", + "iced_futures", + "raw-window-handle", + "thiserror 2.0.18", +] + +[[package]] +name = "iced_wgpu" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff144a999b0ca0f8a10257934500060240825c42e950ec0ebee9c8ae30561c13" +dependencies = [ + "bitflags 2.11.0", + "bytemuck", + "cryoglyph", + "futures", + "glam 0.25.0", + "guillotiere 0.6.2", + "iced_debug", + "iced_graphics", + "log", + "rustc-hash 2.1.1", + "thiserror 2.0.18", + "wgpu 27.0.1", +] + +[[package]] +name = "iced_widget" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1596afa0d3109c2618e8bc12bae6c11d3064df8f95c42dfce570397dbe957ab" +dependencies = [ + "iced_renderer", + "log", + "num-traits", + "rustc-hash 2.1.1", + "thiserror 2.0.18", + "unicode-segmentation", +] + +[[package]] +name = "iced_winit" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b7dbedc47562d1de3b9707d939f678b88c382004b7ab5a18f7a7dd723162d75" +dependencies = [ + "iced_debug", + "iced_program", + "log", + "rustc-hash 2.1.1", + "thiserror 2.0.18", + "tracing", + "wasm-bindgen-futures", + "web-sys", + "window_clipboard", + "winit 0.30.13", +] + [[package]] name = "icu_collections" version = "2.2.0" @@ -2704,7 +3108,7 @@ dependencies = [ "criterion", "dyn-any", "futures", - "glam", + "glam 0.32.1", "graph-craft", "graphene-core", "graphene-std", @@ -2956,7 +3360,16 @@ checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" dependencies = [ "bitflags 2.11.0", "libc", - "redox_syscall", + "redox_syscall 0.5.17", +] + +[[package]] +name = "lilt" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f67562e5eff6b20553fa9be1c503356768420994e28f67e3eafe6f41910e57ad" +dependencies = [ + "web-time", ] [[package]] @@ -2978,6 +3391,12 @@ dependencies = [ "smallvec", ] +[[package]] +name = "linux-raw-sys" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + [[package]] name = "linux-raw-sys" version = "0.9.4" @@ -3012,6 +3431,12 @@ version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" +[[package]] +name = "lru" +version = "0.16.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f66e8d5d03f609abc3a39e6f08e4164ebf1447a732906d39eb9b99b7919ef39" + [[package]] name = "lru-slab" version = "0.1.2" @@ -3044,6 +3469,15 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + [[package]] name = "markup5ever" version = "0.36.1" @@ -3069,7 +3503,7 @@ name = "math-nodes" version = "0.1.0" dependencies = [ "core-types", - "glam", + "glam 0.32.1", "graphic-types", "log", "math-parser", @@ -3115,6 +3549,21 @@ dependencies = [ "libc", ] +[[package]] +name = "metal" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605" +dependencies = [ + "bitflags 2.11.0", + "block", + "core-graphics-types 0.2.0", + "foreign-types", + "log", + "objc", + "paste", +] + [[package]] name = "mime" version = "0.3.17" @@ -3160,6 +3609,32 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "naga" +version = "27.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "066cf25f0e8b11ee0df221219010f213ad429855f57c494f995590c861a9a7d8" +dependencies = [ + "arrayvec", + "bit-set 0.8.0", + "bitflags 2.11.0", + "cfg-if", + "cfg_aliases", + "codespan-reporting 0.12.0", + "half", + "hashbrown 0.16.0", + "hexf-parse", + "indexmap", + "libm", + "log", + "num-traits", + "once_cell", + "rustc-hash 1.1.0", + "spirv 0.3.0+sdk-1.3.268.0", + "thiserror 2.0.18", + "unicode-ident", +] + [[package]] name = "naga" version = "29.0.3" @@ -3171,7 +3646,7 @@ dependencies = [ "bitflags 2.11.0", "cfg-if", "cfg_aliases", - "codespan-reporting", + "codespan-reporting 0.13.1", "half", "hashbrown 0.16.0", "hexf-parse", @@ -3257,7 +3732,7 @@ dependencies = [ "bytemuck", "core-types", "dyn-any", - "glam", + "glam 0.32.1", "graphene-hash", "half", "log", @@ -3375,6 +3850,15 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + [[package]] name = "objc-sys" version = "0.3.5" @@ -3429,6 +3913,30 @@ dependencies = [ "objc2-foundation 0.3.2", ] +[[package]] +name = "objc2-cloud-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74dd3b56391c7a0596a295029734d3c1c5e7e510a4cb30245f8221ccea96b009" +dependencies = [ + "bitflags 2.11.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-contacts" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5ff520e9c33812fd374d8deecef01d4a840e7b41862d849513de77e44aa4889" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + [[package]] name = "objc2-core-data" version = "0.2.2" @@ -3476,6 +3984,18 @@ dependencies = [ "objc2-metal 0.2.2", ] +[[package]] +name = "objc2-core-location" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "000cfee34e683244f284252ee206a27953279d370e309649dc3ee317b37e5781" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-contacts", + "objc2-foundation 0.2.2", +] + [[package]] name = "objc2-core-text" version = "0.3.2" @@ -3511,6 +4031,7 @@ checksum = "0ee638a5da3799329310ad4cfa62fbf045d5f56e3ef5ba4149e7452dcf89d5a8" dependencies = [ "bitflags 2.11.0", "block2 0.5.1", + "dispatch", "libc", "objc2 0.5.2", ] @@ -3541,6 +4062,18 @@ dependencies = [ "objc2-foundation 0.3.2", ] +[[package]] +name = "objc2-link-presentation" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1a1ae721c5e35be65f01a03b6d2ac13a54cb4fa70d8a5da293d7b0020261398" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", +] + [[package]] name = "objc2-metal" version = "0.2.2" @@ -3594,6 +4127,37 @@ dependencies = [ "objc2-metal 0.3.2", ] +[[package]] +name = "objc2-symbols" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a684efe3dec1b305badae1a28f6555f6ddd3bb2c2267896782858d5a78404dc" +dependencies = [ + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bb46798b20cd6b91cbd113524c490f1686f4c4e8f49502431415f3512e2b6f" +dependencies = [ + "bitflags 2.11.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-cloud-kit", + "objc2-core-data", + "objc2-core-image", + "objc2-core-location", + "objc2-foundation 0.2.2", + "objc2-link-presentation", + "objc2-quartz-core 0.2.2", + "objc2-symbols", + "objc2-uniform-type-identifiers", + "objc2-user-notifications", +] + [[package]] name = "objc2-ui-kit" version = "0.3.2" @@ -3606,6 +4170,30 @@ dependencies = [ "objc2-foundation 0.3.2", ] +[[package]] +name = "objc2-uniform-type-identifiers" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44fa5f9748dbfe1ca6c0b79ad20725a11eca7c2218bceb4b005cb1be26273bfe" +dependencies = [ + "block2 0.5.1", + "objc2 0.5.2", + "objc2-foundation 0.2.2", +] + +[[package]] +name = "objc2-user-notifications" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76cfcbf642358e8689af64cee815d139339f3ed8ad05103ed5eaf73db8d84cb3" +dependencies = [ + "bitflags 2.11.0", + "block2 0.5.1", + "objc2 0.5.2", + "objc2-core-location", + "objc2-foundation 0.2.2", +] + [[package]] name = "object" version = "0.36.7" @@ -3710,7 +4298,7 @@ checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", - "redox_syscall", + "redox_syscall 0.5.17", "smallvec", "windows-targets 0.52.6", ] @@ -3728,7 +4316,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fad031076f48f0d4d85ce1aea9b94b4e715a4d636a030a123038f8f5b5e4343" dependencies = [ "fontique", - "harfrust", + "harfrust 0.6.0", "hashbrown 0.17.1", "icu_normalizer", "icu_properties", @@ -3736,7 +4324,7 @@ dependencies = [ "linebender_resource_handle", "parlance", "parley_data", - "skrifa", + "skrifa 0.42.1", ] [[package]] @@ -3748,12 +4336,18 @@ dependencies = [ "icu_properties", ] +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + [[package]] name = "path-bool-nodes" version = "0.1.0" dependencies = [ "core-types", - "glam", + "glam 0.32.1", "graphic-types", "linesweeper", "log", @@ -4025,7 +4619,7 @@ dependencies = [ "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix", + "rustix 1.0.8", "windows-sys 0.60.2", ] @@ -4292,6 +4886,12 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3d6831663a5098ea164f89cff59c6284e95f4e3c76ce9848d4529f5ccca9bde" +[[package]] +name = "rangemap" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "973443cf09a9c8656b574a866ab68dfa19f0867d0340648c7d2f6a71b8a8ea68" + [[package]] name = "raster-nodes" version = "0.1.0" @@ -4301,7 +4901,7 @@ dependencies = [ "dyn-any", "fastnoise-lite", "futures", - "glam", + "glam 0.32.1", "graphene-hash", "image", "kurbo", @@ -4347,7 +4947,7 @@ dependencies = [ "bytemuck", "core-types", "dyn-any", - "glam", + "glam 0.32.1", "graphene-hash", "image", "node-macro", @@ -4355,7 +4955,7 @@ dependencies = [ "serde_json", "tsify", "wasm-bindgen", - "wgpu", + "wgpu 29.0.3", ] [[package]] @@ -4408,6 +5008,27 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "read-fonts" +version = "0.35.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6717cf23b488adf64b9d711329542ba34de147df262370221940dfabc2c91358" +dependencies = [ + "bytemuck", + "core_maths", + "font-types 0.10.1", +] + +[[package]] +name = "read-fonts" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b634fabf032fab15307ffd272149b622260f55974d9fad689292a5d33df02e5" +dependencies = [ + "bytemuck", + "font-types 0.11.3", +] + [[package]] name = "read-fonts" version = "0.39.2" @@ -4416,7 +5037,7 @@ checksum = "c4ed38b89c2c77ff968c524145ad65fb010f38af5c7a224b53b81d47ac2daa81" dependencies = [ "bytemuck", "core_maths", - "font-types", + "font-types 0.11.3", ] [[package]] @@ -4425,6 +5046,15 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3edd4d5d42c92f0a659926464d4cce56b562761267ecf0f469d85b7de384175" +[[package]] +name = "redox_syscall" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +dependencies = [ + "bitflags 1.3.2", +] + [[package]] name = "redox_syscall" version = "0.5.17" @@ -4487,7 +5117,7 @@ dependencies = [ "base64", "core-types", "dyn-any", - "glam", + "glam 0.32.1", "graphene-hash", "graphic-types", "kurbo", @@ -4506,7 +5136,7 @@ version = "0.1.0" dependencies = [ "core-types", "dyn-any", - "glam", + "glam 0.32.1", "graphene-core", "graphic-types", "kurbo", @@ -4681,6 +5311,19 @@ dependencies = [ "semver", ] +[[package]] +name = "rustix" +version = "0.38.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +dependencies = [ + "bitflags 2.11.0", + "errno", + "libc", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + [[package]] name = "rustix" version = "1.0.8" @@ -4690,7 +5333,7 @@ dependencies = [ "bitflags 2.11.0", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.9.4", "windows-sys 0.60.2", ] @@ -4910,6 +5553,12 @@ dependencies = [ "smallvec", ] +[[package]] +name = "self_cell" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b12e76d157a900eb52e81bc6e9f3069344290341720e9178cde2407113ac8d89" + [[package]] name = "semver" version = "1.0.26" @@ -5085,6 +5734,26 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" +[[package]] +name = "skrifa" +version = "0.37.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c31071dedf532758ecf3fed987cdb4bd9509f900e026ab684b4ecb81ea49841" +dependencies = [ + "bytemuck", + "read-fonts 0.35.0", +] + +[[package]] +name = "skrifa" +version = "0.40.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fbdfe3d2475fbd7ddd1f3e5cf8288a30eb3e5f95832829570cd88115a7434ac" +dependencies = [ + "bytemuck", + "read-fonts 0.37.0", +] + [[package]] name = "skrifa" version = "0.42.1" @@ -5092,7 +5761,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c34617370ae968efb7161bb2beb517d9084659aae19e24b89e3db25b46e4564" dependencies = [ "bytemuck", - "read-fonts", + "read-fonts 0.39.2", ] [[package]] @@ -5126,13 +5795,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0512da38f5e2b31201a93524adb8d3136276fa4fe4aafab4e1f727a82b534cc0" dependencies = [ "bitflags 2.11.0", - "calloop", + "calloop 0.14.3", "calloop-wayland-source", "cursor-icon", "libc", "log", "memmap2", - "rustix", + "rustix 1.0.8", "thiserror 2.0.18", "wayland-backend", "wayland-client", @@ -5157,6 +5826,15 @@ dependencies = [ "wayland-backend", ] +[[package]] +name = "smol_str" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd538fb6910ac1099850255cf94a94df6551fbdd602454387d0adb2d1ca6dead" +dependencies = [ + "serde", +] + [[package]] name = "smol_str" version = "0.3.2" @@ -5241,7 +5919,7 @@ checksum = "68cdc5ca01151f2627fdf1cff34bf6452f5dc212a6d09f4aa5a9b4f17e9bc8e3" dependencies = [ "bitflags 1.3.2", "bytemuck", - "glam", + "glam 0.32.1", "libm", "num-traits", "spirv-std-macros", @@ -5360,6 +6038,17 @@ dependencies = [ "siphasher", ] +[[package]] +name = "swash" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "842f3cd369c2ba38966204f983eaa5e54a8e84a7d7159ed36ade2b6c335aae64" +dependencies = [ + "skrifa 0.40.0", + "yazi", + "zeno", +] + [[package]] name = "syn" version = "1.0.109" @@ -5402,6 +6091,15 @@ dependencies = [ "syn 2.0.106", ] +[[package]] +name = "sys-locale" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8eab9a99a024a169fe8a903cf9d4a3b3601109bcc13bd9e3c6fff259138626c4" +dependencies = [ + "libc", +] + [[package]] name = "system-configuration" version = "0.6.1" @@ -5462,7 +6160,7 @@ dependencies = [ "core-types", "dyn-any", "fancy-regex", - "glam", + "glam 0.32.1", "graphene-hash", "log", "node-macro", @@ -5470,7 +6168,7 @@ dependencies = [ "raster-types", "serde", "serde_json", - "skrifa", + "skrifa 0.42.1", "titlecase", "tsify", "unicode-segmentation", @@ -5865,7 +6563,7 @@ name = "transform-nodes" version = "0.1.0" dependencies = [ "core-types", - "glam", + "glam 0.32.1", "graphic-types", "node-macro", "rand", @@ -5954,6 +6652,12 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" +[[package]] +name = "unicode-linebreak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" + [[package]] name = "unicode-properties" version = "0.1.3" @@ -6107,7 +6811,7 @@ dependencies = [ "core-types", "dyn-any", "futures", - "glam", + "glam 0.32.1", "graphene-core", "graphene-hash", "graphic-types", @@ -6134,7 +6838,7 @@ dependencies = [ "core-types", "dyn-any", "fixedbitset", - "glam", + "glam 0.32.1", "graphene-hash", "kurbo", "log", @@ -6161,12 +6865,12 @@ dependencies = [ "log", "peniko", "png 0.18.1", - "skrifa", + "skrifa 0.42.1", "static_assertions", "thiserror 2.0.18", "vello_encoding", "vello_shaders", - "wgpu", + "wgpu 29.0.3", ] [[package]] @@ -6176,9 +6880,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2346f5f0d7dccb3582fcd397b4a57b43165209f1424e0d76e85dd814db164af7" dependencies = [ "bytemuck", - "guillotiere", + "guillotiere 0.7.0", "peniko", - "skrifa", + "skrifa 0.42.1", "smallvec", ] @@ -6190,7 +6894,7 @@ checksum = "9dd38937516fa4b47423d9255bb5e4a65e839ec9d57c38c4af6189ce56bf46b7" dependencies = [ "bytemuck", "log", - "naga", + "naga 29.0.3", "thiserror 2.0.18", "vello_encoding", ] @@ -6290,6 +6994,20 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "wasmtimer" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c598d6b99ea013e35844697fc4670d08339d5cda15588f193c6beedd12f644b" +dependencies = [ + "futures", + "js-sys", + "parking_lot", + "pin-utils", + "slab", + "wasm-bindgen", +] + [[package]] name = "wayland-backend" version = "0.3.11" @@ -6298,7 +7016,7 @@ checksum = "673a33c33048a5ade91a6b139580fa174e19fb0d23f396dca9fa15f2e1e49b35" dependencies = [ "cc", "downcast-rs", - "rustix", + "rustix 1.0.8", "scoped-tls", "smallvec", "wayland-sys", @@ -6311,7 +7029,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c66a47e840dc20793f2264eb4b3e4ecb4b75d91c0dd4af04b456128e0bdd449d" dependencies = [ "bitflags 2.11.0", - "rustix", + "rustix 1.0.8", "wayland-backend", "wayland-scanner", ] @@ -6333,7 +7051,7 @@ version = "0.31.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "447ccc440a881271b19e9989f75726d60faa09b95b0200a9b7eb5cc47c3eeb29" dependencies = [ - "rustix", + "rustix 1.0.8", "wayland-client", "xcursor", ] @@ -6481,6 +7199,35 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a751b3277700db47d3e574514de2eced5e54dc8a5436a3bf7a0b248b2cee16f3" +[[package]] +name = "wgpu" +version = "27.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfe68bac7cde125de7a731c3400723cadaaf1703795ad3f4805f187459cd7a77" +dependencies = [ + "arrayvec", + "bitflags 2.11.0", + "cfg-if", + "cfg_aliases", + "document-features", + "hashbrown 0.16.0", + "js-sys", + "log", + "naga 27.0.3", + "parking_lot", + "portable-atomic", + "profiling", + "raw-window-handle", + "smallvec", + "static_assertions", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wgpu-core 27.0.3", + "wgpu-hal 27.0.4", + "wgpu-types 27.0.1", +] + [[package]] name = "wgpu" version = "29.0.3" @@ -6496,7 +7243,7 @@ dependencies = [ "hashbrown 0.16.0", "js-sys", "log", - "naga", + "naga 29.0.3", "parking_lot", "portable-atomic", "profiling", @@ -6506,9 +7253,41 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "wgpu-core", - "wgpu-hal", - "wgpu-types", + "wgpu-core 29.0.3", + "wgpu-hal 29.0.3", + "wgpu-types 29.0.3", +] + +[[package]] +name = "wgpu-core" +version = "27.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27a75de515543b1897b26119f93731b385a19aea165a1ec5f0e3acecc229cae7" +dependencies = [ + "arrayvec", + "bit-set 0.8.0", + "bit-vec 0.8.0", + "bitflags 2.11.0", + "bytemuck", + "cfg_aliases", + "document-features", + "hashbrown 0.16.0", + "indexmap", + "log", + "naga 27.0.3", + "once_cell", + "parking_lot", + "portable-atomic", + "profiling", + "raw-window-handle", + "rustc-hash 1.1.0", + "smallvec", + "thiserror 2.0.18", + "wgpu-core-deps-apple 27.0.0", + "wgpu-core-deps-emscripten 27.0.0", + "wgpu-core-deps-windows-linux-android 27.0.0", + "wgpu-hal 27.0.4", + "wgpu-types 27.0.1", ] [[package]] @@ -6527,7 +7306,7 @@ dependencies = [ "hashbrown 0.16.0", "indexmap", "log", - "naga", + "naga 29.0.3", "once_cell", "parking_lot", "portable-atomic", @@ -6536,12 +7315,21 @@ dependencies = [ "rustc-hash 1.1.0", "smallvec", "thiserror 2.0.18", - "wgpu-core-deps-apple", - "wgpu-core-deps-emscripten", - "wgpu-core-deps-windows-linux-android", - "wgpu-hal", + "wgpu-core-deps-apple 29.0.3", + "wgpu-core-deps-emscripten 29.0.3", + "wgpu-core-deps-windows-linux-android 29.0.3", + "wgpu-hal 29.0.3", "wgpu-naga-bridge", - "wgpu-types", + "wgpu-types 29.0.3", +] + +[[package]] +name = "wgpu-core-deps-apple" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0772ae958e9be0c729561d5e3fd9a19679bcdfb945b8b1a1969d9bfe8056d233" +dependencies = [ + "wgpu-hal 27.0.4", ] [[package]] @@ -6550,7 +7338,16 @@ version = "29.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62e51b5447e144b3dbba4feb01f80f4fa21696fa0cd99afb2c3df1affd6fdb28" dependencies = [ - "wgpu-hal", + "wgpu-hal 29.0.3", +] + +[[package]] +name = "wgpu-core-deps-emscripten" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b06ac3444a95b0813ecfd81ddb2774b66220b264b3e2031152a4a29fda4da6b5" +dependencies = [ + "wgpu-hal 27.0.4", ] [[package]] @@ -6559,7 +7356,16 @@ version = "29.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3487cd6293a963bc5c0c0396f6a2192043c50003c07f4efdccbad3d90ec9d819" dependencies = [ - "wgpu-hal", + "wgpu-hal 29.0.3", +] + +[[package]] +name = "wgpu-core-deps-windows-linux-android" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71197027d61a71748e4120f05a9242b2ad142e3c01f8c1b47707945a879a03c3" +dependencies = [ + "wgpu-hal 27.0.4", ] [[package]] @@ -6568,7 +7374,7 @@ version = "29.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb01076d0aa08b0ba9bd741e178b5cc440f5abe99d9581323a4c8b5d1a1916" dependencies = [ - "wgpu-hal", + "wgpu-hal 29.0.3", ] [[package]] @@ -6580,14 +7386,63 @@ dependencies = [ "core-types", "dyn-any", "futures", - "glam", + "glam 0.32.1", "graphene-application-io", "node-macro", "raster-types", "rendering", "vello", "web-sys", - "wgpu", + "wgpu 29.0.3", +] + +[[package]] +name = "wgpu-hal" +version = "27.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b21cb61c57ee198bc4aff71aeadff4cbb80b927beb912506af9c780d64313ce" +dependencies = [ + "android_system_properties", + "arrayvec", + "ash", + "bit-set 0.8.0", + "bitflags 2.11.0", + "block", + "bytemuck", + "cfg-if", + "cfg_aliases", + "core-graphics-types 0.2.0", + "glow 0.16.0", + "glutin_wgl_sys", + "gpu-alloc", + "gpu-allocator 0.27.0", + "gpu-descriptor", + "hashbrown 0.16.0", + "js-sys", + "khronos-egl", + "libc", + "libloading 0.8.8", + "log", + "metal", + "naga 27.0.3", + "ndk-sys", + "objc", + "once_cell", + "ordered-float 4.6.0", + "parking_lot", + "portable-atomic", + "portable-atomic-util", + "profiling", + "range-alloc", + "raw-window-handle", + "renderdoc-sys", + "smallvec", + "thiserror 2.0.18", + "wasm-bindgen", + "web-sys", + "wgpu-types 27.0.1", + "windows 0.58.0", + "windows-core 0.58.0", ] [[package]] @@ -6605,9 +7460,9 @@ dependencies = [ "bytemuck", "cfg-if", "cfg_aliases", - "glow", + "glow 0.17.0", "glutin_wgl_sys", - "gpu-allocator", + "gpu-allocator 0.28.0", "gpu-descriptor", "hashbrown 0.16.0", "js-sys", @@ -6615,7 +7470,7 @@ dependencies = [ "libc", "libloading 0.8.8", "log", - "naga", + "naga 29.0.3", "ndk-sys", "objc2 0.6.4", "objc2-core-foundation", @@ -6638,7 +7493,7 @@ dependencies = [ "wayland-sys", "web-sys", "wgpu-naga-bridge", - "wgpu-types", + "wgpu-types 29.0.3", "windows 0.62.2", "windows-core 0.62.2", "windows-result 0.4.1", @@ -6650,8 +7505,22 @@ version = "29.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59c654c483f058800972c3645e95388a7eca31bf9fe1933bc20e036588a0be02" dependencies = [ - "naga", - "wgpu-types", + "naga 29.0.3", + "wgpu-types 29.0.3", +] + +[[package]] +name = "wgpu-types" +version = "27.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afdcf84c395990db737f2dd91628706cb31e86d72e53482320d368e52b5da5eb" +dependencies = [ + "bitflags 2.11.0", + "bytemuck", + "js-sys", + "log", + "thiserror 2.0.18", + "web-sys", ] [[package]] @@ -7183,9 +8052,9 @@ dependencies = [ "dpi", "libc", "raw-window-handle", - "rustix", + "rustix 1.0.8", "serde", - "smol_str", + "smol_str 0.3.2", "tracing", "winit-android", "winit-appkit", @@ -7199,6 +8068,46 @@ dependencies = [ "winit-x11", ] +[[package]] +name = "winit" +version = "0.30.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6755fa58a9f8350bd1e472d4c3fcc25f824ec358933bba33306d0b63df5978d" +dependencies = [ + "android-activity", + "atomic-waker", + "bitflags 2.11.0", + "block2 0.5.1", + "calloop 0.13.0", + "cfg_aliases", + "concurrent-queue", + "core-foundation 0.9.4", + "core-graphics", + "cursor-icon", + "dpi", + "js-sys", + "libc", + "ndk", + "objc2 0.5.2", + "objc2-app-kit 0.2.2", + "objc2-foundation 0.2.2", + "objc2-ui-kit 0.2.2", + "orbclient", + "pin-project", + "raw-window-handle", + "redox_syscall 0.4.1", + "rustix 0.38.44", + "smol_str 0.2.2", + "tracing", + "unicode-segmentation", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "web-time", + "windows-sys 0.52.0", + "xkbcommon-dl", +] + [[package]] name = "winit-android" version = "0.30.12" @@ -7209,7 +8118,7 @@ dependencies = [ "dpi", "ndk", "raw-window-handle", - "smol_str", + "smol_str 0.3.2", "tracing", "winit-core", ] @@ -7230,7 +8139,7 @@ dependencies = [ "objc2-core-video", "objc2-foundation 0.3.2", "raw-window-handle", - "smol_str", + "smol_str 0.3.2", "tracing", "winit-common", "winit-core", @@ -7244,7 +8153,7 @@ dependencies = [ "memmap2", "objc2 0.6.4", "objc2-core-foundation", - "smol_str", + "smol_str 0.3.2", "tracing", "winit-core", "x11-dl", @@ -7262,7 +8171,7 @@ dependencies = [ "keyboard-types", "raw-window-handle", "serde", - "smol_str", + "smol_str 0.3.2", "web-time", ] @@ -7275,8 +8184,8 @@ dependencies = [ "dpi", "orbclient", "raw-window-handle", - "redox_syscall", - "smol_str", + "redox_syscall 0.5.17", + "smol_str 0.3.2", "tracing", "winit-core", ] @@ -7293,10 +8202,10 @@ dependencies = [ "objc2 0.6.4", "objc2-core-foundation", "objc2-foundation 0.3.2", - "objc2-ui-kit", + "objc2-ui-kit 0.3.2", "raw-window-handle", "serde", - "smol_str", + "smol_str 0.3.2", "tracing", "winit-common", "winit-core", @@ -7309,16 +8218,16 @@ source = "git+https://github.com/rust-windowing/winit.git#bd6fef1d80ba063cbe91e1 dependencies = [ "ahash", "bitflags 2.11.0", - "calloop", + "calloop 0.14.3", "cursor-icon", "dpi", "libc", "memmap2", "raw-window-handle", - "rustix", + "rustix 1.0.8", "sctk-adwaita", "smithay-client-toolkit", - "smol_str", + "smol_str 0.3.2", "tracing", "wayland-backend", "wayland-client", @@ -7341,7 +8250,7 @@ dependencies = [ "js-sys", "pin-project", "raw-window-handle", - "smol_str", + "smol_str 0.3.2", "tracing", "wasm-bindgen", "wasm-bindgen-futures", @@ -7359,7 +8268,7 @@ dependencies = [ "cursor-icon", "dpi", "raw-window-handle", - "smol_str", + "smol_str 0.3.2", "tracing", "unicode-segmentation", "windows-sys 0.59.0", @@ -7373,14 +8282,14 @@ source = "git+https://github.com/rust-windowing/winit.git#bd6fef1d80ba063cbe91e1 dependencies = [ "bitflags 2.11.0", "bytemuck", - "calloop", + "calloop 0.14.3", "cursor-icon", "dpi", "libc", "percent-encoding", "raw-window-handle", - "rustix", - "smol_str", + "rustix 1.0.8", + "smol_str 0.3.2", "tracing", "winit-common", "winit-core", @@ -7441,7 +8350,7 @@ dependencies = [ "libc", "libloading 0.8.8", "once_cell", - "rustix", + "rustix 1.0.8", "x11rb-protocol", "xcursor", ] @@ -7459,7 +8368,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "af3a19837351dc82ba89f8a125e22a3c475f05aba604acc023d62b2739ae2909" dependencies = [ "libc", - "rustix", + "rustix 1.0.8", ] [[package]] @@ -7505,6 +8414,12 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" +[[package]] +name = "yazi" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01738255b5a16e78bbb83e7fbba0a1e7dd506905cfc53f4622d89015a03fbb5" + [[package]] name = "yeslogic-fontconfig-sys" version = "6.0.0" @@ -7539,6 +8454,12 @@ dependencies = [ "synstructure", ] +[[package]] +name = "zeno" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6df3dc4292935e51816d896edcd52aa30bc297907c26167fec31e2b0c6a32524" + [[package]] name = "zerocopy" version = "0.8.26" diff --git a/Cargo.toml b/Cargo.toml index ff2f021f..9c9f84c7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,6 +8,7 @@ members = [ "desktop/platform/mac", "desktop/platform/win", "editor", + "frontend/iced", "frontend/wrapper", "libraries/dyn-any", "libraries/math-parser", diff --git a/frontend/iced/Cargo.toml b/frontend/iced/Cargo.toml new file mode 100644 index 00000000..92be97b5 --- /dev/null +++ b/frontend/iced/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "graphite-iced-frontend" +description = "Pure-Rust GUI for Graphite built on iced" +publish = false +version.workspace = true +authors.workspace = true +edition.workspace = true +license.workspace = true +rust-version.workspace = true + +[[bin]] +name = "graphite-iced" +path = "src/main.rs" + +[dependencies] +graphite-editor = { workspace = true } + +iced = { version = "0.14", default-features = false, features = ["wgpu", "tokio"] } +rand = { workspace = true, features = ["thread_rng"] } +tracing = { workspace = true } +tracing-subscriber = { workspace = true } diff --git a/frontend/iced/src/main.rs b/frontend/iced/src/main.rs new file mode 100644 index 00000000..243b3fd2 --- /dev/null +++ b/frontend/iced/src/main.rs @@ -0,0 +1,74 @@ +use graphite_editor::application::{Editor, Environment, Host, Platform}; +use graphite_editor::messages::prelude::*; +use iced::widget::{column, container, text}; +use iced::{Element, Length, Task, Theme}; +use rand::Rng; + +#[derive(Debug, Clone)] +enum Message { + Init, +} + +struct App { + editor: Editor, + last_frontend_count: usize, +} + +impl App { + fn boot() -> (Self, Task) { + let environment = Environment { + platform: Platform::Desktop, + host: detect_host(), + }; + let seed = rand::rng().random(); + let editor = Editor::new(environment, seed); + + (Self { editor, last_frontend_count: 0 }, Task::done(Message::Init)) + } + + fn title(&self) -> String { + String::from("Graphite") + } + + fn update(&mut self, message: Message) -> Task { + match message { + Message::Init => { + let responses = self.editor.handle_message(PortfolioMessage::Init); + self.last_frontend_count = responses.len(); + tracing::info!(count = responses.len(), "editor responded to PortfolioMessage::Init"); + for response in &responses { + tracing::info!(kind = %response.to_discriminant().local_name(), "frontend message"); + } + } + } + Task::none() + } + + fn view(&self) -> Element<'_, Message> { + container(column![text("Graphite").size(40), text(format!("editor produced {} frontend messages at boot", self.last_frontend_count)).size(14),].spacing(8)) + .padding(24) + .width(Length::Fill) + .height(Length::Fill) + .into() + } + + fn theme(&self) -> Theme { + Theme::Dark + } +} + +fn detect_host() -> Host { + if cfg!(target_os = "macos") { + Host::Mac + } else if cfg!(target_os = "windows") { + Host::Windows + } else { + Host::Linux + } +} + +fn main() -> iced::Result { + tracing_subscriber::fmt().with_env_filter(tracing_subscriber::EnvFilter::from_default_env().add_directive(tracing::Level::INFO.into())).init(); + + iced::application(App::boot, App::update, App::view).title(App::title).theme(App::theme).run() +} diff --git a/tools/cargo-run/src/lib.rs b/tools/cargo-run/src/lib.rs index 89d01e06..30c7460d 100644 --- a/tools/cargo-run/src/lib.rs +++ b/tools/cargo-run/src/lib.rs @@ -12,6 +12,7 @@ pub enum Action { pub enum Target { Web, Desktop, + Iced, Cli, } @@ -45,6 +46,7 @@ impl Task { let (target, args) = match args.first() { Some(&"desktop") => (Target::Desktop, &args[1..]), Some(&"web") => (Target::Web, &args[1..]), + Some(&"iced") => (Target::Iced, &args[1..]), Some(&"cli") => (Target::Cli, &args[1..]), _ => (Target::Web, args), }; diff --git a/tools/cargo-run/src/main.rs b/tools/cargo-run/src/main.rs index 0a840934..12dc726e 100644 --- a/tools/cargo-run/src/main.rs +++ b/tools/cargo-run/src/main.rs @@ -10,6 +10,7 @@ fn usage() { println!("COMMON USAGE:"); println!(" cargo run Run the web app"); println!(" cargo run desktop Run the desktop app"); + println!(" cargo run iced Run ICED frontend"); println!(); println!("OPTIONS:"); println!(":"); @@ -20,6 +21,7 @@ fn usage() { println!(":"); println!(" [web] Web app (default)"); println!(" desktop Desktop app"); + println!(" iced ICED frontend"); println!(" cli Graphene CLI"); println!(":"); println!(" [debug] Optimizations disabled (default for run)"); @@ -127,6 +129,12 @@ fn run_task(task: &Task) -> Result<(), Error> { (Action::Build, Target::Cli, Profile::Debug) => run("cargo build -p graphene-cli")?, (Action::Build, Target::Cli, Profile::Release | Profile::Default) => run("cargo build -r -p graphene-cli")?, + (Action::Run, Target::Iced, Profile::Debug | Profile::Default) => run(&format!("cargo run -p graphite-iced-frontend -- {}", task.args.join(" ")))?, + (Action::Run, Target::Iced, Profile::Release) => run(&format!("cargo run -r -p graphite-iced-frontend -- {}", task.args.join(" ")))?, + + (Action::Build, Target::Iced, Profile::Debug) => run("cargo build -p graphite-iced-frontend")?, + (Action::Build, Target::Iced, Profile::Release | Profile::Default) => run("cargo build -r -p graphite-iced-frontend")?, + (Action::Explore(_), _, _) => unreachable!(), } Ok(())