Files
jgamboaandClaude 0eb5608873 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>
2026-10-05 11:08:03 +02:00

2.4 KiB

miniSCP site

The all-in-one landing page and download host for miniSCP. One static page, one flat download folder, served by Caddy. No JS, no build step.

Layout

site/
  index.html    # the landing page (pure static HTML/CSS)
  Caddyfile     # local :80 server config
  deploy.sh     # copy a build's artifacts into the download folder
  assets/       # images (logo, screenshots) — dropped in as they're ready

Deploys to /srv/miniscp on the server:

/srv/miniscp/
  index.html
  assets/
  dl/           # flat folder of all artifacts (the downloads + future updater feed)

Run it

# from the repo root, on the server
sudo mkdir -p /srv/miniscp/dl
sudo cp site/index.html /srv/miniscp/
sudo cp -r site/assets /srv/miniscp/     # once assets exist

caddy run --config site/Caddyfile --adapter caddyfile
# or install as a service:  sudo caddy start --config site/Caddyfile

Then open http://<host>/.

Publish a build

electrobun can't cross-compile, so each OS/arch is built on its own machine. On each build machine, after producing artifacts, drop them into the shared dl/ folder:

bun scripts/release.ts            # or --target win-x64 / linux-x64
site/deploy.sh                    # -> /srv/miniscp/dl

Serving on a different box than you build on? Stage locally, then sync:

MINISCP_DL_DIR=./_dl site/deploy.sh
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 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 (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 electrobun auto-updater's release.baseUrl.