Compare commits

..
Author SHA1 Message Date
FredApps b1e0e034ee Release: SoundCraft v0.20.0 on main 2026-11-11 23:12:00 +01:00
FredApps eeb5d653a5 CI: nightly release dry run (#1508)
release.yml also runs nightly on main with craft-common-actions' dry-run: every release build
except macOS, with nothing signed, pushed or drafted. Breakage that only the release build hits
(riscv64, Flatpak, FreeBSD, packaging) then shows up the next morning instead of on release
day, as it did on 11 Nov 2026.
2026-11-11 23:04:40 +01:00
4 changed files with 64 additions and 21 deletions
+40 -2
View File
@@ -23,5 +23,43 @@ jobs:
uses: storytold/craft-common-actions/.github/workflows/nix.yml@main
git-sources:
# Tracks @main so suite-wide CI fixes reach every app without a PR in each repository.
uses: storytold/craft-common-actions/.github/workflows/git-sources.yml@main
name: Git dependencies come from storytold
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Harden runner
uses: step-security/harden-runner@1d88384fd173af6ecb012dfd0264a306b711241a # v2.22.4
with:
egress-policy: audit
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Git dependencies come from storytold
run: |
set -euo pipefail
test -f Cargo.lock || { echo "Cargo.lock is missing"; exit 1; }
# Source replacement, patches and path overrides in cargo config never show up
# in Cargo.lock. Parsed rather than grepped: TOML has many spellings of one key.
# Cargo still reads the legacy .cargo/config.
python3 - <<'PY'
import os, sys, tomllib
for path in (".cargo/config", ".cargo/config.toml"):
if not os.path.exists(path):
continue
config = tomllib.load(open(path, "rb"))
replaced = [name for name, source in config.get("source", {}).items()
if isinstance(source, dict) and "replace-with" in source]
if replaced or "patch" in config or "paths" in config:
print(f"{path} replaces, patches or overrides a source")
sys.exit(1)
PY
# Fails when Cargo.lock is out of date with the manifests.
cargo metadata --locked --format-version 1 > /dev/null
python3 - <<'PY'
import sys, tomllib
lock = tomllib.load(open("Cargo.lock", "rb"))
bad = sorted({p["source"] for p in lock.get("package", [])
if p.get("source", "").startswith("git+")
and not p["source"].startswith("git+https://github.com/storytold/")})
if bad:
print("Git dependencies outside github.com/storytold:", *bad, sep="\n")
sys.exit(1)
PY
+5
View File
@@ -1,6 +1,10 @@
name: Release
on:
# A nightly dry run on main: every release build except macOS, nothing signed or released
# (craft-common-actions release.yml `dry-run`). Finds release-only breakage before release day.
schedule:
- cron: "36 2 * * *"
push:
branches: [release]
workflow_dispatch:
@@ -30,6 +34,7 @@ jobs:
# Intentionally tracked at @main (not SHA-pinned) so org-wide CI improvements, security fixes, and build optimizations propagate without PR churn across all craftapp repos.
uses: storytold/craft-common-actions/.github/workflows/release.yml@main
with:
dry-run: ${{ github.event_name == 'schedule' }}
app-name: soundcraft
app-title: SoundCraft
version: ${{ inputs.version }}
Generated
+18 -18
View File
@@ -4331,7 +4331,7 @@ dependencies = [
[[package]]
name = "soundcraft"
version = "0.19.1"
version = "0.20.0"
dependencies = [
"chrono",
"clap",
@@ -4355,7 +4355,7 @@ dependencies = [
[[package]]
name = "soundcraft-au-host"
version = "0.19.1"
version = "0.20.0"
dependencies = [
"log",
"serde",
@@ -4365,7 +4365,7 @@ dependencies = [
[[package]]
name = "soundcraft-audio-io"
version = "0.19.1"
version = "0.20.0"
dependencies = [
"log",
"proptest",
@@ -4377,7 +4377,7 @@ dependencies = [
[[package]]
name = "soundcraft-automation"
version = "0.19.1"
version = "0.20.0"
dependencies = [
"clap",
"log",
@@ -4390,7 +4390,7 @@ dependencies = [
[[package]]
name = "soundcraft-clap-host"
version = "0.19.1"
version = "0.20.0"
dependencies = [
"clap-sys",
"libloading 0.9.0",
@@ -4403,7 +4403,7 @@ dependencies = [
[[package]]
name = "soundcraft-cli"
version = "0.19.1"
version = "0.20.0"
dependencies = [
"clap",
"clap_complete",
@@ -4421,7 +4421,7 @@ dependencies = [
[[package]]
name = "soundcraft-dsp"
version = "0.19.1"
version = "0.20.0"
dependencies = [
"log",
"proptest",
@@ -4432,7 +4432,7 @@ dependencies = [
[[package]]
name = "soundcraft-engine"
version = "0.19.1"
version = "0.20.0"
dependencies = [
"craft-docpath",
"log",
@@ -4456,7 +4456,7 @@ dependencies = [
[[package]]
name = "soundcraft-midi"
version = "0.19.1"
version = "0.20.0"
dependencies = [
"proptest",
"serde",
@@ -4466,7 +4466,7 @@ dependencies = [
[[package]]
name = "soundcraft-mix"
version = "0.19.1"
version = "0.20.0"
dependencies = [
"log",
"rayon",
@@ -4482,7 +4482,7 @@ dependencies = [
[[package]]
name = "soundcraft-model"
version = "0.19.1"
version = "0.20.0"
dependencies = [
"proptest",
"serde",
@@ -4495,7 +4495,7 @@ dependencies = [
[[package]]
name = "soundcraft-playback"
version = "0.19.1"
version = "0.20.0"
dependencies = [
"cpal",
"log",
@@ -4510,7 +4510,7 @@ dependencies = [
[[package]]
name = "soundcraft-time"
version = "0.19.1"
version = "0.20.0"
dependencies = [
"proptest",
"serde",
@@ -4520,7 +4520,7 @@ dependencies = [
[[package]]
name = "soundcraft-ui-egui"
version = "0.19.1"
version = "0.20.0"
dependencies = [
"craft-ui",
"craft-update",
@@ -4550,7 +4550,7 @@ dependencies = [
[[package]]
name = "soundcraft-video"
version = "0.19.1"
version = "0.20.0"
dependencies = [
"craft-media",
"image",
@@ -4562,7 +4562,7 @@ dependencies = [
[[package]]
name = "soundcraft-vst3-host"
version = "0.19.1"
version = "0.20.0"
dependencies = [
"libloading 0.9.0",
"log",
@@ -4578,7 +4578,7 @@ dependencies = [
[[package]]
name = "soundcraft-web"
version = "0.19.1"
version = "0.20.0"
dependencies = [
"eframe",
"egui",
@@ -6226,7 +6226,7 @@ checksum = "e450f9b2ed1dff33c94c12589a87338689467b9c4f5d8a5710bd09a847d2c8a7"
[[package]]
name = "xtask"
version = "0.19.1"
version = "0.20.0"
dependencies = [
"serde_json",
]
+1 -1
View File
@@ -4,7 +4,7 @@ members = ["crates/*", "apps/*", "xtask"]
default-members = ["crates/*", "apps/*", "xtask"]
[workspace.package]
version = "0.19.1"
version = "0.20.0"
edition = "2024"
license = "MIT OR Apache-2.0"
rust-version = "1.90"