- SftpProvider (ssh2): password + key auth, keepalive, clean-dispose vs unexpected-close distinction, POSIX path helpers, s->ms attr normalization - ConnectionStore: plain JSON at appDataDir, 0600, atomic writes, folders - connect/disconnect + store CRUD handlers; sessionClosed push -> panels fall back to local and in-flight jobs fail - UI: session dropdown per panel (local/saved connections/manage), disconnect button, connection manager modal (folders, edit form, save/connect) - electrobun bundler: external cpu-features/*.node (ssh2 optional natives) - RpcService: gate requests on RPC socket open; defer initial panel loads past first render - verified against 192.168.10.122: full op matrix, upload/download/remote-remote recursive transfers, roundtrip integrity, recursive remote delete, store CRUD Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
33 lines
717 B
TypeScript
33 lines
717 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",
|
|
},
|
|
watchIgnore: ["ui/**", "dist/**"],
|
|
mac: {
|
|
bundleCEF: false,
|
|
icons: BRANDING.icon,
|
|
},
|
|
linux: {
|
|
bundleCEF: false,
|
|
},
|
|
win: {
|
|
bundleCEF: false,
|
|
},
|
|
},
|
|
} satisfies ElectrobunConfig;
|