Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 18 additions & 11 deletions .github/workflows/dreamforge-desktop-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ jobs:
BASE="https://github.com/$GH_REPO/releases/download/$TAG"
MAC="Dreamforge_${VERSION}"
EXE="Dreamforge_${VERSION}_x64-setup.exe"
for f in "${MAC}_aarch64.app.tar.gz" "${MAC}_x64.app.tar.gz" "$EXE"; do
for f in "${MAC}_aarch64.app.tar.gz" "${MAC}_x64.app.tar.gz" "${MAC}_aarch64.dmg" "${MAC}_x64.dmg" "$EXE"; do
[ -s "dist/$f" ] || { echo "::error::missing dist/$f"; exit 1; }
done
# --pubkey refuses signatures from any key but the one installed apps trust.
Expand All @@ -286,17 +286,24 @@ jobs:
cat latest.json

- name: Upload to the rolling release
env:
NOTES: |
Dreamforge desktop installers. Take the newest version number.

**Windows:** download `Dreamforge_<version>_x64-setup.exe` and run it. If SmartScreen says "Windows protected your PC", click **More info**, then **Run anyway**.

**Mac:** download the DMG for your chip (`aarch64` for Apple Silicon, `x64` for Intel), open it and drag Dreamforge to Applications. The first launch is blocked because the app is not notarized: open **System Settings**, **Privacy & Security**, and click **Open Anyway**.

Installed apps update themselves from `latest.json` here.
run: |
gh release view "$TAG" > /dev/null 2>&1 || gh release create "$TAG" --target "$GITHUB_SHA" --title "Dreamforge desktop" --notes "$NOTES"
BASE="https://github.com/$GH_REPO/releases/download/$TAG"
# VERSION is plain x.y.z here: "Write latest.json" refused anything else.
sed -e "s/{VERSION}/$VERSION/g" -e "s#{BASE}#$BASE#g" scripts/dreamforge-release-notes.md > notes.md
! grep -q '[{}]' notes.md || { echo "::error::unfilled placeholder in the release notes"; exit 1; }
gh release view "$TAG" > /dev/null 2>&1 || gh release create "$TAG" --target "$GITHUB_SHA" --title "Dreamforge $VERSION" --notes-file notes.md
gh release upload "$TAG" dist/*.dmg dist/*.app.tar.gz dist/*.exe dist/*.sig --clobber
# The notes only link files uploaded above, so the page may run ahead of the feed.
gh release edit "$TAG" --title "Dreamforge $VERSION" --notes-file notes.md
# latest.json last, so apps only see the new version once every file it names is uploaded.
gh release upload "$TAG" latest.json --clobber
# Live from here, and a rerun would be refused as "not newer": warn, never fail.
# Remove the previous version's files: latest.json no longer names them,
# and a single set keeps "which file is mine" obvious on the page.
names=$(gh release view "$TAG" --json assets --jq '.assets[].name') || echo "::warning::could not list release assets; remove old files by hand"
for name in $names; do
case "$name" in
latest.json|*"_${VERSION}_"*) ;;
*) gh release delete-asset "$TAG" "$name" --yes || echo "::warning::could not delete $name; remove it by hand" ;;
esac
done
30 changes: 30 additions & 0 deletions scripts/dreamforge-release-notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
## Download Dreamforge {VERSION}

Pick the one line that matches your computer and click its file. You only download from this page once: after that, Dreamforge fetches new versions itself, and when **Ready to update!** appears in its sidebar, click it.

| Your computer | Click this file |
|---|---|
| **Windows PC** | [Dreamforge_{VERSION}_x64-setup.exe]({BASE}/Dreamforge_{VERSION}_x64-setup.exe) |
| **Mac with an Apple chip** (M1, M2, M3, M4, M5, A18 Pro or newer; most Macs from late 2020 on) | [Dreamforge_{VERSION}_aarch64.dmg]({BASE}/Dreamforge_{VERSION}_aarch64.dmg) |
| **Mac with an Intel chip** (older Macs) | [Dreamforge_{VERSION}_x64.dmg]({BASE}/Dreamforge_{VERSION}_x64.dmg) |

**Not sure which Mac you have?** Click the Apple menu in the top-left corner, then **About This Mac**. If there is a line called **Chip** (Apple M1, M4, A18 Pro or any other Apple chip), take the Apple chip file. If there is a line called **Processor** that mentions **Intel**, take the Intel file.

### Install on Windows

1. If your browser warns that the file "isn't commonly downloaded", keep it. In Edge, click **...** next to the download, then **Keep**, then **Show more**, then **Keep anyway**.
2. Open the downloaded file.
3. If Windows says "Windows protected your PC", click **More info**, then **Run anyway**. This appears because Dreamforge is new and its installer isn't signed with a paid code-signing certificate.
4. Follow the installer, then open Dreamforge from the Start menu.

If Windows instead says **Smart App Control blocked an app**, there is no Run anyway button: Windows won't allow unsigned apps while Smart App Control is on. Ask whoever sent you this link for help before changing that setting.

### Install on a Mac

1. Open the downloaded file and drag **Dreamforge** into **Applications**.
2. Open Dreamforge from Applications. The first time, macOS says "Dreamforge" Not Opened, because it isn't notarized by Apple. Click **Done**, not Move to Trash.
3. Within the hour, open **System Settings**, then **Privacy & Security**, and scroll down to **Security**. Next to "Dreamforge" was blocked, click **Open Anyway**. Click **Open Anyway** again and enter your Mac login password (or use Touch ID). If the button isn't there, do step 2 again. From then on, Dreamforge opens normally.

### You can ignore the other files

The files ending in `.app.tar.gz` and `.sig`, and `latest.json`, are what Dreamforge downloads by itself to update. The "Source code" links are added by GitHub. You don't need any of them.
Loading