diff --git a/CODE-AUDIT.md b/CODE-AUDIT.md index d62d59b..43bd463 100644 --- a/CODE-AUDIT.md +++ b/CODE-AUDIT.md @@ -270,17 +270,21 @@ Add a note near `parseExtraArgs`: "No escape-sequence support; quotes cannot nes --- -#### M3 — Release polish: app icon commented out +#### M3 — Release polish: app icon -**File:** [electron-builder.yml:45](electron-builder.yml) +**File:** [electron-builder.yml:48](electron-builder.yml) **Severity:** Cosmetic -**Status:** Deferred — TODO(release) comment added; requires a designed icon asset before v1.0 +**Status:** Placeholder done — 2026-06-23; a *designed* asset is still wanted before v1.0 **Description:** -The `icon:` line is commented out pending final icon asset. Bundled binaries are correctly handled (graceful "not found" errors everywhere). +The `icon:` line was commented out pending a final icon asset, so builds fell back to the default Electron icon. Bundled binaries are correctly handled (graceful "not found" errors everywhere). -**Fix:** -Add a `build/icon.ico` before shipping v1.0. +**Fix (done — placeholder):** +Added [build/icon.svg](build/icon.svg) — a white download glyph on the teal brand square, mirroring the in-app brand mark ([Onboarding.tsx](src/renderer/src/components/Onboarding.tsx)) — and rasterised it to a multi-size [build/icon.ico](build/icon.ico) (256/128/64/48/32/16) via ImageMagick. The `win.icon` line is now uncommented. Regenerate with: +``` +magick -background none build/icon.svg -define icon:auto-resize=256,128,64,48,32,16 build/icon.ico +``` +**Still open:** swap the placeholder for a professionally designed icon before cutting v1.0. --- @@ -326,7 +330,7 @@ The following security-critical functions lack tests: | P3 | UX | 15m | Low | Document or enforce concurrency semantics | **Fixed 2026-06-23** (documented) | | M1 | Maint | 15m | Trivial | Extract `cleanError` to shared module | **Fixed 2026-06-23** | | M2 | Maint | 15m | Trivial | Document `parseExtraArgs` limitations | **Fixed 2026-06-23** | -| M3 | Polish | 30m | Trivial | Add icon asset before release | **Deferred** (pre-release TODO) | +| M3 | Polish | 30m | Trivial | Add icon asset before release | **Placeholder done 2026-06-23**; designed asset still wanted pre-v1.0 | | C1 | Correctness | 30m | High | Bundle missing `ffprobe.exe` + document it (found by smoke test) | **Fixed 2026-06-23** | --- diff --git a/build/icon.ico b/build/icon.ico new file mode 100644 index 0000000..0095f91 Binary files /dev/null and b/build/icon.ico differ diff --git a/build/icon.svg b/build/icon.svg new file mode 100644 index 0000000..30ac467 --- /dev/null +++ b/build/icon.svg @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/electron-builder.yml b/electron-builder.yml index e5a600c..529d87a 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -42,10 +42,11 @@ win: - portable # Never request admin elevation. requestedExecutionLevel: asInvoker - # TODO(release, audit M3): drop a 256×256 (multi-size) build/icon.ico in place - # and uncomment the next line before cutting v1.0. Until then electron-builder - # falls back to its default Electron icon, which is fine for dev/test builds. - # icon: build/icon.ico + # Placeholder icon (audit M3): white download glyph on the teal brand square, + # mirroring the in-app brand mark. Generated from build/icon.svg as a multi-size + # .ico (256/128/64/48/32/16). Replace with a designed asset before v1.0 — re-run + # magick -background none build/icon.svg -define icon:auto-resize=256,128,64,48,32,16 build/icon.ico + icon: build/icon.ico portable: artifactName: ${productName}-${version}-portable.${ext}