Linux app id: ai.storyteller.solidcraft, with an end-of-life rebase from the old id (#619)
The Flatpak app id, desktop/metainfo/MIME file names, icon name and the window's Wayland app_id / X11 class are now ai.storyteller.solidcraft, the id the ArtCraft launcher expects. Existing Flatpak installs move over: the Pages repo marks app/ai.storyteller.solvecraft end-of-life with a rebase to the new id, so flatpak update offers the switch and Flatpak carries ~/.var/app along. A new install next to the old one copies settings and autosaves on first launch through a read-only grant on the old data folder. The metainfo declares <replaces>/<provides>, the desktop entry X-Flatpak-RenamedFrom, and AppImages drop the menu entry an older AppImage installed. deb/rpm upgrades remove the old-named files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
bcbfa50eac
commit
e67cc0c747
21 files changed
+194
-68
No files matched your search
@@ -5,8 +5,10 @@ set -euo pipefail
|
||||
|
||||
site="${1:?site directory required}"
|
||||
tag="${RELEASE_TAG:-}"
|
||||
# Compatibility shim (docs/compatibility.md): the Flatpak app id keeps its pre-rename value.
|
||||
app_id=ai.storyteller.solvecraft
|
||||
app_id=ai.storyteller.solidcraft
|
||||
# Compatibility shim (docs/compatibility.md): releases before 0.8 used this app id. Its refs stay
|
||||
# in the repository, marked end-of-life with a rebase to $app_id.
|
||||
legacy_id=ai.storyteller.solvecraft
|
||||
if [ -z "$tag" ]; then
|
||||
tag="$(gh api "repos/$GITHUB_REPOSITORY/releases?per_page=100" \
|
||||
--jq '[.[] | select(.draft == false and .prerelease == false)][0].tag_name // empty')"
|
||||
@@ -50,6 +52,18 @@ for arch in x86_64 aarch64; do
|
||||
ostree --repo="$validation_repo" refs | grep -Fxq "app/$app_id/$arch/stable"
|
||||
flatpak build-import-bundle "$repo_dir" "$bundles/$asset"
|
||||
done
|
||||
# `flatpak update` then offers existing installs of the old id the move to the new one, and
|
||||
# Flatpak moves their ~/.var/app data folder along. The mark is a new commit on the old ref (the
|
||||
# same app, so a skipped update changes nothing); it is made once and mirrored by later runs.
|
||||
for arch in x86_64 aarch64; do
|
||||
legacy_ref="app/$legacy_id/$arch/stable"
|
||||
ostree --repo="$repo_dir" rev-parse "$legacy_ref" >/dev/null 2>&1 || continue
|
||||
if ! ostree --repo="$repo_dir" show --print-metadata-key=ostree.endoflife-rebase "$legacy_ref" >/dev/null 2>&1; then
|
||||
flatpak build-commit-from --no-update-summary --end-of-life-rebase="$legacy_id=$app_id" \
|
||||
--src-ref="$legacy_ref" "$repo_dir" "$legacy_ref"
|
||||
fi
|
||||
test "$(ostree --repo="$repo_dir" show --print-metadata-key=ostree.endoflife-rebase "$legacy_ref")" = "'app/$app_id/$arch/stable'"
|
||||
done
|
||||
flatpak build-update-repo --title="SolidCraft" --comment='Official SolidCraft releases' \
|
||||
--description='Official Flatpak repository for SolidCraft' \
|
||||
--homepage="https://github.com/$GITHUB_REPOSITORY" --default-branch=stable "$repo_dir"
|
||||
|
||||
Reference in new issue
Block a user