From 898bfc2e60e191fae9b0c87590c220bb6c6f2eb4 Mon Sep 17 00:00:00 2001 From: "Dylan M. Taylor" Date: Wed, 11 Nov 2026 15:01:36 -0500 Subject: [PATCH] Fix Flatpak updates and bump to 0.17.1 (#2267) * fix(flatpak): allow release checks and self-update helpers * test: keep Flatpak permission parsing within strict Clippy rules * chore: bump version to 0.17.1 for the Flatpak update fix --- Cargo.lock | 44 +++++++++---------- Cargo.toml | 2 +- crates/ui-egui/tests/flatpak_updates.rs | 27 ++++++++++++ .../ai.storyteller.figcraft.bundle.yml | 2 + .../linux/flatpak/ai.storyteller.figcraft.yml | 2 + 5 files changed, 54 insertions(+), 23 deletions(-) create mode 100644 crates/ui-egui/tests/flatpak_updates.rs diff --git a/Cargo.lock b/Cargo.lock index 6714be11b..7c94d0f61 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1785,7 +1785,7 @@ checksum = "b97b65636e5b9ef369943878ac74335ba1c55c1cb6adbf1e2c293c624248d693" [[package]] name = "figcraft" -version = "0.15.0" +version = "0.17.1" dependencies = [ "arboard", "craft-menu", @@ -1817,7 +1817,7 @@ dependencies = [ [[package]] name = "figcraft-cli" -version = "0.15.0" +version = "0.17.1" dependencies = [ "clap", "clap_complete", @@ -1835,7 +1835,7 @@ dependencies = [ [[package]] name = "figcraft-collab" -version = "0.15.0" +version = "0.17.1" dependencies = [ "base64 0.22.1", "chrono", @@ -1853,7 +1853,7 @@ dependencies = [ [[package]] name = "figcraft-collab-net" -version = "0.15.0" +version = "0.17.1" dependencies = [ "base64 0.22.1", "figcraft-collab", @@ -1876,7 +1876,7 @@ dependencies = [ [[package]] name = "figcraft-color" -version = "0.15.0" +version = "0.17.1" dependencies = [ "kurbo", "serde", @@ -1885,7 +1885,7 @@ dependencies = [ [[package]] name = "figcraft-doc" -version = "0.15.0" +version = "0.17.1" dependencies = [ "figcraft-color", "figcraft-geom", @@ -1898,7 +1898,7 @@ dependencies = [ [[package]] name = "figcraft-engine" -version = "0.15.0" +version = "0.17.1" dependencies = [ "base64 0.22.1", "craft-docpath", @@ -1932,7 +1932,7 @@ dependencies = [ [[package]] name = "figcraft-format" -version = "0.15.0" +version = "0.17.1" dependencies = [ "figcraft-doc", "figcraft-layout", @@ -1949,7 +1949,7 @@ dependencies = [ [[package]] name = "figcraft-geom" -version = "0.15.0" +version = "0.17.1" dependencies = [ "kurbo", "serde", @@ -1957,7 +1957,7 @@ dependencies = [ [[package]] name = "figcraft-layout" -version = "0.15.0" +version = "0.17.1" dependencies = [ "figcraft-doc", "figcraft-geom", @@ -1965,7 +1965,7 @@ dependencies = [ [[package]] name = "figcraft-mcp" -version = "0.15.0" +version = "0.17.1" dependencies = [ "base64 0.22.1", "figcraft-collab-net", @@ -1981,7 +1981,7 @@ dependencies = [ [[package]] name = "figcraft-pathops" -version = "0.15.0" +version = "0.17.1" dependencies = [ "figcraft-doc", "figcraft-geom", @@ -1990,7 +1990,7 @@ dependencies = [ [[package]] name = "figcraft-pdf" -version = "0.15.0" +version = "0.17.1" dependencies = [ "figcraft-color", "figcraft-doc", @@ -2007,7 +2007,7 @@ dependencies = [ [[package]] name = "figcraft-plugin" -version = "0.15.0" +version = "0.17.1" dependencies = [ "figcraft-color", "serde", @@ -2020,7 +2020,7 @@ dependencies = [ [[package]] name = "figcraft-render" -version = "0.15.0" +version = "0.17.1" dependencies = [ "crc32fast", "figcraft-color", @@ -2039,7 +2039,7 @@ dependencies = [ [[package]] name = "figcraft-server" -version = "0.15.0" +version = "0.17.1" dependencies = [ "chrono", "crc32fast", @@ -2064,7 +2064,7 @@ dependencies = [ [[package]] name = "figcraft-svg" -version = "0.15.0" +version = "0.17.1" dependencies = [ "base64 0.22.1", "figcraft-color", @@ -2080,7 +2080,7 @@ dependencies = [ [[package]] name = "figcraft-text" -version = "0.15.0" +version = "0.17.1" dependencies = [ "core-text", "craft-font-catalog", @@ -2098,7 +2098,7 @@ dependencies = [ [[package]] name = "figcraft-ui-egui" -version = "0.15.0" +version = "0.17.1" dependencies = [ "base64 0.22.1", "chrono", @@ -2126,7 +2126,7 @@ dependencies = [ [[package]] name = "figcraft-vectordrawable" -version = "0.15.0" +version = "0.17.1" dependencies = [ "figcraft-color", "figcraft-doc", @@ -2140,7 +2140,7 @@ dependencies = [ [[package]] name = "figcraft-web" -version = "0.15.0" +version = "0.17.1" dependencies = [ "base64 0.22.1", "craft-web-api", @@ -6763,7 +6763,7 @@ checksum = "9440ea3e5aeabb0ac63af70daf835274065238cdd0cec83418f417eae38bacee" [[package]] name = "xtask" -version = "0.15.0" +version = "0.17.1" dependencies = [ "figcraft-engine", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index 21833c3ec..d24d8f03d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ exclude = ["plugins"] # default-members = ["crates/*", "apps/figcraft", "apps/figcraft-cli", "xtask"] [workspace.package] -version = "0.15.0" +version = "0.17.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..5097d2f93 --- /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.figcraft.bundle.yml"), + include_str!("../../../packaging/linux/flatpak/ai.storyteller.figcraft.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.figcraft.bundle.yml b/packaging/linux/flatpak/ai.storyteller.figcraft.bundle.yml index a46fa191c..d395a891b 100644 --- a/packaging/linux/flatpak/ai.storyteller.figcraft.bundle.yml +++ b/packaging/linux/flatpak/ai.storyteller.figcraft.bundle.yml @@ -17,6 +17,8 @@ runtime-version: '26.08' sdk: org.freedesktop.Sdk command: figcraft 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.figcraft.yml b/packaging/linux/flatpak/ai.storyteller.figcraft.yml index 91054f5cd..ec284ec99 100644 --- a/packaging/linux/flatpak/ai.storyteller.figcraft.yml +++ b/packaging/linux/flatpak/ai.storyteller.figcraft.yml @@ -22,6 +22,8 @@ sdk-extensions: - org.freedesktop.Sdk.Extension.rust-stable command: figcraft 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