Release under the SolidCraft name: binaries, assets and installers (#383)

* Release under the SolidCraft name: binaries, assets and installers

The desktop binary is now `solidcraft` and the CLI `solidcraft-cli` (the two app packages
are renamed; their folders move with the rest of the rename later). Every release asset is
named solidcraft-<ver>-… / SolidCraft-<ver>-windows-x64.exe, and the installers show the
SolidCraft product name.

Kept so existing installs keep updating (docs/compatibility.md):
- `solvecraft-cli` alias binary in every package, forwarding to solidcraft-cli with a
  deprecation note on stderr (tests/legacy_alias.rs).
- Linux app ID ai.storyteller.solvecraft (Flatpak ID, desktop entry, Wayland app_id).
- MSI UpgradeCode, so the MSI upgrades in place.
- deb Replaces/Conflicts/Provides and rpm Obsoletes/Provides solvecraft.
- An old-named .zsync copy so earlier AppImages find updates; a legacy .flatpakrepo copy.
- .solvecraft file associations; SOLVECRAFT_* fallbacks in the packaging scripts.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RjGw4gA5ZvKrU8MQP6sBgT

* MSI: register the legacy .solvecraft extension without a duplicate open verb

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01RjGw4gA5ZvKrU8MQP6sBgT

---------

Co-authored-by: Claude Opus 5.5 <[email protected]>
This commit is contained in:
bherbruckandClaude Opus 5.5 authored and GitHub committed 2026-10-12 16:05:35 -04:00
1 parent f06b76e14f
commit 6090e89b3f
50 files changed
+478 -317

No files matched your search

+10 -12
View File
@@ -63,8 +63,8 @@
echo "SolidCraft: ${driverLibDir pkgs} is missing — on NixOS enable hardware.graphics; on other distributions use a matching nixGL driver wrapper." >&2
fi
''}
command -v cc >/dev/null || echo "solvecraft: no C linker on PATH, cargo cannot link — use nix develop .#rust" >&2
echo "solvecraft: cargo run --release -p solvecraft -- --sample"
command -v cc >/dev/null || echo "solidcraft: no C linker on PATH, cargo cannot link — use nix develop .#rust" >&2
echo "solidcraft: cargo run --release -p solidcraft -- --sample"
${pkgs.lib.optionalString pkgs.stdenv.isLinux ''
export XDG_DATA_DIRS="${driverShareDir pkgs}:''${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
''}
@@ -97,7 +97,7 @@
CARGO_TARGET_DIR = "target/nix";
shellHook = ''
${shellHook pkgs}
echo "solvecraft: $(rustc --version), building into target/nix"
echo "solidcraft: $(rustc --version), building into target/nix"
'';
};
});
@@ -116,15 +116,15 @@
# The CLI draws the same packaging icons as the other Linux distributions.
cargoBuildFlags = [
"-p"
"solvecraft"
"solidcraft"
"-p"
"solvecraft-cli"
"solidcraft-cli"
];
cargoInstallFlags = [
"-p"
"solvecraft"
"solidcraft"
"-p"
"solvecraft-cli"
"solidcraft-cli"
];
# `cargo xtask ci` is the test gate (it wants a wasm target and a GPU); the sandbox has
# neither.
@@ -134,7 +134,6 @@
buildInputs = runtimeLibs pkgs;
postInstall = ''
ln -s solvecraft $out/bin/solidcraft
${pkgs.lib.optionalString pkgs.stdenv.isLinux ''
install -Dm644 packaging/linux/ai.storyteller.solvecraft.desktop \
$out/share/applications/ai.storyteller.solvecraft.desktop
@@ -143,7 +142,7 @@
for size in 16 24 32 48 64 128 256 512; do
icon=$out/share/icons/hicolor/''${size}x''${size}/apps/ai.storyteller.solvecraft.png
mkdir -p "$(dirname "$icon")"
$out/bin/solvecraft-cli icon --size "$size" --out "$icon" >/dev/null
$out/bin/solidcraft-cli icon --size "$size" --out "$icon" >/dev/null
done
''}
'';
@@ -151,7 +150,7 @@
# Linux only: the app reaches the window through dlopen'd libraries, so the packaged
# binary needs the same LD_LIBRARY_PATH the shell exports. macOS needs no wrapper.
postFixup = pkgs.lib.optionalString pkgs.stdenv.isLinux ''
wrapProgram $out/bin/solvecraft \
wrapProgram $out/bin/solidcraft \
--prefix LD_LIBRARY_PATH : "${libraryPath pkgs}" \
--set-default XDG_DATA_DIRS /usr/local/share:/usr/share \
--prefix XDG_DATA_DIRS : "$out/share:${driverShareDir pkgs}"
@@ -175,8 +174,7 @@
in {
default = desktop;
solidcraft = desktop;
solvecraft = { type = "app"; program = "${package}/bin/solvecraft"; };
cli = { type = "app"; program = "${package}/bin/solvecraft-cli"; };
cli = { type = "app"; program = "${package}/bin/solidcraft-cli"; };
});
};
}