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:
bherbruckandClaude Opus 5.5 authored and GitHub committed 2026-10-13 05:20:58 -04:00
1 parent bcbfa50eac
commit e67cc0c747
21 files changed
+194 -68

No files matched your search

+12 -3
View File
@@ -3,7 +3,7 @@
# Adapted from PhotoCraft's AppRun (storytold/photocraft, Apache-2.0; see ATTRIBUTION.md).
#
# On Wayland the compositor resolves a window's dock icon by taking the window's
# app_id (ai.storyteller.solvecraft, kept as a compatibility shim) and looking up an installed .desktop file.
# app_id (ai.storyteller.solidcraft) and looking up an installed .desktop file.
# An AppImage installs nothing, so every AppImage run would otherwise show the
# generic "Wayland" icon. Best-effort desktop integration: on first run
# (and whenever the AppImage's path changes) install the .desktop entry and the
@@ -14,8 +14,9 @@
set -u
APPDIR="$(dirname "$(readlink -f "$0")")"
# Compatibility shim (docs/compatibility.md): the pre-rename reverse-DNS id.
DESK_ID=ai.storyteller.solvecraft
DESK_ID=ai.storyteller.solidcraft
# Compatibility shim (docs/compatibility.md): the desktop id of releases before 0.8.
OLD_DESK_ID=ai.storyteller.solvecraft
integrate() {
case "${SOLIDCRAFT_NO_DESKTOP_INTEGRATION:-${SOLVECRAFT_NO_DESKTOP_INTEGRATION:-}}" in
@@ -59,6 +60,14 @@ integrate() {
return 0
fi
# An entry and icons that an AppImage before 0.8 installed under the old id would show a
# second menu entry; remove them (only an entry this script wrote: it points Exec at a path).
old="$apps/$OLD_DESK_ID.desktop"
if [ -f "$old" ] && grep -q "^Icon=$OLD_DESK_ID\$" "$old" && grep -q '^Exec="' "$old"; then
rm -f "$old" "$data"/icons/hicolor/*/apps/"$OLD_DESK_ID".png 2>/dev/null
command -v update-desktop-database >/dev/null 2>&1 && update-desktop-database "$apps" >/dev/null 2>&1
fi
# Icons: per-file compare so an unchanged install costs a handful of cmp calls.
src_icons="$APPDIR/usr/share/icons/hicolor"
[ -d "$src_icons" ] || return 0