home: use the real Eleven app icon on the landing (not an invented mark) (#321)
Replace the hand-rolled "11" CSS tile with the actual app icon (the purple rounded tile + white double-slash). Each Go service embeds its own web/static, so the messenger's icons aren't visible to the home binary — copy icon-192/512 into home/web/static and reference them for the brand mark, favicon, and apple-touch-icon. CSP already allows img-src 'self'. Also: - Note the app-icon assets in CLAUDE.md Conventions so future work reuses them instead of inventing a substitute glyph. - Swap the add-space placeholder off family.luan.chat (Paul's personal family domain) to a neutral example — it was showing on the public landing.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
4 files changed,
+15
−9
CLAUDE.md+8 −0home/web/pages/index.html+7 −9home/web/static/icon-192.pngbinaryhome/web/static/icon-512.pngbinary
diff --git a/CLAUDE.md b/CLAUDE.md| index d0ea95c..ce2c8f1 100644 |
| --- a/CLAUDE.md |
| +++ b/CLAUDE.md |
| @@ -223,6 +223,14 @@ open with the note itself) carry the 🤖 on their first line. |
| - **Images** are downscaled in the browser before upload (`processImage`, max |
| 2048px long edge) — there is no server-side image proxy (it only has |
| ciphertext). Re-encoding also strips EXIF/GPS. |
| +- 🤖 **The Eleven app icon already exists — use it, don't invent a mark.** The |
| + logo is a purple rounded tile with the white double-slash "11". Canonical PNGs: |
| + `web/static/icon-{180,192,512}.png` (the PWA/web icons) and the native icon |
| + sets `ios/LChat/Assets.xcassets/AppIcon.appiconset/icon-1024.png` + |
| + `ios/LChatMac/Assets.xcassets/AppIcon.appiconset/`. When a page needs the brand |
| + mark or a favicon, reference/copy one of these — never hand-roll a substitute |
| + glyph. (Each service embeds its *own* static dir, so the home server carries |
| + its own copy at `home/web/static/icon-{192,512}.png`.) |
| - **Push notifications** suppress two cases: your *own* messages (server skips the |
| sender's subscriptions by token) and messages while the app is open (the page |
| writes a `lastActiveAt` heartbeat to IndexedDB that the SW checks — more |
diff --git a/home/web/pages/index.html b/home/web/pages/index.html| index 75b89d6..4aa877f 100644 |
| --- a/home/web/pages/index.html |
| +++ b/home/web/pages/index.html |
| @@ -6,18 +6,16 @@ |
| <meta name="theme-color" content="#f6f7fb" media="(prefers-color-scheme: light)"> |
| <meta name="theme-color" content="#15171c" media="(prefers-color-scheme: dark)"> |
| <title>Sign in with Eleven</title> |
| +<link rel="icon" type="image/png" href="/static/icon-192.png"> |
| +<link rel="apple-touch-icon" href="/static/icon-512.png"> |
| <link rel="stylesheet" href="/static/home.css"> |
| <style> |
| /* The landing is a single centered card: the Eleven mark, one button, and a |
| reassuring line. Your spaces appear only once you've signed in. */ |
| .brand { display: flex; flex-direction: column; align-items: center; gap: 10px; margin-bottom: 22px; } |
| - .brand-mark { |
| - width: 64px; height: 64px; border-radius: 18px; |
| - display: grid; place-items: center; |
| - background: var(--accent); color: var(--accent-ink); |
| - font-family: var(--font-display); font-weight: 800; font-size: 28px; |
| - letter-spacing: -0.03em; |
| - } |
| + /* The real app icon (web/static/icon-*.png, copied into home's static). The |
| + PNG is already a rounded superellipse; the radius just cleans the edge. */ |
| + .brand-mark { width: 64px; height: 64px; border-radius: 15px; display: block; } |
| .brand-word { |
| font-family: var(--font-display); font-weight: 800; |
| font-size: 26px; letter-spacing: -0.02em; |
| @@ -54,7 +52,7 @@ |
| <body> |
| <main class="card"> |
| <div class="brand"> |
| - <div class="brand-mark" aria-hidden="true">11</div> |
| + <img class="brand-mark" src="/static/icon-512.png" width="64" height="64" alt="Eleven" /> |
| <div class="brand-word">Eleven</div> |
| </div> |
| @@ -90,7 +88,7 @@ |
| <form class="addform" id="add-form"> |
| <p class="addform-label">Or add a space you already have a link for:</p> |
| <input id="add-name" placeholder="Name" autocomplete="off"> |
| - <input id="add-url" placeholder="https://family.luan.chat" autocomplete="off" required> |
| + <input id="add-url" placeholder="https://your-space.example.com" autocomplete="off" required> |
| <button type="submit" class="secondary">Add</button> |
| </form> |
| <p class="status" id="vault-status"></p> |
diff --git a/home/web/static/icon-192.png b/home/web/static/icon-192.png| new file mode 100644 |
| index 0000000..3917fe1 |
| Binary files /dev/null and b/home/web/static/icon-192.png differ |
diff --git a/home/web/static/icon-512.png b/home/web/static/icon-512.png| new file mode 100644 |
| index 0000000..bca266f |
| Binary files /dev/null and b/home/web/static/icon-512.png differ |