Windows compatibility pass (beta target)
External editor via cmd/start + exe picker; Permissions hidden for Windows-local (chmod only flips read-only there); Explorer/Recycle Bin wording; Ctrl vs Cmd shortcut labels; separator-aware path joins + drive-root detection; drives list in the panel source picker; icon.ico + colored tray icon; icacls ACL on connections.json; README Windows (beta) section with upstream known issues and a smoke-test checklist. Runtime paths pending first boot on a real Windows machine. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+10
-3
@@ -1,10 +1,12 @@
|
||||
// Regenerate every raster icon asset from the SVG sources (dev-time only).
|
||||
// bun scripts/gen-icons.ts
|
||||
// Produces: assets/icon.png (1024), assets/icon.iconset/* (macOS app icon),
|
||||
// assets/tray/tray-44-template.png.
|
||||
// assets/icon.ico (Windows), assets/tray/tray-44-template.png (macOS tray),
|
||||
// assets/tray/tray-32-color.png (Windows tray).
|
||||
import { mkdir } from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
import { Resvg } from "@resvg/resvg-js";
|
||||
import pngToIco from "png-to-ico";
|
||||
|
||||
const root = path.join(import.meta.dir, "..");
|
||||
const assets = path.join(root, "assets");
|
||||
@@ -27,8 +29,13 @@ for (const size of [16, 32, 128, 256, 512]) {
|
||||
await writePng(path.join(assets, "icon.iconset", `icon_${size}x${size}@2x.png`), logo, size * 2);
|
||||
}
|
||||
|
||||
// ---- tray base (22pt status item @2x) ----
|
||||
// ---- Windows app icon (.ico: 16/32/48/256, used by installer + taskbar) ----
|
||||
const icoPngs = [16, 32, 48, 256].map((size) => Buffer.from(renderPng(logo, size)));
|
||||
await Bun.write(path.join(assets, "icon.ico"), await pngToIco(icoPngs));
|
||||
|
||||
// ---- tray: macOS 22pt template @2x; Windows small colored icon ----
|
||||
const trayGlyph = await Bun.file(path.join(assets, "tray", "tray-glyph.svg")).text();
|
||||
await writePng(path.join(assets, "tray", "tray-44-template.png"), trayGlyph, 44);
|
||||
await writePng(path.join(assets, "tray", "tray-32-color.png"), logo, 32);
|
||||
|
||||
console.log("icons regenerated: app iconset + tray template");
|
||||
console.log("icons regenerated: app iconset + icon.ico + tray images");
|
||||
|
||||
Reference in New Issue
Block a user