ICON_FOUNDRY.EXE
Lowercase, letters digits and dashes, starting with a letter. Anything else gets squeezed into that. A new name flows into ICONS, ICON_NAMES and IconName when you copy the map.
Undo holds the last 32 states. Ctrl+Z or Cmd+Z works while the focus is in this window.
Two colors, no picker. That rule is the only reason the set holds together across three themes.
TRUE SIZEClean against every rule the tool can check.
The map pastes straight over src/lib/icons.ts. The PNG is a fallback only: a raster bakes the theme it was exported in, so it stops following the accent.
SPECIMEN, 32 GLYPHS AT 4X 2X 1X
Every glyph in the map, on the desk color, in the current theme. Read across for the family: shared weight, shared baseline, one of two fill treatments. A glyph that looks like a visitor here is a visitor on the desktop too.
- home
- outlet
- plugged
- plug
- wrench
- hammer
- bolt
- doc
- chart
- scroll
- briefcase
- folder
- lock
- rocket
- pawn
- terminal
- settings
- search
- trash
- disk
- chevron
- window
- clock
- user
- eye
- photo
- trophy
- man
- folder-user
- folder-locked
- dex
DOCK PREVIEW, 1X IN 44PX TILES
The same tile the real dock draws, at the size it draws it. Names are in the specimen above and deliberately not here: if you cannot tell which one this is without the label, it is not finished.
DRAWING RULES
- 16 by 16, one pixel of breathing room on every side. Nothing touches the edge.
- Two colors only. The mark and the cutout. There is no third.
- Strokes are 1px. Filled masses are solid, never dithered.
- No diagonal shallower than 1:2, because a staircase reads better than a blur.
- Objects sit on a shared optical baseline at row 13.
- Fill treatment is per glyph, and it is one of two: outline where interior detail carries the meaning, like doc, folder, disk and terminal. Solid with void cutouts where the silhouette carries it, like lock, settings, search, rocket and pawn.
- Every glyph has to be legible at 1x on the surface color before it is allowed to look good at 4x. That is what the dock row above is for.
- One known exception: chevron is a UI affordance rather than an app icon, so it is symmetric about the center instead of sitting on the baseline. More affordance glyphs may want their own weight rule.
CHECKS and the build script enforce the mechanical part: 16 rows of 16 characters, only the three characters, breathing room on all four sides, no cutout the mark fails to enclose. Everything above that is judgement, which is why the specimen sheet exists.
ready
draw a 16 by 16 glyph in the theme it will ship in, then copy the map back into the repo.
- pick the map. ICONS is the icon set, PET is the cat sprite.
- pick a glyph from the list, or type a name and press ADD for a blank one.
- pick a brush and draw. drag to paint a stroke. NUDGE, MIRROR, UNDO, CLEAR and REVERT sit under the canvas.
- read CHECKS. nothing may touch the edge, and a cutout has to be enclosed by the mark.
- judge it at 1x. TRUE SIZE is the dock tile, and the DOCK PREVIEW panel is the whole map at that size.
- COPY ICONS MAP or COPY PET MAP, paste it over the file the status line names, commit.
- the repo is the source of truth. nothing here can write to it: a glyph gets in by pasting the map and committing it.
- two different marks in the glyph list. a dot is a repo glyph you have edited. a plus is a glyph this tool invented, and only a plus row gets a REMOVE button.
- the grid is 16 by 16 with one pixel of breathing room on every side. a pixel on the edge turns hot and CHECKS counts it.
- two colors, ever. the mark and the cutout. there is no picker, and that rule is the only reason the set holds together across three themes.
- REVERT restores the repo rows, so it is dead for a glyph the repo has never seen. CLEAR blanks that one, REMOVE deletes it.
- Ctrl+Z
- undo, up to 32 states back. Cmd+Z on a mac. ignored while the focus is in a text field, so a mistyped name does not cost you a stroke.
- Arrows
- move between canvas cells.
- Space
- paint the focused cell with the selected brush.
- Enter
- in the name field, adds the glyph.