Migrate to Electrobun 2.0.2 (Hutch)
Electrobun 2.x replaces the vendored CLI with Hutch: the npm package is now a
bootstrap whose exports are a throwing stub, and the SDK is projected into
.hutch/devkit. The app stays on the Bun main process — `mainProcess: "bun"` is
load-bearing, since the 2.x default (Cottontail) ignores build.bun and with it
the ssh2 externals — and the bundle now ships the pinned Bun 1.4.0.
- electrobun 2.0.2 as an exact devDependency. `electrobun prepare` takes the
old CLI re-sign step's slot in postinstall and every dev/build/start/release
script: tsc (root tsconfig extends the devkit's) and the Angular build
(electrobun/view mapped into the devkit) resolve the SDK there.
- Imports move to electrobun/main. The CLI re-sign script and the v1 "three"
type shim are gone (Hutch's binaries are validly signed).
- UI: Electroview's bunSocket is hostSocket; noImplicitReturns is off because
the devkit's raw-TS browser SDK compiles inside the UI program.
- Updater.applyUpdate() now consults before-quit, so the transfers/unsaved
guard's "Quit Anyway" re-runs the apply instead of quitting without it.
- 2.x applies trafficLightOffset from macOS's default button position (1.18.1
clamped it inside the titlebar); {12, 4} centres the lights in the header.
- Releases: mac-x64 dropped (2.x publishes no macOS x64 core, so no Rosetta
path). artifacts/ is emptied before each build and published verbatim.
Installers lost the stable- prefix (the update feed kept it), so release.ts,
deploy.sh and the site links follow. Linux ships Electrobun's Setup
installer instead of the portable tarball and its miniSCP.sh wrapper.
- Docs cover all of the above, plus re-checks against 2.0.2: still no native
modal windows; window close is now cancellable through will-close.
Verified: tsc, build:ui, a stable mac-arm64 release (dmg + the v1-compatible
stable-macos-arm64 feed) and dev launches (RPC, Settings window, traffic
lights). Windows/Linux builds and the v1 -> 2.x Windows update bridge still
need their first run on native machines.
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -19,7 +19,7 @@
|
||||
header @feed Cache-Control "no-cache"
|
||||
|
||||
# Installers/payloads keep stable names but get overwritten each release.
|
||||
@pkg path *.dmg *.zip *.tar.zst
|
||||
@pkg path *.dmg *.zip *.tar.zst *.tar.gz
|
||||
header @pkg Cache-Control "public, max-age=300"
|
||||
|
||||
# browse => directory listing; file_server serves range requests
|
||||
|
||||
+7
-5
@@ -42,7 +42,7 @@ electrobun can't cross-compile, so each OS/arch is built on its own machine. On
|
||||
machine, after producing artifacts, drop them into the shared `dl/` folder:
|
||||
|
||||
```bash
|
||||
bun scripts/release.ts # or --target mac-x64 / win-x64
|
||||
bun scripts/release.ts # or --target win-x64 / linux-x64
|
||||
site/deploy.sh # -> /srv/miniscp/dl
|
||||
```
|
||||
|
||||
@@ -56,14 +56,16 @@ rsync -av ./_dl/ user@host:/srv/miniscp/dl/
|
||||
That's the whole workflow: **build, drop the artifacts, done.** Installers keep stable names and
|
||||
overwrite in place, so the download links on the page never change.
|
||||
|
||||
> **Don't delete old `*.patch` files.** They're the incremental-update trail for the (upcoming)
|
||||
> **Don't delete old `*.patch` files.** They're the incremental-update trail for the
|
||||
> built-in updater — removing them forces older installs to re-download the full app.
|
||||
|
||||
## Notes
|
||||
|
||||
- Downloads live under `/dl/` and are browsable at `http://<host>/dl/`.
|
||||
- The page links to fixed, stable filenames (`stable-macos-arm64-miniSCP.dmg`, …) so it stays
|
||||
static and always points at the latest build.
|
||||
- The page links to fixed, stable filenames (`macos-arm64-miniSCP.dmg`, `win-x64-miniSCP-Setup.zip`,
|
||||
…) so it stays static and always points at the latest build. Electrobun 2.x names installers
|
||||
without the `stable-` prefix; only the updater feed (`stable-<os>-<arch>-update.json`, `.tar.zst`,
|
||||
`.patch`) keeps it. Installers left over under the old v1 `stable-…` names are stale — delete them.
|
||||
- Builds are currently unsigned — the FAQ on the page covers the macOS `xattr` step and the
|
||||
Windows SmartScreen prompt.
|
||||
- `/dl/` is also the intended `release.baseUrl` for the future electrobun auto-updater.
|
||||
- `/dl/` is also the electrobun auto-updater's `release.baseUrl`.
|
||||
|
||||
+9
-6
@@ -3,7 +3,7 @@ set -euo pipefail
|
||||
# Publish this machine's built artifacts into the served flat download folder.
|
||||
#
|
||||
# Run from the repo root AFTER building for this host's target, e.g.:
|
||||
# bun scripts/release.ts # or --target mac-x64 / win-x64
|
||||
# bun scripts/release.ts # or --target win-x64 / linux-x64
|
||||
# site/deploy.sh
|
||||
#
|
||||
# electrobun cannot cross-compile, so each OS/arch is built (and deployed) on its
|
||||
@@ -19,12 +19,15 @@ set -euo pipefail
|
||||
dl="${MINISCP_DL_DIR:-/srv/miniscp/dl}"
|
||||
mkdir -p "$dl"
|
||||
|
||||
# electrobun's flat artifacts (stable-<os>-<arch>-*): installers, update payloads,
|
||||
# update.json, and (once release.baseUrl is set) .patch files.
|
||||
if compgen -G 'artifacts/stable-*' >/dev/null; then
|
||||
cp -f artifacts/stable-* "$dl"/
|
||||
# electrobun's flat artifacts, verbatim — the updater contract, never rename them:
|
||||
# the update feed (stable-<os>-<arch>-update.json, .tar.zst, .patch) plus the
|
||||
# installers, which 2.x names without the channel prefix (macos-arm64-miniSCP.dmg,
|
||||
# win-x64-miniSCP-Setup.zip). release.ts empties artifacts/ first, so it holds
|
||||
# exactly this build.
|
||||
if compgen -G 'artifacts/*' >/dev/null; then
|
||||
cp -f artifacts/* "$dl"/
|
||||
else
|
||||
echo "deploy: WARN — no artifacts/stable-* found (did scripts/release.ts run?)" >&2
|
||||
echo "deploy: WARN — artifacts/ is empty (did scripts/release.ts run?)" >&2
|
||||
fi
|
||||
|
||||
# Windows portable zip is a release.ts extra (build-numbered) → give it a stable name.
|
||||
|
||||
+4
-5
@@ -215,9 +215,8 @@
|
||||
<h2 id="download">Download</h2>
|
||||
<p>Always the latest stable build.</p>
|
||||
<div class="downloads">
|
||||
<a class="dl" href="/dl/stable-macos-arm64-miniSCP.dmg">macOS<small>Apple Silicon</small></a>
|
||||
<a class="dl" href="/dl/stable-macos-x64-miniSCP.dmg">macOS<small>Intel</small></a>
|
||||
<a class="dl" href="/dl/stable-win-x64-miniSCP-Setup.zip">Windows<small>Installer</small></a>
|
||||
<a class="dl" href="/dl/macos-arm64-miniSCP.dmg">macOS<small>Apple Silicon</small></a>
|
||||
<a class="dl" href="/dl/win-x64-miniSCP-Setup.zip">Windows<small>Installer</small></a>
|
||||
<a class="dl" href="/dl/stable-win-x64-miniSCP-portable.zip">Windows<small>Portable</small></a>
|
||||
</div>
|
||||
<p class="browse">Looking for everything? <a href="/dl/">browse all files</a>.</p>
|
||||
@@ -226,8 +225,8 @@
|
||||
<h2 id="faq">FAQ</h2>
|
||||
<dl class="faqtable">
|
||||
<dt>Which platforms are supported?</dt>
|
||||
<dd>macOS (Apple Silicon and Intel) and Windows 11+ (x64). macOS is the primary target;
|
||||
Windows is currently in beta.</dd>
|
||||
<dd>macOS (Apple Silicon) and Windows 11+ (x64). macOS is the primary target;
|
||||
Windows is currently in beta. Intel Macs are not supported.</dd>
|
||||
|
||||
<dt>macOS says the app is "damaged and can't be opened".</dt>
|
||||
<dd>The builds aren't code-signed yet, so macOS quarantines them on download. Clear the
|
||||
|
||||
Reference in New Issue
Block a user