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>
46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import type { ElectrobunConfig } from "electrobun";
|
|
import { BRANDING } from "./src/shared/branding";
|
|
|
|
export default {
|
|
app: {
|
|
name: BRANDING.appName,
|
|
identifier: BRANDING.identifier,
|
|
version: BRANDING.version,
|
|
},
|
|
// Auto-updater feed. The flat artifacts land under /dl on the host (see site/);
|
|
// miniscp.com is fronted by an external proxy for TLS. baseUrl is baked into
|
|
// version.json at build time, so only builds made after this takes effect check
|
|
// for updates. generatePatch (default true) needs build-time network to this URL
|
|
// to diff against the currently-published version.
|
|
release: {
|
|
baseUrl: "https://miniscp.com/dl",
|
|
},
|
|
build: {
|
|
// Load-bearing: 2.x defaults to Cottontail, which ignores the whole
|
|
// `bun` block below — the ssh2 externals included.
|
|
mainProcess: "bun",
|
|
bun: {
|
|
entrypoint: "src/bun/index.ts",
|
|
// ssh2's optional native accelerators must never be bundled; its
|
|
// runtime try/catch falls back to pure JS when the require fails.
|
|
external: ["cpu-features", "*.node"],
|
|
},
|
|
copy: {
|
|
"ui/dist/ui/browser": "views/app",
|
|
"assets/tray": "views/assets/tray",
|
|
},
|
|
watchIgnore: ["ui/**", "dist/**"],
|
|
mac: {
|
|
bundleCEF: false,
|
|
icons: BRANDING.icon,
|
|
},
|
|
linux: {
|
|
bundleCEF: false,
|
|
},
|
|
win: {
|
|
bundleCEF: false, // system WebView2 keeps the bundle small
|
|
icon: "assets/icon.ico",
|
|
},
|
|
},
|
|
} satisfies ElectrobunConfig;
|