From 76b9b621a2e108583a510df592fa60b71d3ddd87 Mon Sep 17 00:00:00 2001 From: Jokin Date: Sat, 11 Jul 2026 14:19:16 +0200 Subject: [PATCH] P6: placeholder icon, README, packaged build verified - assets/icon.png (generated by scripts/make-icon.py) + icon.iconset (scripts/gen-iconset.sh); electrobun compiles it to AppIcon.icns - branding.icon points at the iconset - README: features, stack, dev/build, rebranding, plaintext-password warning, shortcuts, v1 scope - verified: full production build (ng build + electrobun build) produces a launchable BunSCP.app that boots standalone from views://app Co-Authored-By: Claude Fable 5 --- README.md | 130 ++++++++++++++++++++++++ assets/icon.iconset/icon_128x128.png | Bin 0 -> 5737 bytes assets/icon.iconset/icon_128x128@2x.png | Bin 0 -> 10936 bytes assets/icon.iconset/icon_16x16.png | Bin 0 -> 736 bytes assets/icon.iconset/icon_16x16@2x.png | Bin 0 -> 1501 bytes assets/icon.iconset/icon_256x256.png | Bin 0 -> 10936 bytes assets/icon.iconset/icon_256x256@2x.png | Bin 0 -> 21561 bytes assets/icon.iconset/icon_32x32.png | Bin 0 -> 1501 bytes assets/icon.iconset/icon_32x32@2x.png | Bin 0 -> 3005 bytes assets/icon.iconset/icon_512x512.png | Bin 0 -> 21561 bytes assets/icon.iconset/icon_512x512@2x.png | Bin 0 -> 16838 bytes assets/icon.png | Bin 0 -> 16838 bytes scripts/gen-iconset.sh | 17 ++++ scripts/make-icon.py | 103 +++++++++++++++++++ src/shared/branding.ts | 4 +- 15 files changed, 253 insertions(+), 1 deletion(-) create mode 100644 README.md create mode 100644 assets/icon.iconset/icon_128x128.png create mode 100644 assets/icon.iconset/icon_128x128@2x.png create mode 100644 assets/icon.iconset/icon_16x16.png create mode 100644 assets/icon.iconset/icon_16x16@2x.png create mode 100644 assets/icon.iconset/icon_256x256.png create mode 100644 assets/icon.iconset/icon_256x256@2x.png create mode 100644 assets/icon.iconset/icon_32x32.png create mode 100644 assets/icon.iconset/icon_32x32@2x.png create mode 100644 assets/icon.iconset/icon_512x512.png create mode 100644 assets/icon.iconset/icon_512x512@2x.png create mode 100644 assets/icon.png create mode 100755 scripts/gen-iconset.sh create mode 100644 scripts/make-icon.py diff --git a/README.md b/README.md new file mode 100644 index 0000000..6e9cf30 --- /dev/null +++ b/README.md @@ -0,0 +1,130 @@ +# BunSCP + +A cross-platform, dual-panel SFTP/local file manager — a small WinSCP-style +commander built on **Bun**, **Electrobun**, and **Angular**. + +Each of the two panels independently shows either the local filesystem or a +remote server over SSH/SFTP, so you can move files **local↔remote**, +**remote↔remote**, or **local↔local** through one symmetric engine. + +> **Name & icon are placeholders.** See [Rebranding](#rebranding) — it's a +> one-file change. + +## Features + +- Dual-panel commander UI; either panel can be Local or any saved connection. +- Browse, sort (name/size/modified, folders first), keyboard navigation. +- Create folder / file, rename, delete (recursive), change permissions (chmod). +- Upload, download, and remote→remote copy — files **and** whole folders — + with a transfer queue, per-job progress, and cancel. +- Connection manager: saved connections organised into folders, password or + private-key auth (with passphrase). + +## Stack + +| Layer | Choice | +| ---------- | ------------------------------------------------------------- | +| Runtime | Bun (main process, all SSH/SFTP + file IO) | +| Desktop | Electrobun 1.18 (native webview, typed RPC bridge) | +| Frontend | Angular 22 (standalone, signals, zoneless) in `ui/` | +| Styling | Tailwind CSS v4, shadcn-style tokens (no component library) | +| Icons | @ng-icons/mynaui | +| SSH/SFTP | `ssh2` (pure-JS under Bun) | + +The repo is a Bun workspace: the Electrobun app at the root, the Angular app in +`ui/`. Shared types and the RPC contract live in `src/shared/` and are imported +by both sides. + +``` +src/shared/ types.ts, rpc.ts (wire contract), branding.ts +src/bun/ Electrobun main process + fs/ FileSystemProvider + LocalProvider + SftpProvider + registry + transfers/ engine.ts (queue/stream copy) + walk.ts (recursive helpers) + store/ connections.json persistence +ui/src/app/ Angular components + signal services +``` + +## Prerequisites + +- [Bun](https://bun.sh) ≥ 1.3 (`bun --version`). +- macOS: **Xcode Command Line Tools** (for the app build). +- No Node install required — a preload shim (`scripts/node-version-shim.ts`) + satisfies the Angular CLI's Node version check while running under Bun. + +## Setup + +```bash +bun install # installs root + ui workspace deps +``` + +## Develop + +```bash +bun run dev +``` + +This starts the Angular dev server (hot reload for UI code) and launches the +Electrobun app pointed at it. Edits under `ui/` reload instantly; edits to the +Bun main process (`src/bun/**`, RPC schema) trigger an app relaunch. + +## Build a packaged app + +```bash +bun run build # ng build (ui/dist) + electrobun build -> build/*/BunSCP*.app +``` + +The Angular bundle is copied into the app under `views://app`. The macOS icon is +compiled from `assets/icon.iconset` into `AppIcon.icns` automatically. + +For a distributable (optimized, with auto-update channel) build, use +`bunx electrobun build --env=stable` (see the +[Electrobun docs](https://framework.blackboard.sh/electrobun/) for signing, +notarization, and release hosting). + +## Rebranding + +Everything user-facing reads from **[`src/shared/branding.ts`](src/shared/branding.ts)**: + +```ts +export const BRANDING = { + appName: "BunSCP", // window title, bundle name, app-data folder + identifier: "es.teknes.bunscp", + version: "0.1.0", + icon: "assets/icon.iconset", +} as const; +``` + +To change the icon: replace `assets/icon.png` (1024×1024) and run +`./scripts/gen-iconset.sh` (regenerates the `.iconset` with `sips`), or point +`icon` at your own `.iconset`. `scripts/make-icon.py` regenerates the current +placeholder. + +> Renaming `appName` changes the app-data directory, so existing saved +> connections won't be found under the new name — copy `connections.json` across +> if you need them. + +## Where connections are stored + +Saved connections live in a plain JSON file in the OS app-data directory +(macOS: `~/Library/Application Support/BunSCP/connections.json`), written with +`0600` permissions. + +> ⚠️ **Passwords are stored in plaintext** in this file (a deliberate v1 +> simplicity choice). Anyone who can read the file can read the passwords. If +> that isn't acceptable for your use, use key-based auth or don't save the +> password (connect ad-hoc). OS-keychain storage is a natural future addition. + +## Keyboard shortcuts + +`Tab` switch panel · `↑`/`↓`/`PgUp`/`PgDn`/`Home`/`End` move cursor · +`Space` select · `Enter` open folder · `Backspace` parent · +`Ctrl/Cmd+A` select all · `F5` copy to other panel · `F2` rename · +`F7` new folder · `F8`/`Delete` delete. + +(On Macs, function keys may need `fn` — every action also has a toolbar button.) + +## Not in v1 + +Drag-and-drop, file preview/edit, transfer resume, symlink following +(symlinks are listed but skipped by transfers), OS keychain, Windows/Linux +packaging (the code is portable; only macOS packaging is wired up). diff --git a/assets/icon.iconset/icon_128x128.png b/assets/icon.iconset/icon_128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..ef0f8d403f3c0e86a0de25b6ef490d8417187199 GIT binary patch literal 5737 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 MkyMl@6gTkwA0@p1q5uE@ literal 0 HcmV?d00001 diff --git a/assets/icon.iconset/icon_128x128@2x.png b/assets/icon.iconset/icon_128x128@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9adf35d56d0ad92857c8dae6a73b72233a797dc2 GIT binary patch literal 10936 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 literal 0 HcmV?d00001 diff --git a/assets/icon.iconset/icon_16x16.png b/assets/icon.iconset/icon_16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..ea826386c5e8f584be1bf5737dda20b864cc6819 GIT binary patch literal 736 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uuz(rC1}QWNE&Rm5z~trW;uvBf zxHQ;4QWs#yB6BopYbh7u!*$8@G$*?Gh5|ZysubcS);MF6x0+U+>4xgMo zLt;^9kz;2@L+rHLGd|(duks4DOx~zI^X1C-tJm+6)BPV}fShRw4!`!)lb`-viT*PNntx_v~=EPH~yB**Cec6SVODaNtx8z;t z?B*3_W0GJsx|-rUt*56{Dko24~GihgX}EzP>hU+rm#WLUWQg`BMkJ!$zdXH2*h zEE|HwRLqJhzo>8t9)4h;cJFPPhww(vT9x{h6PwE1Gu;|pSW3=uy?9vTxX8%pQboaQ z<1KA((vKWzlI2>ix=1Rr%uC_Rot<)XmONOg6Vn#jGxhu8OI8VqvlRad`}hfTX)rzH z)SkECyzkPzL46!YL}T_CbR-$}H?J#kWNFjqU3A@_m79q@$@r9ZpRxdJ&b3#mUY^$u zoS*x?A~JhHkY;l2U+12n`dZ1iW$H;frJRLDXZA9t`2i0v0d!Jjm8R#qB!BOA%$s%eOX~Ej+U@XeRgX$N%+ymqezY zd=$4^@v4obBacM<BlK Jmvv4FO#t#(F3$h} literal 0 HcmV?d00001 diff --git a/assets/icon.iconset/icon_16x16@2x.png b/assets/icon.iconset/icon_16x16@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..624d692aa8f4aa765637963a8a5e908f5f9c810b GIT binary patch literal 1501 zcmV<31tR*1P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$^M@d9MR9Fe^S4&JCRT%!ynVEYp zP%5$aR$h{ll2A9+bZJcsQb|qRxpe2M8%>NW7bdkv*}HS^)}4t+OMpg9+%#%p(k2+N z6nROcA~3IWj^BUg&Yd$nOjDb5(?1zz=A8fWo$r6lh3J_)Wd_9Y@vqCbuDpFoYr0Iv z^cXVoc-_N0f`ld^R;8r5Z*F~ko9MbetVMJrfbo$Z&UsY(0uJ7gvI0AEl6c4gt72`u(uca!ShTfYRar2%d)$@tF{=j#k_Ae3zV`=&~-X52B*JJUVrZF<= zjR}L=B>ISvbtq~RI34US7`xNsE_r{Z3+Q`Q}kkA-P&+5YmHI ztrJoJaH74Ph6a0hi9Dp>kClg%s>HrCI|F?U6k;}QgCMXr763bR#7!?RmjE#J0>xWm zz$Bnuf&M-E{lSJ!L9JFHX)4s&wqxr;A-PM-8(<)^DH!N)SR3vpZ5#k#!0>2x>q|`M3>vK>O^dW4bIH5RZJ45YAmqGPsHQ)>* zteIw-a{r|iuz^6|8dQBQ2CP_T$fXT{iswnl?H0)97ZWj(R8gG3j#G%rXVBKxVSt;^ zJsig<13-@oi@X59px9ZhTA}{ly2Zucf#u~*ILj)UJEyzR)%qTI9umo{*)GVBf;;<0 zZMaebU{s9XBK$RU0mKwV+019hxiAAsnlZr77|@sx`7T)-2B#mAPS4(MXl>Y*S!hYd z?po^|4=y|!8hZ1xFk&`4QKrUIj&mA@T!005W`jpEON8Q7%B5D|%NbapmK>|qtQ}!S z78bspYc7E|NBaBs=kZCN#@8Pw<=pdV<`X1vNVwQ>b_D?nif278e$LmkJ3Hk;l=;ZU zFSlhl%`u#iWd?X-aPZV34>_~PRHJ=fSNn{0V| zdwHv?t1*cY3LxsN{TYMWMIs*W;@&svCW+{srKKNB!8u~726({{d8YrBOIq?jCZY#k zO6hX+j(!yUkBM2uyqa5j@Y8K5ITPV%lV__>g@JzoeG~vrj(TH&00000NkvXXu0mjf D!Gx%8 literal 0 HcmV?d00001 diff --git a/assets/icon.iconset/icon_256x256.png b/assets/icon.iconset/icon_256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..9adf35d56d0ad92857c8dae6a73b72233a797dc2 GIT binary patch literal 10936 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 literal 0 HcmV?d00001 diff --git a/assets/icon.iconset/icon_256x256@2x.png b/assets/icon.iconset/icon_256x256@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..8ccdeff4f7885f7c9358615bd545837ae8f1092a GIT binary patch literal 21561 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 b4`p*QKK@zf(DJ?k1U%LjcIPY3y2bnlS$4>) literal 0 HcmV?d00001 diff --git a/assets/icon.iconset/icon_32x32.png b/assets/icon.iconset/icon_32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..624d692aa8f4aa765637963a8a5e908f5f9c810b GIT binary patch literal 1501 zcmV<31tR*1P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91AfN*P1ONa40RR91AOHXW0IY^$^8f$^M@d9MR9Fe^S4&JCRT%!ynVEYp zP%5$aR$h{ll2A9+bZJcsQb|qRxpe2M8%>NW7bdkv*}HS^)}4t+OMpg9+%#%p(k2+N z6nROcA~3IWj^BUg&Yd$nOjDb5(?1zz=A8fWo$r6lh3J_)Wd_9Y@vqCbuDpFoYr0Iv z^cXVoc-_N0f`ld^R;8r5Z*F~ko9MbetVMJrfbo$Z&UsY(0uJ7gvI0AEl6c4gt72`u(uca!ShTfYRar2%d)$@tF{=j#k_Ae3zV`=&~-X52B*JJUVrZF<= zjR}L=B>ISvbtq~RI34US7`xNsE_r{Z3+Q`Q}kkA-P&+5YmHI ztrJoJaH74Ph6a0hi9Dp>kClg%s>HrCI|F?U6k;}QgCMXr763bR#7!?RmjE#J0>xWm zz$Bnuf&M-E{lSJ!L9JFHX)4s&wqxr;A-PM-8(<)^DH!N)SR3vpZ5#k#!0>2x>q|`M3>vK>O^dW4bIH5RZJ45YAmqGPsHQ)>* zteIw-a{r|iuz^6|8dQBQ2CP_T$fXT{iswnl?H0)97ZWj(R8gG3j#G%rXVBKxVSt;^ zJsig<13-@oi@X59px9ZhTA}{ly2Zucf#u~*ILj)UJEyzR)%qTI9umo{*)GVBf;;<0 zZMaebU{s9XBK$RU0mKwV+019hxiAAsnlZr77|@sx`7T)-2B#mAPS4(MXl>Y*S!hYd z?po^|4=y|!8hZ1xFk&`4QKrUIj&mA@T!005W`jpEON8Q7%B5D|%NbapmK>|qtQ}!S z78bspYc7E|NBaBs=kZCN#@8Pw<=pdV<`X1vNVwQ>b_D?nif278e$LmkJ3Hk;l=;ZU zFSlhl%`u#iWd?X-aPZV34>_~PRHJ=fSNn{0V| zdwHv?t1*cY3LxsN{TYMWMIs*W;@&svCW+{srKKNB!8u~726({{d8YrBOIq?jCZY#k zO6hX+j(!yUkBM2uyqa5j@Y8K5ITPV%lV__>g@JzoeG~vrj(TH&00000NkvXXu0mjf D!Gx%8 literal 0 HcmV?d00001 diff --git a/assets/icon.iconset/icon_32x32@2x.png b/assets/icon.iconset/icon_32x32@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..024d4c6759ed0a4b95a964b2a4d5fbb25318b09b GIT binary patch literal 3005 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 literal 0 HcmV?d00001 diff --git a/assets/icon.iconset/icon_512x512.png b/assets/icon.iconset/icon_512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..8ccdeff4f7885f7c9358615bd545837ae8f1092a GIT binary patch literal 21561 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 b4`p*QKK@zf(DJ?k1U%LjcIPY3y2bnlS$4>) literal 0 HcmV?d00001 diff --git a/assets/icon.iconset/icon_512x512@2x.png b/assets/icon.iconset/icon_512x512@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3bb2789d7972ec28426e926ad9994db6e0d230c7 GIT binary patch literal 16838 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 q3!y*iJf5?%f4T4?-1%vgB*)bR)*VUrch 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 q3!y*iJf5?%f4T4?-/dev/null + sips -z $((size * 2)) $((size * 2)) "$SRC" --out "$SET/icon_${size}x${size}@2x.png" >/dev/null +done + +echo "generated $SET" diff --git a/scripts/make-icon.py b/scripts/make-icon.py new file mode 100644 index 0000000..ebbf0a3 --- /dev/null +++ b/scripts/make-icon.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python3 +"""Generate a placeholder app icon (1024x1024 PNG) with a dual-panel + transfer +motif. No third-party deps — raw RGBA encoded via zlib. Replace assets/icon.png +(and re-run scripts/gen-iconset.sh) to rebrand.""" +import struct +import zlib +import sys + +N = 1024 + + +def lerp(a, b, t): + return tuple(round(a[i] + (b[i] - a[i]) * t) for i in range(3)) + + +def rounded_rect_alpha(x, y, x0, y0, x1, y1, r): + """Coverage (0..1) for a rounded rect with ~1px antialiasing.""" + # distance outside the rect's rounded boundary + dx = max(x0 + r - x, 0, x - (x1 - r)) + dy = max(y0 + r - y, 0, y - (y1 - r)) + if x < x0 or x > x1 or y < y0 or y > y1: + return 0.0 + # corner regions + cx = None + if x < x0 + r and y < y0 + r: + cx, cy = x0 + r, y0 + r + elif x > x1 - r and y < y0 + r: + cx, cy = x1 - r, y0 + r + elif x < x0 + r and y > y1 - r: + cx, cy = x0 + r, y1 - r + elif x > x1 - r and y > y1 - r: + cx, cy = x1 - r, y1 - r + if cx is not None: + d = ((x - cx) ** 2 + (y - cy) ** 2) ** 0.5 + return max(0.0, min(1.0, r - d + 0.5)) + return 1.0 + + +BG_TOP = (0x4F, 0x46, 0xE5) # indigo-600 +BG_BOT = (0x18, 0x18, 0x1B) # zinc-900 +PANEL = (0xFA, 0xFA, 0xFA) # near white +ROW = (0xC7, 0xCC, 0xD6) +ARROW = (0xFB, 0xBF, 0x24) # amber-400 + +buf = bytearray() +margin = 96 +radius = 205 +# panels +pgap = 70 +ptop = 340 +pbot = 760 +pw = (N - 2 * 300 - pgap) / 2 +lx0 = 300 +lx1 = lx0 + pw +rx0 = lx1 + pgap +rx1 = rx0 + pw + +for y in range(N): + buf.append(0) # PNG filter byte per scanline + for x in range(N): + outer = rounded_rect_alpha(x + 0.5, y + 0.5, margin, margin, N - margin, N - margin, radius) + t = y / N + col = lerp(BG_TOP, BG_BOT, t) + r, g, b = col + a = outer + # panels + for (x0, x1) in ((lx0, lx1), (rx0, rx1)): + pa = rounded_rect_alpha(x + 0.5, y + 0.5, x0, ptop, x1, pbot, 34) + if pa > 0: + r = round(r * (1 - pa) + PANEL[0] * pa) + g = round(g * (1 - pa) + PANEL[1] * pa) + b = round(b * (1 - pa) + PANEL[2] * pa) + # file rows + for row in range(4): + ry = ptop + 70 + row * 74 + if ry <= y <= ry + 26 and x0 + 34 <= x <= x1 - 34: + r, g, b = ROW + # transfer arrows in the gap + cx0, cx1 = lx1 + 6, rx0 - 6 + midy = (ptop + pbot) / 2 + if cx0 <= x <= cx1 and abs(y - midy) < 90: + # two chevrons pointing right and left, forming <-> feel + rel = (x - cx0) / (cx1 - cx0) + band = abs(y - midy) + if band < 46 - abs(rel - 0.5) * 40: + r, g, b = ARROW + a = max(a, outer) + buf.extend((r, g, b, round(255 * a))) + + +def chunk(tag, data): + return struct.pack(">I", len(data)) + tag + data + struct.pack(">I", zlib.crc32(tag + data) & 0xFFFFFFFF) + + +png = b"\x89PNG\r\n\x1a\n" +png += chunk(b"IHDR", struct.pack(">IIBBBBB", N, N, 8, 6, 0, 0, 0)) +png += chunk(b"IDAT", zlib.compress(bytes(buf), 9)) +png += chunk(b"IEND", b"") + +out = sys.argv[1] if len(sys.argv) > 1 else "assets/icon.png" +with open(out, "wb") as f: + f.write(png) +print(f"wrote {out} ({N}x{N})") diff --git a/src/shared/branding.ts b/src/shared/branding.ts index d703a59..6777f10 100644 --- a/src/shared/branding.ts +++ b/src/shared/branding.ts @@ -4,5 +4,7 @@ export const BRANDING = { appName: "BunSCP", identifier: "es.teknes.bunscp", version: "0.1.0", - icon: "assets/icon.png", + // macOS build converts this .iconset folder into AppIcon.icns. + // Regenerate from assets/icon.png with scripts/gen-iconset.sh. + icon: "assets/icon.iconset", } as const;