Files
miniSCP/electrobun.config.ts
T
JokinandClaude Fable 5 42e5e5bb9a Tray icon with live transfer progress and tabs menu
- AppTray: template menu-bar icon (22pt, adapts to light/dark). While
  transfers run it swaps to pre-rendered frames — faded arrows + a fill bar
  showing aggregate doneBytes/totalBytes of the queue (nearest 5%, throttled
  500ms); back to the glyph when idle. No runtime image encoding.
- Menu: one entry per tab (checkmark on the active one) with live per-tab
  transfer count and percentage (jobs mapped via session ids), an overall
  progress row while transferring, Show <app>, Quit. Selecting a tab
  activates the window and switches to it.
- First use of webview->bun messages: PanelsService pushes workspacesSync
  (tab names, sessions, active id) via a new ready-gated send proxy; verified
  end-to-end in the running app.
- engine.aggregateProgress(): totals + per-session breakdown over non-terminal
  jobs (unit-verified idle/mid-transfer/idle).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-11 21:41:51 +02:00

34 lines
756 B
TypeScript

import type { ElectrobunConfig } from "electrobun";
import { BRANDING } from "./src/shared/branding";
export default {
app: {
name: BRANDING.appName,
identifier: BRANDING.identifier,
version: BRANDING.version,
},
build: {
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,
},
},
} satisfies ElectrobunConfig;