[Air #1444] Stream Deck: re-glyph the catch-all Codev Action off the terminal picture - #1453
Merged
Conversation
…cture The catch-all Codev Action drew a terminal glyph (icons/action.*). #1440 gave the new open-terminal action its own terminal-glyph icon, so the two read near-identical in the Stream Deck action picker. Re-glyph the catch-all onto the Codev brand mark (icons/plugin.svg): a generic Codev action wearing the Codev mark reads correctly and the terminal picture stays with the action that opens a terminal. Extends scripts/render-action-icons.mjs (from #1440) with a brand-mark source that flows through the same trim -> fit -> composite pipeline as the glyphs; no new artwork, no dependency. Manifest references are unchanged (icons/list/action, icons/action) - only the pixels behind those filenames are regenerated. CodevAction has no runtime composite face, so this fixes both the picker list icon and the physical key face.
Collaborator
Author
|
Integration review (streamdeck architect) — APPROVE. Assets + render script only; verified by viewing the rendered PNG, which is the only real check for an image change.
Consultation: full 3-way available again (codex restored). 172 tests green, build clean. |
amrmelsayed
added a commit
that referenced
this pull request
Aug 15, 2026
This was referenced Aug 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #1444.
Problem
The catch-all Codev Action drew a terminal glyph (
icons/action.*). #1440 gave the newopen-terminalaction its own dedicated terminal-glyph icon — correctly, since that action literally opens a terminal. Result: the two entries look near-identical in the Stream Deck action picker. The terminal picture was always a mislabel forCodev Action, a configurable catch-all that runs any verb (open terminals, view diff, send, spawn, refresh).Change
Re-glyph the catch-all, not
open-terminal, onto the existing Codev brand mark (icons/plugin.svg) — the architect's first candidate. A generic Codev action wearing the Codev mark reads correctly and needs no new artwork.scripts/render-action-icons.mjs(from Stream Deck: polish follow-ups from #1410 (dedicated action icons; optional pre-populated SD+ profile) #1440) with a brand-mark source (extractBrandMark) that flows through the sametrim → fit → compositepipeline as the face.ts glyphs (KEY_FILL 0.56,LIST_FILL 0.94, sizes 72/144/20/40). No hand-rolling, no new dependency. The glyph path is refactored into a sharedbuild()/emit()helper so both sources fit and center identically.actionassets (icons/action{,@2x}.png,icons/list/action{,@2x}.png) from the mark.Codev Actionalready referencesicons/list/action+icons/action; only the pixels behind those filenames change. No other manifest action is touched.Verification (issue point 3) — done before coding
Does the Codev Action key render a composite face at runtime (like Builder Action / Send Fb / Run Dev do)? No.
CodevAction(src/actions.ts:63-66) extendsVerbKeyand does not overrideonWillAppear— onlyDevServerAction/BuilderAction/gate keys composite a face viasetImage. So the Codev Action key face shows the manifestStates[0].Image(icons/action) directly.=> This is NOT picker-only. The re-glyph fixes both the Stream Deck action-picker list icon and the physical key face.
Legibility check (does
plugin.svgsurvive?)Rendered and eyeballed at delivery sizes. The handshake mark is clean and unmistakably not-a-terminal on both the 72/144 key face and — the critical case — the 20×20 picker list icon. It survives; no alternative artwork needed.
#1C2128groundDiff scope note
Re-running the #1440 render script also re-encodes the
send-queue/open-terminalPNGs with different ImageMagick metadata bytes, but those are pixel-identical to the committed versions (verifiedcompare -metric AE = 0across all 8 variants). I reverted them so this diff is scoped to theactionassets alone.Tests
render-action-icons.test.ts:extractBrandMarkpulls the mark's<g>group + viewBox, leaves the opaque background<rect>behind (transparent render), carries no${c}recolor placeholder, and throws loudly ifplugin.svg's shape drifts. Plus a source-level regression guard:actionroutes throughBRAND_ICONS, never the glyphICONSlist.manifest-icons.test.ts: theactionassets ship at the convention sizes (72/144/20/40), keep their manifest filenames, and are no longer byte-identical to theopen-terminalassets.check-types+buildgreen.Review notes
Straightforward asset regeneration behind a one-source render extension; low blast radius. Given AIR's economy and the purely-declarative, visually-verified nature of the change (with source- and manifest-level test guards), I did not run a full 3-way CMAP.