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 <noreply@anthropic.com> 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 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RjGw4gA5ZvKrU8MQP6sBgT --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f06b76e14f
commit
6090e89b3f
50 files changed
+478
-317
No files matched your search
+3
-3
@@ -20,8 +20,8 @@ const SNAPSHOT_SIZE: (&str, &str) = ("960", "600");
|
||||
pub fn run(root: &Path, build: bool) -> Result<(), String> {
|
||||
let book = root.join("docs/book");
|
||||
let mut c = cargo();
|
||||
c.args(["build", "-q", "--release", "-p", "solvecraft-cli"]);
|
||||
crate::run(c, "cargo build -p solvecraft-cli")?;
|
||||
c.args(["build", "-q", "--release", "-p", "solidcraft-cli"]);
|
||||
crate::run(c, "cargo build -p solidcraft-cli")?;
|
||||
|
||||
let out = cli().arg("commands").output().map_err(|e| format!("solvecraft-cli: {e}"))?;
|
||||
if !out.status.success() {
|
||||
@@ -61,7 +61,7 @@ pub fn run(root: &Path, build: bool) -> Result<(), String> {
|
||||
/// The release solvecraft-cli just built.
|
||||
fn cli() -> std::process::Command {
|
||||
let mut c = cargo();
|
||||
c.args(["run", "-q", "--release", "-p", "solvecraft-cli", "--"]);
|
||||
c.args(["run", "-q", "--release", "-p", "solidcraft-cli", "--"]);
|
||||
c
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ const AREAS: &[(&str, &str)] = &[
|
||||
|
||||
pub fn run(root: &Path) -> Result<(), String> {
|
||||
let out = crate::cargo()
|
||||
.args(["run", "-q", "--release", "-p", "solvecraft-cli", "--", "commands"])
|
||||
.args(["run", "-q", "--release", "-p", "solidcraft-cli", "--", "commands"])
|
||||
.output()
|
||||
.map_err(|e| format!("solvecraft-cli: {e}"))?;
|
||||
if !out.status.success() {
|
||||
|
||||
+4
-4
@@ -46,8 +46,8 @@ pub const TABLE: &[(&str, Class)] = &[
|
||||
("mcp", Class::Layer(5)),
|
||||
("testkit", Class::Testkit),
|
||||
// apps and tooling
|
||||
("solvecraft", Class::Exempt),
|
||||
("cli", Class::Exempt),
|
||||
("solidcraft", Class::Exempt),
|
||||
("solidcraft-cli", Class::Exempt),
|
||||
("web", Class::Exempt),
|
||||
("xtask", Class::Exempt),
|
||||
];
|
||||
@@ -240,7 +240,7 @@ mod tests {
|
||||
c("solvecraft-doc", &[("solvecraft-geom", Normal, true)]),
|
||||
c("solvecraft-engine", &[("solvecraft-doc", Normal, true), ("solvecraft-testkit", Dev, true)]),
|
||||
c("solvecraft-ui-egui", &[("solvecraft-engine", Normal, true), ("egui", Normal, false)]),
|
||||
c("solvecraft-cli", &[("solvecraft-ui-egui", Normal, true)]),
|
||||
c("solidcraft-cli", &[("solvecraft-ui-egui", Normal, true)]),
|
||||
];
|
||||
assert!(check(&g).is_empty(), "{:?}", check(&g));
|
||||
}
|
||||
@@ -295,7 +295,7 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn apps_and_xtask_exempt() {
|
||||
for app in ["solvecraft", "solvecraft-cli", "xtask"] {
|
||||
for app in ["solidcraft", "solidcraft-cli", "xtask"] {
|
||||
assert!(check(&[c(app, &[("egui", Normal, false), ("solvecraft-ui-egui", Normal, true)])]).is_empty());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ use serde_json::Value;
|
||||
use crate::cargo;
|
||||
|
||||
pub const FILE: &str = "THIRD-PARTY-LICENSES.txt";
|
||||
const ROOTS: &[&str] = &["solvecraft", "solvecraft-cli", "solvecraft-web"];
|
||||
const ROOTS: &[&str] = &["solidcraft", "solidcraft-cli", "solvecraft-web"];
|
||||
|
||||
pub fn run(root: &Path, check: bool) -> Result<(), String> {
|
||||
let text = generate(root)?;
|
||||
|
||||
+1
-1
@@ -165,7 +165,7 @@ fn cmd_oracle(cli: Option<&str>) -> Result<(), String> {
|
||||
}
|
||||
None => {
|
||||
let mut c = cargo();
|
||||
c.args(["run", "-q", "--release", "-p", "solvecraft-cli", "--"]);
|
||||
c.args(["run", "-q", "--release", "-p", "solidcraft-cli", "--"]);
|
||||
c
|
||||
}
|
||||
};
|
||||
|
||||
Reference in new issue
Block a user