diff --git a/Cargo.lock b/Cargo.lock index a07b445d8..16c8a95c8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2022,7 +2022,7 @@ dependencies = [ [[package]] name = "gridcraft" -version = "0.19.0" +version = "0.19.1" dependencies = [ "arboard", "chrono", @@ -2050,7 +2050,7 @@ dependencies = [ [[package]] name = "gridcraft-calc" -version = "0.19.0" +version = "0.19.1" dependencies = [ "gridcraft-core", "gridcraft-formula", @@ -2062,7 +2062,7 @@ dependencies = [ [[package]] name = "gridcraft-chart" -version = "0.19.0" +version = "0.19.1" dependencies = [ "gridcraft-calc", "gridcraft-core", @@ -2073,7 +2073,7 @@ dependencies = [ [[package]] name = "gridcraft-cli" -version = "0.19.0" +version = "0.19.1" dependencies = [ "gridcraft-engine", "gridcraft-mcp", @@ -2086,7 +2086,7 @@ dependencies = [ [[package]] name = "gridcraft-core" -version = "0.19.0" +version = "0.19.1" dependencies = [ "chrono", "js-sys", @@ -2097,7 +2097,7 @@ dependencies = [ [[package]] name = "gridcraft-engine" -version = "0.19.0" +version = "0.19.1" dependencies = [ "gridcraft-calc", "gridcraft-chart", @@ -2120,7 +2120,7 @@ dependencies = [ [[package]] name = "gridcraft-formula" -version = "0.19.0" +version = "0.19.1" dependencies = [ "gridcraft-core", "serde", @@ -2129,7 +2129,7 @@ dependencies = [ [[package]] name = "gridcraft-functions" -version = "0.19.0" +version = "0.19.1" dependencies = [ "gridcraft-core", "regex", @@ -2137,7 +2137,7 @@ dependencies = [ [[package]] name = "gridcraft-math" -version = "0.19.0" +version = "0.19.1" dependencies = [ "ratex-font", "ratex-layout", @@ -2147,7 +2147,7 @@ dependencies = [ [[package]] name = "gridcraft-mcp" -version = "0.19.0" +version = "0.19.1" dependencies = [ "gridcraft-engine", "log", @@ -2156,7 +2156,7 @@ dependencies = [ [[package]] name = "gridcraft-model" -version = "0.19.0" +version = "0.19.1" dependencies = [ "gridcraft-core", "gridcraft-formula", @@ -2169,18 +2169,18 @@ dependencies = [ [[package]] name = "gridcraft-numfmt" -version = "0.19.0" +version = "0.19.1" dependencies = [ "gridcraft-core", ] [[package]] name = "gridcraft-pdf" -version = "0.19.0" +version = "0.19.1" [[package]] name = "gridcraft-sandbox" -version = "0.19.0" +version = "0.19.1" dependencies = [ "landlock", "libc", @@ -2191,7 +2191,7 @@ dependencies = [ [[package]] name = "gridcraft-ui-egui" -version = "0.19.0" +version = "0.19.1" dependencies = [ "craft-ui", "craft-update", @@ -2218,7 +2218,7 @@ dependencies = [ [[package]] name = "gridcraft-web" -version = "0.19.0" +version = "0.19.1" dependencies = [ "craft-web-api", "craft-web-host", @@ -2237,7 +2237,7 @@ dependencies = [ [[package]] name = "gridcraft-xlsx" -version = "0.19.0" +version = "0.19.1" dependencies = [ "aes", "gridcraft-core", @@ -6708,7 +6708,7 @@ checksum = "e450f9b2ed1dff33c94c12589a87338689467b9c4f5d8a5710bd09a847d2c8a7" [[package]] name = "xtask" -version = "0.19.0" +version = "0.19.1" dependencies = [ "gridcraft-engine", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index 2e460354f..0d58a63b4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ members = ["crates/*", "apps/*", "xtask"] default-members = ["crates/*", "apps/gridcraft", "apps/gridcraft-cli", "xtask"] [workspace.package] -version = "0.19.0" +version = "0.19.1" edition = "2024" license = "MIT OR Apache-2.0" rust-version = "1.95" diff --git a/crates/ui-egui/tests/flatpak_updates.rs b/crates/ui-egui/tests/flatpak_updates.rs new file mode 100644 index 000000000..072176361 --- /dev/null +++ b/crates/ui-egui/tests/flatpak_updates.rs @@ -0,0 +1,27 @@ +//! Release and source Flatpaks must allow release checks and host update helpers. +fn finish_args(manifest: &str) -> Vec<&str> { + manifest + .split("finish-args:") + .nth(1) + .unwrap_or_default() + .lines() + .take_while(|line| line.is_empty() || line.starts_with(' ') || line.starts_with('#')) + .filter_map(|line| line.trim().strip_prefix("- ")) + .map(|arg| arg.trim_matches(['\'', '"'])) + .collect() +} + +#[test] +fn flatpak_update_permissions() { + let manifests = [ + include_str!("../../../packaging/linux/flatpak/ai.storyteller.gridcraft.bundle.yml"), + include_str!("../../../packaging/linux/flatpak/ai.storyteller.gridcraft.yml"), + ]; + let args = manifests.map(finish_args); + assert_eq!(args[0], args[1], "source and release permissions must agree"); + for permissions in args { + for required in ["--share=network", "--talk-name=org.freedesktop.Flatpak"] { + assert!(permissions.contains(&required), "missing update permission: {required}"); + } + } +} diff --git a/packaging/linux/flatpak/ai.storyteller.gridcraft.bundle.yml b/packaging/linux/flatpak/ai.storyteller.gridcraft.bundle.yml index 5926f32f7..ee452af4f 100644 --- a/packaging/linux/flatpak/ai.storyteller.gridcraft.bundle.yml +++ b/packaging/linux/flatpak/ai.storyteller.gridcraft.bundle.yml @@ -17,6 +17,8 @@ runtime-version: '25.08' sdk: org.freedesktop.Sdk command: gridcraft finish-args: + # The shared updater inspects and updates this installation via flatpak-spawn --host. + - --talk-name=org.freedesktop.Flatpak - --filesystem=xdg-data/ArtCraft/versions:ro # Display: Wayland first; X11 only when no Wayland compositor is running. - --socket=wayland diff --git a/packaging/linux/flatpak/ai.storyteller.gridcraft.yml b/packaging/linux/flatpak/ai.storyteller.gridcraft.yml index e493d4855..b3164fbe0 100644 --- a/packaging/linux/flatpak/ai.storyteller.gridcraft.yml +++ b/packaging/linux/flatpak/ai.storyteller.gridcraft.yml @@ -18,6 +18,8 @@ sdk-extensions: - org.freedesktop.Sdk.Extension.rust-stable command: gridcraft finish-args: + # The shared updater inspects and updates this installation via flatpak-spawn --host. + - --talk-name=org.freedesktop.Flatpak - --filesystem=xdg-data/ArtCraft/versions:ro # Display: Wayland first; X11 only when no Wayland compositor is running. - --socket=wayland