Compare commits

...
Author SHA1 Message Date
Dylan M. Taylor e73c4e147f chore: bump version to 0.19.1 for the Flatpak update fix 2026-11-11 14:40:23 -05:00
Dylan M. Taylor 0c5b1e85e6 sonar: stop counting the locale table as duplicated code (#3805) 2026-11-11 14:33:16 -05:00
Dylan M. Taylor 7f6a79fd98 Fix Flatpak permissions for update checks and self-updates (#3803)
* fix(flatpak): allow release checks and self-update helpers

* test: keep Flatpak permission parsing within strict Clippy rules
2026-11-11 14:24:13 -05:00
6 changed files with 54 additions and 19 deletions
Generated
+18 -18
View File
@@ -2023,7 +2023,7 @@ dependencies = [
[[package]]
name = "gridcraft"
version = "0.19.0"
version = "0.19.1"
dependencies = [
"arboard",
"chrono",
@@ -2051,7 +2051,7 @@ dependencies = [
[[package]]
name = "gridcraft-calc"
version = "0.19.0"
version = "0.19.1"
dependencies = [
"gridcraft-core",
"gridcraft-formula",
@@ -2063,7 +2063,7 @@ dependencies = [
[[package]]
name = "gridcraft-chart"
version = "0.19.0"
version = "0.19.1"
dependencies = [
"gridcraft-calc",
"gridcraft-core",
@@ -2074,7 +2074,7 @@ dependencies = [
[[package]]
name = "gridcraft-cli"
version = "0.19.0"
version = "0.19.1"
dependencies = [
"gridcraft-engine",
"gridcraft-mcp",
@@ -2087,7 +2087,7 @@ dependencies = [
[[package]]
name = "gridcraft-core"
version = "0.19.0"
version = "0.19.1"
dependencies = [
"chrono",
"js-sys",
@@ -2098,7 +2098,7 @@ dependencies = [
[[package]]
name = "gridcraft-engine"
version = "0.19.0"
version = "0.19.1"
dependencies = [
"gridcraft-calc",
"gridcraft-chart",
@@ -2121,7 +2121,7 @@ dependencies = [
[[package]]
name = "gridcraft-formula"
version = "0.19.0"
version = "0.19.1"
dependencies = [
"gridcraft-core",
"serde",
@@ -2130,7 +2130,7 @@ dependencies = [
[[package]]
name = "gridcraft-functions"
version = "0.19.0"
version = "0.19.1"
dependencies = [
"gridcraft-core",
"regex",
@@ -2138,7 +2138,7 @@ dependencies = [
[[package]]
name = "gridcraft-math"
version = "0.19.0"
version = "0.19.1"
dependencies = [
"ratex-font",
"ratex-layout",
@@ -2148,7 +2148,7 @@ dependencies = [
[[package]]
name = "gridcraft-mcp"
version = "0.19.0"
version = "0.19.1"
dependencies = [
"gridcraft-engine",
"log",
@@ -2157,7 +2157,7 @@ dependencies = [
[[package]]
name = "gridcraft-model"
version = "0.19.0"
version = "0.19.1"
dependencies = [
"gridcraft-core",
"gridcraft-formula",
@@ -2170,18 +2170,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",
@@ -2192,7 +2192,7 @@ dependencies = [
[[package]]
name = "gridcraft-ui-egui"
version = "0.19.0"
version = "0.19.1"
dependencies = [
"craft-ui",
"craft-update",
@@ -2219,7 +2219,7 @@ dependencies = [
[[package]]
name = "gridcraft-web"
version = "0.19.0"
version = "0.19.1"
dependencies = [
"craft-web-api",
"craft-web-host",
@@ -2238,7 +2238,7 @@ dependencies = [
[[package]]
name = "gridcraft-xlsx"
version = "0.19.0"
version = "0.19.1"
dependencies = [
"aes",
"gridcraft-core",
@@ -6710,7 +6710,7 @@ checksum = "e450f9b2ed1dff33c94c12589a87338689467b9c4f5d8a5710bd09a847d2c8a7"
[[package]]
name = "xtask"
version = "0.19.0"
version = "0.19.1"
dependencies = [
"gridcraft-engine",
"serde_json",
+1 -1
View File
@@ -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"
+27
View File
@@ -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}");
}
}
}
@@ -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
@@ -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
+4
View File
@@ -1,2 +1,6 @@
sonar.projectKey=storytold_gridcraft
sonar.organization=storytold
# The region table is one record per locale with the same field names and many shared values
# (month names, formats); that repetition is data, not copy-pasted logic.
sonar.cpd.exclusions=crates/core/src/region.rs