aterm bundles: per-role icons instead of the generic system icon #1282

Open
opened 2026-08-26 09:09:04 +00:00 by coilyco-ops · 0 comments
Member

aterm bundles writes one .app per live role, and every one of them uses the generic macOS app icon. Seven tiles in ~/Applications are distinguishable only by name, which is most of the reason to have separate apps at all.

Where it stands

--icon <file.icns> sets one shared icon across every bundle. There is no per-role path, and no icon at all is the default: bundleInfoPlist writes CFBundleIconFile only when one was passed.

The inputs already exist

Nothing new has to be invented to describe a role visually. agent-compose overlay --json --role <role> --seat claude carries favorite_color plus, for each personality in the meld, an emblem (name, emoji, glyph) and a form (silhouette, geometry, motion). aterm bundles --dry-run --json names each live role and the bundle it would write, so a generator can be driven off it.

What this repo owes

Once art exists, aterm bundles needs a per-role icon path rather than the single shared --icon:

  • write Contents/Resources/<name>.icns per bundle and set CFBundleIconFile accordingly
  • keep regeneration idempotent, and keep the fallback: no art for a role means the system icon, never a broken reference
  • derive the set from the live roster, so a role that turns over does not leave a stale icon behind

Blocked on two decisions, neither of them here

Colour separation. agent-compose#358 measured 18 of 21 role pairs below the side-by-side JND as window backgrounds. Icons are worse: seven tiles sit in one Dock at a fraction of a window's size. Art drawn against today's favorite_color would need redrawing once that lands.

Delivery. How the art reaches this repository is unsettled, and it is a disclosure decision rather than a mechanical one, since this repository is public and the one producing the art is not. The alternative is generating icons at bundle time from live values, which sidesteps both the delivery question and staleness, at the cost of a renderer on the host.

Acceptance

  • each live role's bundle carries a distinct icon
  • a role with no art still generates and still launches
  • aterm bundles stays a single command with no new required input

Sequencing note: the toolchain is iconutil --convert icns over a .iconset directory, so what this side consumes is a .icns or the iconset that makes one.

`aterm bundles` writes one `.app` per live role, and every one of them uses the generic macOS app icon. Seven tiles in `~/Applications` are distinguishable only by name, which is most of the reason to have separate apps at all. - the art: https://forgejo.coilysiren.me/coilyco-bridge/agentic-os-xxx/issues/45 - the identity contract it renders: https://forgejo.coilysiren.me/coilyco-flight-deck/agent-compose/issues/363 ## Where it stands `--icon <file.icns>` sets one shared icon across every bundle. There is no per-role path, and no icon at all is the default: `bundleInfoPlist` writes `CFBundleIconFile` only when one was passed. ## The inputs already exist Nothing new has to be invented to describe a role visually. `agent-compose overlay --json --role <role> --seat claude` carries `favorite_color` plus, for each personality in the meld, an `emblem` (name, emoji, glyph) and a `form` (silhouette, geometry, motion). `aterm bundles --dry-run --json` names each live role and the bundle it would write, so a generator can be driven off it. ## What this repo owes Once art exists, `aterm bundles` needs a per-role icon path rather than the single shared `--icon`: - write `Contents/Resources/<name>.icns` per bundle and set `CFBundleIconFile` accordingly - keep regeneration idempotent, and keep the fallback: no art for a role means the system icon, never a broken reference - derive the set from the live roster, so a role that turns over does not leave a stale icon behind ## Blocked on two decisions, neither of them here **Colour separation.** agent-compose#358 measured 18 of 21 role pairs below the side-by-side JND as window backgrounds. Icons are worse: seven tiles sit in one Dock at a fraction of a window's size. Art drawn against today's `favorite_color` would need redrawing once that lands. **Delivery.** How the art reaches this repository is unsettled, and it is a disclosure decision rather than a mechanical one, since this repository is public and the one producing the art is not. The alternative is generating icons at bundle time from live values, which sidesteps both the delivery question and staleness, at the cost of a renderer on the host. ## Acceptance - each live role's bundle carries a distinct icon - a role with no art still generates and still launches - `aterm bundles` stays a single command with no new required input Sequencing note: the toolchain is `iconutil --convert icns` over a `.iconset` directory, so what this side consumes is a `.icns` or the iconset that makes one.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-flight-deck/agentic-os#1282
No description provided.