From cbddc9d284ca40a19a2958c621d6f0019aad3fb9 Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Wed, 11 Nov 2026 15:25:13 -0500 Subject: [PATCH] Fix Flatpak updates and bump to 0.24.1 (#3516) * fix(flatpak): allow release checks and self-update helpers * test: keep Flatpak permission parsing within strict Clippy rules * chore: bump version to 0.24.1 for the Flatpak update fix --- Cargo.lock | 78 +++++++++---------- Cargo.toml | 2 +- crates/ui-egui/tests/flatpak_updates.rs | 27 +++++++ .../ai.storyteller.effectcraft.bundle.yml | 2 + .../flatpak/ai.storyteller.effectcraft.yml | 2 + 5 files changed, 71 insertions(+), 40 deletions(-) create mode 100644 crates/ui-egui/tests/flatpak_updates.rs diff --git a/Cargo.lock b/Cargo.lock index 002edc8d0..fb12590be 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1421,7 +1421,7 @@ dependencies = [ [[package]] name = "effectcraft" -version = "0.24.0" +version = "0.24.1" dependencies = [ "chrono", "cpal", @@ -1449,7 +1449,7 @@ dependencies = [ [[package]] name = "effectcraft-aep" -version = "0.24.0" +version = "0.24.1" dependencies = [ "effectcraft-color", "effectcraft-effects", @@ -1463,7 +1463,7 @@ dependencies = [ [[package]] name = "effectcraft-automation" -version = "0.24.0" +version = "0.24.1" dependencies = [ "effectcraft-engine", "effectcraft-host", @@ -1477,7 +1477,7 @@ dependencies = [ [[package]] name = "effectcraft-av1enc" -version = "0.24.0" +version = "0.24.1" dependencies = [ "filmcraft-av1", "tempfile", @@ -1485,7 +1485,7 @@ dependencies = [ [[package]] name = "effectcraft-cli" -version = "0.24.0" +version = "0.24.1" dependencies = [ "cpu-time", "effectcraft-automation", @@ -1504,7 +1504,7 @@ dependencies = [ [[package]] name = "effectcraft-color" -version = "0.24.0" +version = "0.24.1" dependencies = [ "proptest", "serde", @@ -1512,7 +1512,7 @@ dependencies = [ [[package]] name = "effectcraft-effects" -version = "0.24.0" +version = "0.24.1" dependencies = [ "chrono", "effectcraft-color", @@ -1530,7 +1530,7 @@ dependencies = [ [[package]] name = "effectcraft-engine" -version = "0.24.0" +version = "0.24.1" dependencies = [ "chrono", "craft-docpath", @@ -1569,7 +1569,7 @@ dependencies = [ [[package]] name = "effectcraft-export" -version = "0.24.0" +version = "0.24.1" dependencies = [ "effectcraft-av1enc", "effectcraft-color", @@ -1601,7 +1601,7 @@ dependencies = [ [[package]] name = "effectcraft-expr" -version = "0.24.0" +version = "0.24.1" dependencies = [ "boa_engine", "effectcraft-color", @@ -1618,7 +1618,7 @@ dependencies = [ [[package]] name = "effectcraft-geom" -version = "0.24.0" +version = "0.24.1" dependencies = [ "proptest", "serde", @@ -1626,7 +1626,7 @@ dependencies = [ [[package]] name = "effectcraft-gpu" -version = "0.24.0" +version = "0.24.1" dependencies = [ "bytemuck", "effectcraft-color", @@ -1649,7 +1649,7 @@ dependencies = [ [[package]] name = "effectcraft-helper-host" -version = "0.24.0" +version = "0.24.1" dependencies = [ "bytemuck", "effectcraft-effects", @@ -1660,14 +1660,14 @@ dependencies = [ [[package]] name = "effectcraft-hevcenc" -version = "0.24.0" +version = "0.24.1" dependencies = [ "filmcraft-hevc", ] [[package]] name = "effectcraft-host" -version = "0.24.0" +version = "0.24.1" dependencies = [ "effectcraft-engine", "effectcraft-export", @@ -1694,7 +1694,7 @@ dependencies = [ [[package]] name = "effectcraft-interchange" -version = "0.24.0" +version = "0.24.1" dependencies = [ "effectcraft-color", "effectcraft-keyframe", @@ -1713,7 +1713,7 @@ dependencies = [ [[package]] name = "effectcraft-keyframe" -version = "0.24.0" +version = "0.24.1" dependencies = [ "effectcraft-color", "effectcraft-geom", @@ -1725,7 +1725,7 @@ dependencies = [ [[package]] name = "effectcraft-lottie" -version = "0.24.0" +version = "0.24.1" dependencies = [ "craft-docpath", "effectcraft-color", @@ -1743,7 +1743,7 @@ dependencies = [ [[package]] name = "effectcraft-media" -version = "0.24.0" +version = "0.24.1" dependencies = [ "craft-docpath", "effectcraft-color", @@ -1777,7 +1777,7 @@ dependencies = [ [[package]] name = "effectcraft-model" -version = "0.24.0" +version = "0.24.1" dependencies = [ "effectcraft-geom", "image", @@ -1790,14 +1790,14 @@ dependencies = [ [[package]] name = "effectcraft-opusenc" -version = "0.24.0" +version = "0.24.1" dependencies = [ "filmcraft-opus", ] [[package]] name = "effectcraft-path" -version = "0.24.0" +version = "0.24.1" dependencies = [ "effectcraft-geom", "effectcraft-keyframe", @@ -1809,7 +1809,7 @@ dependencies = [ [[package]] name = "effectcraft-pdf" -version = "0.24.0" +version = "0.24.1" dependencies = [ "craft-pdf", "effectcraft-raster", @@ -1825,7 +1825,7 @@ dependencies = [ [[package]] name = "effectcraft-plugin" -version = "0.24.0" +version = "0.24.1" dependencies = [ "effectcraft-effects", "effectcraft-keyframe", @@ -1837,7 +1837,7 @@ dependencies = [ [[package]] name = "effectcraft-project" -version = "0.24.0" +version = "0.24.1" dependencies = [ "craft-ecproj-format", "effectcraft-color", @@ -1851,14 +1851,14 @@ dependencies = [ [[package]] name = "effectcraft-psd" -version = "0.24.0" +version = "0.24.1" dependencies = [ "miniz_oxide 0.9.1", ] [[package]] name = "effectcraft-raster" -version = "0.24.0" +version = "0.24.1" dependencies = [ "effectcraft-color", "effectcraft-geom", @@ -1868,7 +1868,7 @@ dependencies = [ [[package]] name = "effectcraft-render" -version = "0.24.0" +version = "0.24.1" dependencies = [ "effectcraft-color", "effectcraft-effects", @@ -1891,7 +1891,7 @@ dependencies = [ [[package]] name = "effectcraft-sam2" -version = "0.24.0" +version = "0.24.1" dependencies = [ "bytemuck", "candle-core", @@ -1906,7 +1906,7 @@ dependencies = [ [[package]] name = "effectcraft-script" -version = "0.24.0" +version = "0.24.1" dependencies = [ "boa_engine", "effectcraft-engine", @@ -1924,7 +1924,7 @@ dependencies = [ [[package]] name = "effectcraft-segment" -version = "0.24.0" +version = "0.24.1" dependencies = [ "miniz_oxide 0.9.1", "ndarray", @@ -1933,7 +1933,7 @@ dependencies = [ [[package]] name = "effectcraft-svg" -version = "0.24.0" +version = "0.24.1" dependencies = [ "effectcraft-geom", "effectcraft-path", @@ -1946,7 +1946,7 @@ dependencies = [ [[package]] name = "effectcraft-text" -version = "0.24.0" +version = "0.24.1" dependencies = [ "effectcraft-keyframe", "harfrust", @@ -1958,7 +1958,7 @@ dependencies = [ [[package]] name = "effectcraft-time" -version = "0.24.0" +version = "0.24.1" dependencies = [ "proptest", "serde", @@ -1966,7 +1966,7 @@ dependencies = [ [[package]] name = "effectcraft-track" -version = "0.24.0" +version = "0.24.1" dependencies = [ "effectcraft-raster", "effectcraft-segment", @@ -1978,7 +1978,7 @@ dependencies = [ [[package]] name = "effectcraft-ui-egui" -version = "0.24.0" +version = "0.24.1" dependencies = [ "bytemuck", "chrono", @@ -2019,11 +2019,11 @@ dependencies = [ [[package]] name = "effectcraft-vp9enc" -version = "0.24.0" +version = "0.24.1" [[package]] name = "effectcraft-web" -version = "0.24.0" +version = "0.24.1" dependencies = [ "effectcraft-engine", "effectcraft-export", @@ -7840,7 +7840,7 @@ checksum = "e450f9b2ed1dff33c94c12589a87338689467b9c4f5d8a5710bd09a847d2c8a7" [[package]] name = "xtask" -version = "0.24.0" +version = "0.24.1" dependencies = [ "chrono", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index 6c12d867d..6cb650067 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ members = ["crates/*", "apps/*", "xtask"] default-members = ["crates/*", "apps/*"] [workspace.package] -version = "0.24.0" +version = "0.24.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..908c24a23 --- /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.effectcraft.bundle.yml"), + include_str!("../../../packaging/linux/flatpak/ai.storyteller.effectcraft.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.effectcraft.bundle.yml b/packaging/linux/flatpak/ai.storyteller.effectcraft.bundle.yml index 03c4ee08f..f4ace60b8 100644 --- a/packaging/linux/flatpak/ai.storyteller.effectcraft.bundle.yml +++ b/packaging/linux/flatpak/ai.storyteller.effectcraft.bundle.yml @@ -17,6 +17,8 @@ runtime-version: '25.08' sdk: org.freedesktop.Sdk command: effectcraft 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.effectcraft.yml b/packaging/linux/flatpak/ai.storyteller.effectcraft.yml index 0797c5ea2..f36ff2851 100644 --- a/packaging/linux/flatpak/ai.storyteller.effectcraft.yml +++ b/packaging/linux/flatpak/ai.storyteller.effectcraft.yml @@ -20,6 +20,8 @@ sdk-extensions: - org.freedesktop.Sdk.Extension.rust-stable command: effectcraft 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