Cargo.toml
raw
[workspace]
resolver = "3"
members = ["crates/*"]
[workspace.package]
version = "0.3.1"
edition = "2024"
license = "Unlicense"
homepage = "https://git.highenergymagic.org/guiduck"
repository = "https://git.highenergymagic.org/guiduck"
[workspace.dependencies]
# Rendering
vello = "0.9.0"
wgpu = "29.0.4" # vello 0.9 requires wgpu ^29; do not take wgpu 30 until vello does
peniko = "0.6.1"
tiny-skia = "0.12.0"
softbuffer = "0.4.8"
skrifa = "0.42" # match vello 0.9's skrifa so font handling agrees across backends
# Platform
winit = "0.30.13"
accesskit = "0.24.1"
accesskit_winit = "0.33.1"
smithay-clipboard = "0.7"
# Layout and text
taffy = "0.12.1"
parley = "0.11.0"
# Asset decoding. Default features off: the format list is the supported set,
# not whatever the crate happens to ship, and it keeps the tree small.
image = { version = "0.25", default-features = false, features = ["png", "jpeg"] }
# Component compiler (the .gdc s-expression reader is hand-written in
# guiduck-component-core; the macro crate is its only consumer needing these)
quote = "1"
proc-macro2 = "1"
# Utility
slotmap = "1"
pollster = "0.4"
# Widget registration: builtins and app widgets submit their runtime factory
# (construct-fn + setter thunks) into one registry collected before main, so a
# linked widget crate is available everywhere including dev mode. Only runtime
# crates depend on it; the compiler (guiduck-component-core) stays dep-free.
inventory = "0.3.24"
# Desktop integration, Unix only: xdg-desktop-portal is a freedesktop thing,
# so this dependency is target-gated and Windows/macOS never see it (their
# file choosers are their own native APIs behind the same seam).
# `zbus::blocking` over async-io: the portal call is one blocking round trip
# on its own thread, so a full async runtime (which `ashpd` would bring in via
# tokio) would be the heaviest dependency in the tree, to buy nothing.
zbus = { version = "5", default-features = false, features = ["async-io", "blocking-api"] }
# Hot reload
notify = "8"
# Testing
insta = "1.48"
trybuild = "1.0"
# Workspace crates
guiduck-scene = { path = "crates/guiduck-scene" }
guiduck-render-vello = { path = "crates/guiduck-render-vello" }
guiduck-render-tinyskia = { path = "crates/guiduck-render-tinyskia" }
guiduck-signals = { path = "crates/guiduck-signals" }
guiduck-core = { path = "crates/guiduck-core" }
guiduck-component-core = { path = "crates/guiduck-component-core" }
guiduck-component-macro = { path = "crates/guiduck-component-macro" }
guiduck-component-rt = { path = "crates/guiduck-component-rt" }
guiduck-app = { path = "crates/guiduck-app" }
guiduck-widget-fixture = { path = "crates/guiduck-widget-fixture" }
guiduck-markdown = { path = "crates/guiduck-markdown" }