Skip to content

feat: surface appearance - #29

Open
Julusian wants to merge 11 commits into
mainfrom
feat/surface-appearance
Open

Julusian wants to merge 11 commits into
mainfrom
feat/surface-appearance

Conversation

@Julusian

@Julusian Julusian commented Oct 3, 2026

Copy link
Copy Markdown
Member

Julusian and others added 11 commits October 3, 2026 15:31
Artwork for every model lives in artwork/*.svg, traced from the device
bezels in Elgato's streamdeck-kit-ipad simulator and registered to the
panel by their key holes. Studio and Galleon K100 have no bezel to trace,
so are drawn around the library's layout.

tools/build-artwork.mjs compiles them into a gitignored json of data
URIs, so they reach both the tsc output and the esbuild bundle. Each svg
marks where the library's face sits with a <rect id="face">, which gives
the padding around the controls.

MODEL_ARTWORK must list every model, so a new one can't be missed; the
modules share the artwork of the full surface with the same layout. The
15 key scissor module is also hidden from the model picker, like the
other modules.

yarn preview:artwork renders every model with its controls outlined
over the artwork, for checking that they line up.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rface is

A connected surface describes itself as eg "Elgato Stream Deck XL" while the
model of it was declared as "Stream Deck XL", and a Corsair Galleon had no
manufacturer at all. Which models are declared in place of an identical one is
now one mapping, ready to also say which declared model a surface is.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant