P0: Electrobun + Angular 22 + Tailwind skeleton boots under Bun

- Electrobun 1.18 shell with branding in src/shared/branding.ts
- Angular 22 zoneless UI in ui/ (workspace), Tailwind v4 shadcn-style tokens
- ng-icons/mynaui icon registry
- Node-version shim so Angular CLI runs under Bun without Node installed
- ssh2 SFTP verified working under Bun against test box

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Jokin
2026-07-11 13:23:15 +02:00
co-authored by Claude Fable 5
commit 8092cb0c08
31 changed files with 1946 additions and 0 deletions
+37
View File
@@ -0,0 +1,37 @@
import { BrowserWindow, Updater } from "electrobun/bun";
import { BRANDING } from "../shared/branding";
const PROD_URL = "views://app/index.html";
// In dev, scripts/dev.ts sets DEV_SERVER_URL to the running ng serve instance
// so the UI gets HMR. Packaged builds always load the bundled Angular app.
async function getMainViewUrl(): Promise<string> {
const devServerUrl = process.env.DEV_SERVER_URL;
if (!devServerUrl) return PROD_URL;
const channel = await Updater.localInfo.channel();
if (channel !== "dev") return PROD_URL;
try {
await fetch(devServerUrl, { method: "HEAD" });
return devServerUrl;
} catch {
console.log(`Dev server ${devServerUrl} not reachable, using ${PROD_URL}`);
return PROD_URL;
}
}
const url = await getMainViewUrl();
const mainWindow = new BrowserWindow({
title: BRANDING.appName,
url,
frame: {
width: 1200,
height: 760,
x: 120,
y: 120,
},
});
console.log(`${BRANDING.appName} started (${url})`);