aboutsummaryrefslogtreecommitdiffstats
path: root/assets/brand/README.md
blob: b6735898e2a71313eabceaf6558c2f2f4235dbf1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Brand assets

## `meshbay-M-transparent.png`

The stylised M, 214 × 190, RGBA with a transparent background. **This is the
source.** It lived in `QE/` until 2026-08-19, which is gitignored — the artwork
would not have survived a clone.

## Deriving the nav wordmark

`packages/meshbay-hub/src/meshbay_hub/static/meshbay-m.png` is generated from
it, not drawn separately:

```bash
convert assets/brand/meshbay-M-transparent.png \
  -trim +repage -resize x72 -strip \
  packages/meshbay-hub/src/meshbay_hub/static/meshbay-m.png
```

- `-trim +repage` removes the transparent margin, so the CSS controls the
  spacing rather than the file's padding doing it invisibly.
- `-resize x72` is 72 px tall for a picture displayed at 30 px — enough for a
  2× screen, and 56 KB becomes 10 KB.

The derived file is listed in `_ASSETS` in `meshbay_hub/api/webapp.py`. It has
to be: that list is what the `/a/<hash>/` fingerprint is computed from, so a
file missing from it is a file whose change never moves the URL, and a browser
holding the old one never asks again. Regenerate the picture, and the wordmark
changes for everyone; forget the list, and it changes for nobody.

The M is a picture standing in for the letter M; `eshBay` beside it is text.
Their sizes are set independently in `style.css` — `.nav-brand { font-size }`
and `.nav-brand-m { height }`, the second in **pixels on purpose**. Written in
`em` it was a fraction of the lettering, so resizing the words resized the
picture by the same stroke and the balance between them could never be changed.