The logo baked ihasmail.com into the artwork. That is the wrong identity for the project — the .com is the hosted instance, not the software — and at the 34px the topbar renders it at, the wordmark was an illegible smudge under a squashed cat.
Already wordmark-free and untouched: favicon-64.png, icon-maskable.png, favicon.ico.
The crop needed a threshold
Both source files carry a band of near-invisible pixels — alpha 1–10, about 40px wide — down the left side. A plain getbbox() counts them, so the first pass came out with 40px of phantom padding on the left and the mark visibly off-centre on the login card. The bounding box is taken at alpha > 8 instead. Amplifying the alpha channel confirms the band is halo, not artwork.
All four assets now measure symmetric to within a pixel.
Login page
It had no name of its own — the wordmark was doing that work — so it gets one as text, styled like the topbar's .brand-name. The height attribute moves 113 → 143 to match the new aspect ratio (the CSS already forced height: auto, so nothing was distorted, but the attribute was wrong).
Screenshots
docs/screenshots/login.jpg is retaken against the mock server, same 1420×759 framing as before.
The other seven still show the old mark in the topbar. It is small there, but it is stale — worth a follow-up pass. The same files are also published on ihasmail.org, so that site wants the same refresh.
Verification
npm run typecheck clean · 224 web tests + 88 server tests passing.
The logo baked `ihasmail.com` into the artwork. That is the wrong identity for the project — the `.com` is the hosted instance, not the software — and at the 34px the topbar renders it at, the wordmark was an illegible smudge under a squashed cat.
### Assets
Regenerated as the mark alone:
- `web/public/img/logo.png`
- `web/public/img/icon-512.png`
- `web/public/img/icon-192.png`
- `web/public/img/apple-touch-icon.png` (white ground kept — Apple composites non-opaque touch icons onto black)
Already wordmark-free and untouched: `favicon-64.png`, `icon-maskable.png`, `favicon.ico`.
### The crop needed a threshold
Both source files carry a band of near-invisible pixels — alpha 1–10, about 40px wide — down the left side. A plain `getbbox()` counts them, so the first pass came out with 40px of phantom padding on the left and the mark visibly off-centre on the login card. The bounding box is taken at `alpha > 8` instead. Amplifying the alpha channel confirms the band is halo, not artwork.
All four assets now measure symmetric to within a pixel.
### Login page
It had no name of its own — the wordmark was doing that work — so it gets one as text, styled like the topbar's `.brand-name`. The `height` attribute moves 113 → 143 to match the new aspect ratio (the CSS already forced `height: auto`, so nothing was distorted, but the attribute was wrong).
### Screenshots
`docs/screenshots/login.jpg` is retaken against the mock server, same 1420×759 framing as before.
The other seven still show the old mark in the topbar. It is small there, but it is stale — worth a follow-up pass. The same files are also published on ihasmail.org, so that site wants the same refresh.
### Verification
`npm run typecheck` clean · 224 web tests + 88 server tests passing.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
**Merged** 2026-08-25 as coffey-labs/ihasmail@ba819369f4bb
<sub>Rebuilt from: git history, session transcript.</sub>
This repo is archived. You cannot comment on issues.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The logo baked
ihasmail.cominto the artwork. That is the wrong identity for the project — the.comis the hosted instance, not the software — and at the 34px the topbar renders it at, the wordmark was an illegible smudge under a squashed cat.Assets
Regenerated as the mark alone:
web/public/img/logo.pngweb/public/img/icon-512.pngweb/public/img/icon-192.pngweb/public/img/apple-touch-icon.png(white ground kept — Apple composites non-opaque touch icons onto black)Already wordmark-free and untouched:
favicon-64.png,icon-maskable.png,favicon.ico.The crop needed a threshold
Both source files carry a band of near-invisible pixels — alpha 1–10, about 40px wide — down the left side. A plain
getbbox()counts them, so the first pass came out with 40px of phantom padding on the left and the mark visibly off-centre on the login card. The bounding box is taken atalpha > 8instead. Amplifying the alpha channel confirms the band is halo, not artwork.All four assets now measure symmetric to within a pixel.
Login page
It had no name of its own — the wordmark was doing that work — so it gets one as text, styled like the topbar's
.brand-name. Theheightattribute moves 113 → 143 to match the new aspect ratio (the CSS already forcedheight: auto, so nothing was distorted, but the attribute was wrong).Screenshots
docs/screenshots/login.jpgis retaken against the mock server, same 1420×759 framing as before.The other seven still show the old mark in the topbar. It is small there, but it is stale — worth a follow-up pass. The same files are also published on ihasmail.org, so that site wants the same refresh.
Verification
npm run typecheckclean · 224 web tests + 88 server tests passing.🤖 Generated with Claude Code
Merged 2026-08-25 as coffey-labs/ihasmail@ba819369f4
Rebuilt from: git history, session transcript.