Pull requests / #1754

#1754 serve/web: add a favicon to the web app and the API Monitor

open · @Kurokosama · 0 comments · View on GitHub

Server & API

Description

Issue: no existing issue — this is the /favicon.ico 404 that #1230 noted as pre-existing

## Summary

Neither the web app nor the API Monitor page has a <link rel="icon"> and there is no icon file
in serve/web, so browsers request /favicon.ico, get a 404, and show the default blank icon in
the tab.

![the tab icon in a light and a dark tab strip (mock-up)](https://raw.githubusercontent.com/Kurokosama/Strata/pr-1754-preview/assets/pr-1754-tab-icon-strips.png)

## What changed

- serve/web/favicon.svg (new, 9 lines): the layer stack the app already uses
  (serve/web/sprite.svg, i-layers), redrawn on a 32-unit viewBox with a stroke weight that
  stays legible at 16 px. The colour is the existing accent token #10b981 (serve/web/tokens.css).
- serve/web/index.html and serve/web/monitor.html: one
  <link rel="icon" href="…" type="image/svg+xml"> each, using the href style each page already
  uses for its own assets (relative in index.html, /web/ in monitor.html).
- No server change: the /web/ route already serves .svg as image/svg+xml.

## Extra Notes

- curl http://127.0.0.1:8081/web/favicon.svg -> 200, image/svg+xml, 614 bytes; both pages come
  back with the icon link.
- Rendered at 16/32/48/64 px in Chrome (light and dark tab strips); three stroke weights were
  compared and the earlier two lost the bottom layer or merged the lower two at 16 px.
- SVG favicons are supported from Chrome/Edge 80 and Firefox 41 on, but only from Safari 26
  (caniuse), so older Safari shows the tab as it does today. A PNG fallback would need one more
  type in the /web/ allow-list in serve/server.py if you want it.
- Thanks for the project.
- AI tools: written with the Hermes Agent v0.21.5+6224.gbd0affe using the DeepSeek V4.1 Flash
  model (deepseek/deepseek-v4.1-flash).

Related on strata.com

Editorial links to help you install, pick models, or read release notes — not part of the upstream thread.