Skip to content

feat(brand): brand home in brand/ (masters, generated icons, tokens, provenance) - #28

Merged
shtse8 merged 3 commits into
mainfrom
brand/home
Sep 28, 2026
Merged

shtse8 merged 3 commits into
mainfrom
brand/home

Conversation

@shtse8

@shtse8 shtse8 commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

One home for the lockdocs brand, so every surface takes the mark, the icons and the colours from one place.

Moved: docs/public/logo.svg (the padlock) becomes the master brand/svg/lockdocs-symbol.svg. The website URL is unchanged — build.py copies the master back to docs/public/logo.svg, so what the site serves is the same bytes it served before. Added from that drawing: lockdocs-symbol-black.svg and -white.svg (every fill and stroke one colour, with the two document lines cut out of the lock body by fill-rule="evenodd" so they stay visible on a same-colour ground), lockdocs-app-icon.svg (the symbol on a #06080C rounded square, rx 22% of the 1024 side, symbol at 70% width — specified by the brand lead in the 2026-09-28 audit) and lockdocs-maskable.svg (the same construction without the corner radius, for masks that crop).

Generated by brand/build.py (a copy of the shared generator, unmodified): favicon/ (16 and 32 px pixel-snapped grids kept as hand-editable text, plus 48, .ico and .svg), app-icon/ (192, 512, 1024, maskable 192/512, apple-touch 180), tokens.css and provenance.json. Re-running the generator is byte-for-byte identical.

Surfaces now copying from brand/: docs/public/logo.svg, docs/public/favicon.svg, docs/public/favicon.ico (all three listed in brand/brand.json outputs). The docs theme reads the tokens: docs/.vitepress/theme/custom.css imports brand/tokens.css and sets --vp-c-bg*, --vp-c-brand-1/2/3 and the hero gradient from var(--brand-color-*); docs/.vitepress/config.ts reads the theme-color meta tag from brand/tokens.json and links the generated favicon files instead of carrying a second copy of the logo geometry as a data URI. Every value is unchanged.

Remaining surfaces (in brand/README.md): the four rgba() brand tints left in custom.css (alpha tints need color-mix(), which drops the declaration on older browsers), the two shields.io badge colours in README.md, and the social preview — og:image points at img/demo.gif, a 1400x780 terminal recording, so there is no 1200x630 still and no og/ master; the audit recorded that as a gap.

CI: checks gains one step, python3 brand/build.py --check, which fails if any surface stops being a byte-for-byte copy of its brand file.

Net LOC against origin/main: 30 files changed, 682 insertions(+), 12 deletions(-). Binary files are counted separately with git diff --stat --numstat | grep -c '^-' — 11 of them.

Built by: DeepSeek (sonnet). Review: 2 fixes (Opus: 16 px document lines drawn by hand; similarity check; generator synced)

…provenance)

The drawing that was docs/public/logo.svg moves to brand/svg/lockdocs-symbol.svg
and becomes the only source: build.py copies it back to the URL the site serves,
and generates the favicon (16/32 px snapped grids, 48, .ico, .svg), the app
icons (192/512/1024, maskable, apple-touch) and tokens.css from it.

The docs theme now reads the brand: custom.css imports brand/tokens.css and
sets --vp-c-bg*, --vp-c-brand-* and the hero gradient from var(--brand-color-*);
docs/.vitepress/config.ts reads theme-color from brand/tokens.json and links the
generated favicon files instead of carrying a second copy of the logo as a data
URI. Values are unchanged. CI checks that every surface is still a byte-for-byte
copy (python3 brand/build.py --check).
@shtse8
shtse8 enabled auto-merge September 28, 2026 02:51
@shtse8
shtse8 added this pull request to the merge queue Sep 28, 2026
Merged via the queue into main with commit 7fc29b3 Sep 28, 2026
5 checks passed
@shtse8
shtse8 deleted the brand/home branch September 28, 2026 02:55
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