From e37df901ef4880e118933403376bd7288c615892 Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Wed, 11 Nov 2026 14:27:18 -0500 Subject: [PATCH] Release 0.18.1: repair Flatpak update checks and self-updates (#2046) * Release 0.18.1: fix Flatpak update permissions * test: avoid unchecked option parsing in Flatpak regression --- Cargo.lock | 56 +++++++++---------- Cargo.toml | 2 +- crates/ui-egui/tests/flatpak_updates.rs | 27 +++++++++ .../ai.storyteller.deckcraft.bundle.yml | 2 + .../flatpak/ai.storyteller.deckcraft.yml | 2 + 5 files changed, 60 insertions(+), 29 deletions(-) create mode 100644 crates/ui-egui/tests/flatpak_updates.rs diff --git a/Cargo.lock b/Cargo.lock index 862599989..8d8b3b401 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1028,7 +1028,7 @@ checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" [[package]] name = "deckcraft" -version = "0.18.0" +version = "0.18.1" dependencies = [ "arboard", "chrono", @@ -1050,7 +1050,7 @@ dependencies = [ [[package]] name = "deckcraft-anim" -version = "0.18.0" +version = "0.18.1" dependencies = [ "deckcraft-geom", "deckcraft-model", @@ -1059,7 +1059,7 @@ dependencies = [ [[package]] name = "deckcraft-av1" -version = "0.18.0" +version = "0.18.1" dependencies = [ "deckcraft-bitstream", "rayon", @@ -1068,14 +1068,14 @@ dependencies = [ [[package]] name = "deckcraft-bitstream" -version = "0.18.0" +version = "0.18.1" dependencies = [ "craft-media", ] [[package]] name = "deckcraft-cli" -version = "0.18.0" +version = "0.18.1" dependencies = [ "deckcraft-engine", "deckcraft-mcp", @@ -1085,14 +1085,14 @@ dependencies = [ [[package]] name = "deckcraft-color" -version = "0.18.0" +version = "0.18.1" dependencies = [ "serde", ] [[package]] name = "deckcraft-engine" -version = "0.18.0" +version = "0.18.1" dependencies = [ "chrono", "deckcraft-anim", @@ -1118,7 +1118,7 @@ dependencies = [ [[package]] name = "deckcraft-fonts" -version = "0.18.0" +version = "0.18.1" dependencies = [ "epaint_default_fonts", "harfrust 0.13.3", @@ -1130,7 +1130,7 @@ dependencies = [ [[package]] name = "deckcraft-format" -version = "0.18.0" +version = "0.18.1" dependencies = [ "deckcraft-model", "serde", @@ -1141,7 +1141,7 @@ dependencies = [ [[package]] name = "deckcraft-geom" -version = "0.18.0" +version = "0.18.1" dependencies = [ "kurbo", "serde", @@ -1149,7 +1149,7 @@ dependencies = [ [[package]] name = "deckcraft-h264" -version = "0.18.0" +version = "0.18.1" dependencies = [ "deckcraft-bitstream", "rayon", @@ -1158,7 +1158,7 @@ dependencies = [ [[package]] name = "deckcraft-hevc" -version = "0.18.0" +version = "0.18.1" dependencies = [ "deckcraft-bitstream", "rayon", @@ -1167,21 +1167,21 @@ dependencies = [ [[package]] name = "deckcraft-isobmff" -version = "0.18.0" +version = "0.18.1" dependencies = [ "craft-media", ] [[package]] name = "deckcraft-matroska" -version = "0.18.0" +version = "0.18.1" dependencies = [ "craft-media", ] [[package]] name = "deckcraft-mcp" -version = "0.18.0" +version = "0.18.1" dependencies = [ "deckcraft-engine", "deckcraft-render", @@ -1191,7 +1191,7 @@ dependencies = [ [[package]] name = "deckcraft-media" -version = "0.18.0" +version = "0.18.1" dependencies = [ "deckcraft-av1", "deckcraft-h264", @@ -1209,7 +1209,7 @@ dependencies = [ [[package]] name = "deckcraft-metafile" -version = "0.18.0" +version = "0.18.1" dependencies = [ "image", "kurbo", @@ -1218,7 +1218,7 @@ dependencies = [ [[package]] name = "deckcraft-model" -version = "0.18.0" +version = "0.18.1" dependencies = [ "deckcraft-color", "deckcraft-geom", @@ -1230,15 +1230,15 @@ dependencies = [ [[package]] name = "deckcraft-ogg" -version = "0.18.0" +version = "0.18.1" [[package]] name = "deckcraft-opus" -version = "0.18.0" +version = "0.18.1" [[package]] name = "deckcraft-pdf" -version = "0.18.0" +version = "0.18.1" dependencies = [ "craft-pdf", "deckcraft-fonts", @@ -1256,7 +1256,7 @@ dependencies = [ [[package]] name = "deckcraft-pptx" -version = "0.18.0" +version = "0.18.1" dependencies = [ "deckcraft-color", "deckcraft-engine", @@ -1272,7 +1272,7 @@ dependencies = [ [[package]] name = "deckcraft-render" -version = "0.18.0" +version = "0.18.1" dependencies = [ "deckcraft-anim", "deckcraft-color", @@ -1291,7 +1291,7 @@ dependencies = [ [[package]] name = "deckcraft-text" -version = "0.18.0" +version = "0.18.1" dependencies = [ "chrono", "deckcraft-color", @@ -1305,7 +1305,7 @@ dependencies = [ [[package]] name = "deckcraft-ui-egui" -version = "0.18.0" +version = "0.18.1" dependencies = [ "craft-ui", "craft-update", @@ -1331,7 +1331,7 @@ dependencies = [ [[package]] name = "deckcraft-vp9" -version = "0.18.0" +version = "0.18.1" dependencies = [ "deckcraft-bitstream", "rayon", @@ -1340,7 +1340,7 @@ dependencies = [ [[package]] name = "deckcraft-web" -version = "0.18.0" +version = "0.18.1" dependencies = [ "craft-web-api", "craft-web-host", @@ -6325,7 +6325,7 @@ checksum = "9440ea3e5aeabb0ac63af70daf835274065238cdd0cec83418f417eae38bacee" [[package]] name = "xtask" -version = "0.18.0" +version = "0.18.1" dependencies = [ "serde_json", ] diff --git a/Cargo.toml b/Cargo.toml index c1e005125..e162834de 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ members = ["crates/*", "apps/*", "xtask"] default-members = ["crates/*", "apps/deckcraft", "apps/deckcraft-cli"] [workspace.package] -version = "0.18.0" +version = "0.18.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..cc70ea46d --- /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.deckcraft.bundle.yml"), + include_str!("../../../packaging/linux/flatpak/ai.storyteller.deckcraft.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.deckcraft.bundle.yml b/packaging/linux/flatpak/ai.storyteller.deckcraft.bundle.yml index 5b54f575f..a86186225 100644 --- a/packaging/linux/flatpak/ai.storyteller.deckcraft.bundle.yml +++ b/packaging/linux/flatpak/ai.storyteller.deckcraft.bundle.yml @@ -17,6 +17,8 @@ runtime-version: '25.08' sdk: org.freedesktop.Sdk command: deckcraft 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.deckcraft.yml b/packaging/linux/flatpak/ai.storyteller.deckcraft.yml index 8c1d1e24f..5faa9da72 100644 --- a/packaging/linux/flatpak/ai.storyteller.deckcraft.yml +++ b/packaging/linux/flatpak/ai.storyteller.deckcraft.yml @@ -18,6 +18,8 @@ sdk-extensions: - org.freedesktop.Sdk.Extension.rust-stable command: deckcraft 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