diff --git a/assets/pr-screenshots/app-icon-finder-menubar.png b/assets/pr-screenshots/app-icon-finder-menubar.png new file mode 100644 index 00000000000..794afb137d4 Binary files /dev/null and b/assets/pr-screenshots/app-icon-finder-menubar.png differ diff --git a/assets/pr-screenshots/favicon-browser-tab.png b/assets/pr-screenshots/favicon-browser-tab.png new file mode 100644 index 00000000000..3642c0afe15 Binary files /dev/null and b/assets/pr-screenshots/favicon-browser-tab.png differ diff --git a/devlog/_plan/260921_brand_icon_and_menu_bar_mark/000_plan.md b/devlog/_fin/260921_brand_icon_and_menu_bar_mark/000_plan.md similarity index 95% rename from devlog/_plan/260921_brand_icon_and_menu_bar_mark/000_plan.md rename to devlog/_fin/260921_brand_icon_and_menu_bar_mark/000_plan.md index 20a374ad5c8..35d6b14a3be 100644 --- a/devlog/_plan/260921_brand_icon_and_menu_bar_mark/000_plan.md +++ b/devlog/_fin/260921_brand_icon_and_menu_bar_mark/000_plan.md @@ -78,7 +78,7 @@ Nothing in `desktop/src-tauri/src/tray.rs` changes: it already builds the tray w ## Acceptance -1. `bun run icons:check` reports every generated artifact matching the source, tray included. +1. `cd desktop && bun run icons:check` reports every generated artifact matching the source, tray included. 2. `tests/ci-workflows/build-desktop-icon-set.test.ts` passes, and its drift guard fails when the tray source is perturbed. 3. `icon.png` is fully opaque, and `tray/icon.png` is 44x44 with no non-black opaque pixel. @@ -92,4 +92,4 @@ Nothing in `desktop/src-tauri/src/tray.rs` changes: it already builds the tray w - `tray/icon.png`: 44x44, 759 pixels with alpha above zero — 498 fully opaque and 261 antialiased — and no pixel with alpha whose colour is anything but black, which is what a template image has to be. Both prompt glyphs are transparent holes rather than white fill. -- `bun run icons` regenerated 18 artifacts; `bun run icons:check` reported 18 matching. +- `cd desktop && bun run icons` regenerated 18 artifacts; `bun run icons:check` reported 18 matching. Both are desktop package scripts and fail from the repository root. diff --git a/devlog/_plan/260921_brand_icon_and_menu_bar_mark/010_favicons.md b/devlog/_fin/260921_brand_icon_and_menu_bar_mark/010_favicons.md similarity index 100% rename from devlog/_plan/260921_brand_icon_and_menu_bar_mark/010_favicons.md rename to devlog/_fin/260921_brand_icon_and_menu_bar_mark/010_favicons.md diff --git a/devlog/_fin/260921_brand_icon_and_menu_bar_mark/020_closure.md b/devlog/_fin/260921_brand_icon_and_menu_bar_mark/020_closure.md new file mode 100644 index 00000000000..858cadede98 --- /dev/null +++ b/devlog/_fin/260921_brand_icon_and_menu_bar_mark/020_closure.md @@ -0,0 +1,66 @@ +# Outcome + +Three changes landed on `dev`, in this order: + +| commit | pull request | change | +| --- | --- | --- | +| `a2d35a609e` | #5355 | the app icon and the menu bar mark, traced from the brand artwork | +| `5794348b0d` | #5356 | the alpha channel every generated icon needs | +| `917d690ecb` | #5361 | the dashboard and documentation favicons, from the same vector | + +## Verified on screen + +- **Finder and Dock.** Built locally with `bun run build:local`, signed with the Developer ID + identity the installed app already carried, installed to `/Applications` and relaunched. Finder + shows the mark on the system rounded rectangle: macOS masks the full-bleed square itself, which + is what the square, unmasked source is for. The widget extension still registers with + `pluginkit` under `com.opencodex.desktop.widget`, so replacing the bundle did not cost it. +- **Menu bar.** The status item renders the template mark with both prompt glyphs as holes, + tinted by macOS, next to the usage label. Both that and the Finder icon are recorded in + `assets/pr-screenshots/app-icon-finder-menubar.png`. +- **Browser tabs.** The two favicons were served over loopback HTTP and opened in a browser. Both + read as the mark on a light tile at tab size. This is the claim `010_favicons.md` makes, checked + in a tab rather than in a composite. `assets/pr-screenshots/favicon-browser-tab.png` is the tab + strip itself, not a rendering of one. + +## The defect the build caught + +`bun run build:local` failed on the first head with +`error: proc macro panicked ... icon .../icons/icon.png is not RGBA`. The new backdrop is opaque, +and librsvg drops the alpha channel when nothing in a render is transparent; `generate_context!` +rejects a window icon that is not RGBA. Fifteen of the sixteen rasters were affected — only the +tray image, which has real transparency, kept its alpha. + +Nothing in the repository could have seen it. The icon tests read dimensions and container +structure, and no test or hosted job builds the Tauri bundle. The generator now re-encodes, and +the colour type of every committed raster is asserted rather than trusted. + +## CI at the head + +`917d690ecb`, read at the exact SHA. Green: all four test shards, `gates`, `desktop shell`, +`macos 2/2`, `macos widget + bundle`, `docs site build`, `docker smoke`, `storage policy`, +`api usage`, all three `npm-global` legs, all three keyring legs, the three service legs. +Skipped, and named rather than counted: `macos control`, `structure gate`, the Windows shard +matrix placeholder. + +The first attempt had one failure, and it did not belong to this unit: `macos 1/2`, on +`tests/server/memory-watchdog.test.ts` -- +*serializes only an allowlisted Bun runtime provenance, omitting it otherwise (#848)* -- at 47.4s +against its own 20s timeout, with 13436 pass, 12 skip, 1 fail on that leg. That test makes eight +full `/api/system/memory` route calls and its own comment records the route costing roughly +600ms per read on shared runners, so it is timing fragile by construction. It passed at +`64b0eca2b0`, which already contained #5355 and #5356, and `917d690ecb` adds only favicon bytes +and a favicon generator. It also failed at `07e2ac9b41`, before any of this landed, and a focused +local run finishes in 377ms. + +Re-running that job at the same SHA turned it green, and the aggregate `ci` check with it, so +exact-head CI for `917d690ecb` is green. The flake is real and still there: the fix is to stop the +test paying for eight route snapshots, not to widen the timeout again. That is separate scope. + +## Left deliberately + +- `docs-site/src/assets/logo-light.png` and `logo-dark.png` stay as they are. They are the artwork + the vector was traced from, not derived assets. +- `og.png` stays, and carries a pre-existing mismatch worth its own scope: the configuration + declares 1200x630 and the committed file is 1536x1024. +