Skip to content

Commit bbaf21a

Browse files
ndemiancclaude
andcommitted
Atom++ download flow: atompp.ai/download funnel + fix Intel dmg naming
- product.overlay.json: add downloadUrl (atompp.ai/download), releaseNotesUrl, updateUrl so the in-app updater's Download button has a target; fix stale licenseUrl/reportIssueUrl that still pointed at the old systemu-net/atom-plus-plus org -> atom-plus-plus/atompp - README: Download section points at atompp.ai/download (+ direct arch links + all releases) - make-dmg.sh: normalize the arch in the output name to arm64|x64 (was Atom++-x86_64.dmg on Intel, which mismatched the download funnel's expected Atom++-x64.dmg and would 404) - build-macos.sh + make-dmg.sh: accept an arch-override arg (arm64|x64) so both dmgs are producible; the Rosetta guard stays a host check independent of the build target The site side (site/app/download route + Download.tsx) lives in the separate, un-git-tracked site/ folder and deploys via Vercel. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent ec180d7 commit bbaf21a

4 files changed

Lines changed: 30 additions & 13 deletions

File tree

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Atom++ stands on the same battle-tested Monaco / Code-OSS core behind VS Code an
88

99
## Download
1010

11-
Grab the latest **`Atom++-<arch>.dmg`** from **[Releases](https://github.com/atom-plus-plus/atompp/releases/latest)** (arm64 for Apple silicon, x64 for Intel), open it, and drag Atom++ to Applications.
11+
Get the latest **`.dmg`** from **[atompp.ai/download](https://atompp.ai/download)** — Apple Silicon or Intel — open it, and drag Atom++ to Applications. (Direct links: [Apple Silicon](https://atompp.ai/download/arm64) · [Intel](https://atompp.ai/download/x64) · [all releases](https://github.com/atom-plus-plus/atompp/releases/latest).)
1212

1313
> Signed + notarized builds open with a plain double-click. If you're on an early unsigned build and macOS blocks first launch, right-click the app → **Open** (once), or run `xattr -dr com.apple.quarantine "/Applications/Atom++.app"`.
1414

‎branding/product.overlay.json‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,13 @@
3535
},
3636

3737
"licenseName": "MIT",
38-
"licenseUrl": "https://github.com/systemu-net/atom-plus-plus/blob/main/LICENSE",
39-
"reportIssueUrl": "https://github.com/systemu-net/atom-plus-plus/issues/new",
38+
"licenseUrl": "https://github.com/atom-plus-plus/atompp/blob/main/LICENSE",
39+
"reportIssueUrl": "https://github.com/atom-plus-plus/atompp/issues/new",
40+
41+
"_downloadComment": "Download + update funnel through atompp.ai (see site/app/download/[arch]/route.ts). downloadUrl is where the notify-only updater's Download button sends the user; releaseNotesUrl backs its 'Release Notes' button. updateUrl is the feed base — the updater GETs {updateUrl}/api/update/{target}/{quality}/{commit}; until that endpoint is live it returns 404 and the updater silently treats it as 'up to date' (notify-only, non-fatal). RELEASE NOTE: atompp.ai must resolve to the deployed site before these links work.",
42+
"downloadUrl": "https://atompp.ai/download",
43+
"releaseNotesUrl": "https://github.com/atom-plus-plus/atompp/releases/latest",
44+
"updateUrl": "https://atompp.ai",
4045

4146
"enableTelemetry": false,
4247
"telemetryOptOutUrl": "",

‎scripts/build-macos.sh‎

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,21 @@ VSCODE_DIR="$ROOT_DIR/vscode"
1414

1515
[ -d "$VSCODE_DIR" ] || { echo "Run ./scripts/bootstrap.sh first."; exit 1; }
1616

17-
# Detect arch -> gulp target.
18-
ARCH="$(uname -m)"
17+
# Target arch -> gulp target. First arg (arm64|x64) overrides the host arch so you can produce the
18+
# Intel build too — best run on a native x64 machine / CI runner (cross-building x64 from Apple
19+
# silicon needs the x64 toolchain installed). Defaults to the host arch.
20+
HOST_ARCH="$(uname -m)"
21+
ARCH="${1:-$HOST_ARCH}"
1922
case "$ARCH" in
20-
arm64) GULP_TARGET="vscode-darwin-arm64"; OUT_DIR="VSCode-darwin-arm64"; EXPECT_NODE_ARCH="arm64" ;;
21-
x86_64) GULP_TARGET="vscode-darwin-x64"; OUT_DIR="VSCode-darwin-x64"; EXPECT_NODE_ARCH="x64" ;;
22-
*) echo "Unsupported arch: $ARCH"; exit 1 ;;
23+
arm64|aarch64) ARCH="arm64"; GULP_TARGET="vscode-darwin-arm64"; OUT_DIR="VSCode-darwin-arm64" ;;
24+
x64|x86_64|amd64) ARCH="x64"; GULP_TARGET="vscode-darwin-x64"; OUT_DIR="VSCode-darwin-x64" ;;
25+
*) echo "Unsupported target arch: $ARCH (use arm64 or x64)"; exit 1 ;;
26+
esac
27+
# The Rosetta guard below is a HOST check (node must run native), independent of the build target.
28+
case "$HOST_ARCH" in
29+
arm64) EXPECT_NODE_ARCH="arm64" ;;
30+
x86_64) EXPECT_NODE_ARCH="x64" ;;
31+
*) echo "Unsupported host arch: $HOST_ARCH"; exit 1 ;;
2332
esac
2433

2534
cd "$VSCODE_DIR"
@@ -28,7 +37,7 @@ cd "$VSCODE_DIR"
2837
# (Run from inside the checkout; tolerate a missing glob under `set -e -o pipefail`.)
2938
NODE_ARCH="$(node -p 'process.arch')"
3039
if [ "$NODE_ARCH" != "$EXPECT_NODE_ARCH" ]; then
31-
echo "[build] ERROR: host is $ARCH but Node arch is '$NODE_ARCH' (Rosetta mismatch)."
40+
echo "[build] ERROR: host is $HOST_ARCH but Node arch is '$NODE_ARCH' (Rosetta mismatch)."
3241
echo "[build] Use a native arm64 Node and reinstall deps, then retry. See docs/M0-RUNBOOK.md."
3342
exit 1
3443
fi

‎scripts/make-dmg.sh‎

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,14 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
2222
ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
2323
cd "$ROOT_DIR"
2424

25-
ARCH="$(uname -m)"
25+
# Target arch: first arg (arm64|x64) overrides the host arch (match build-macos.sh). Arch is
26+
# normalized to arm64|x64 so the output is Atom++-arm64.dmg / Atom++-x64.dmg — the EXACT filenames
27+
# the download funnel (atompp.ai/download/<arch>) and the site link to. Do not emit "x86_64" here.
28+
ARCH="${1:-$(uname -m)}"
2629
case "$ARCH" in
27-
arm64) OUT_DIR="VSCode-darwin-arm64" ;;
28-
x86_64) OUT_DIR="VSCode-darwin-x64" ;;
29-
*) echo "[make-dmg] Unsupported arch: $ARCH"; exit 1 ;;
30+
arm64|aarch64) ARCH="arm64"; OUT_DIR="VSCode-darwin-arm64" ;;
31+
x64|x86_64|amd64) ARCH="x64"; OUT_DIR="VSCode-darwin-x64" ;;
32+
*) echo "[make-dmg] Unsupported arch: $ARCH (use arm64 or x64)"; exit 1 ;;
3033
esac
3134

3235
APP="$OUT_DIR/Atom++.app"

0 commit comments

Comments
 (0)