The three Icon Composer projects are the source of truth for full application icons:
dev/app-icon.iconnightly/app-icon.iconprod/app-icon.iconEach project uses text.svg for the T3 mark and background.svg when the background is a vector layer. Additional layers use semantic names that describe their role and placement.
Run vp run icons:export from the repository root to regenerate the tracked iOS, Linux, Windows, and web assets. The development web exports are also copied to apps/web/public for the browser favicon and splash screen. Run vp run icons:check to verify that the generated assets and public copies match their sources without changing files.
Exporting requires Icon Composer 2 or newer on macOS. The script selects the newest compatible exporter from Xcode or a standalone Icon Composer installation and pins design generation 26. Set ICON_COMPOSER_TOOL to the full path of Icon Composer.app/Contents/Executables/ictool to override automatic discovery.
Icon Composer's command-line exporter does not expose the macOS pre-Tahoe preset. A plain command-line macOS export is full bleed and is not suitable for the desktop app, so the export script intentionally leaves the tracked macOS PNGs unchanged and prints a reminder after every run.
After changing an Icon Composer project, open it in Icon Composer and export the macOS PNG with exactly these settings:
macOS pre-TahoeDefault1024pt1×Save the three exports to:
dev/app-icon.icon -> dev/blueprint-macos-1024.pngnightly/app-icon.icon -> nightly/nightly-macos-1024.pngprod/app-icon.icon -> prod/black-macos-1024.pngThe result must be a 1024×1024 PNG with the classic macOS safe area: the opaque icon body is 824×824, inset 100 pixels on every side, with only the native Icon Composer shadow extending into the surrounding transparent canvas.
To have Codex perform the native exports, paste this prompt into a task opened at the repository root:
| 1 | Use [@Computer](plugin://computer-use@openai-bundled) and the Icon Composer app to export the three macOS app icons in this repository. |
| 2 | |
| 3 | For each project below, use Platform: macOS pre-Tahoe, Appearance: Default, Size: 1024pt, and Scale: 1×, then save the PNG to the exact destination: |
| 4 | |
| 5 | - assets/dev/app-icon.icon -> assets/dev/blueprint-macos-1024.png |
| 6 | - assets/nightly/app-icon.icon -> assets/nightly/nightly-macos-1024.png |
| 7 | - assets/prod/app-icon.icon -> assets/prod/black-macos-1024.png |
| 8 | |
| 9 | Do not resize, composite, or otherwise post-process the exported PNGs. |
| 10 | |
| 11 | Verify every result is 1024×1024 and has the classic macOS safe area: an 824×824 opaque body inset 100px on every side, with only Icon Composer's native shadow extending beyond it. |
Do not edit the generated PNG or ICO files directly.
Android masks the central 72dp of a 108dp adaptive canvas, and the Android 12+ splash screen masks
the central two thirds of a 288dp canvas, so the Icon Composer exports cannot be used directly:
their rounded-square silhouette gets framed again and the wordmark is cropped. The Android artwork
is instead rendered from the same Icon Composer SVG sources by vp run icons:export:android:
apps/mobile/assets/android-icon-foreground.png: the shared transparent wordmark, sized to stay
inside the safe zoneapps/mobile/assets/android-icon-background-dev.png and -nightly.png: full-bleed variant
artwork (blueprint grid and annotations; night sky and clouds). Production uses a solid color.apps/mobile/assets/android-splash-icon-*.png: the two layers composed into one 288dp image, so
the splash mask reproduces the launcher icon's framing.Rerun the export after changing a layer SVG. android-icon-mark.png remains a flat silhouette for
Android's monochrome themed icon.