fix(pwa): wire favicon + apple-touch-icon to existing /icon assets #171

Merged
james merged 1 commit from chore-favicon-metadata into main 2026-06-20 03:44:49 +00:00
Owner

Summary

The PWA manifest already declares /icon.svg, /icon-192.png, and /icon-512.png (app/manifest.ts), but the root layout's metadata export never advertised them as browser icons — so the tab fell back to a default /favicon.ico 404. Adds an icons block to metadata that points at the same three files.

Next emits:

<link rel="icon" href="/icon.svg" type="image/svg+xml"/>
<link rel="icon" href="/icon-192.png" type="image/png" sizes="192x192"/>
<link rel="icon" href="/icon-512.png" type="image/png" sizes="512x512"/>
<link rel="apple-touch-icon" href="/icon-192.png" sizes="192x192"/>

No new assets — just metadata wiring.

Test plan

  • npm run typecheck — clean.
  • npm run lint — clean.
  • curl /login on npm run dev shows the four <link> tags above.
  • Eyeball the favicon in a browser tab after merge.

🤖 Generated with Claude Code

## Summary The PWA manifest already declares `/icon.svg`, `/icon-192.png`, and `/icon-512.png` (`app/manifest.ts`), but the root layout's `metadata` export never advertised them as browser icons — so the tab fell back to a default `/favicon.ico` 404. Adds an `icons` block to `metadata` that points at the same three files. Next emits: ```html <link rel="icon" href="/icon.svg" type="image/svg+xml"/> <link rel="icon" href="/icon-192.png" type="image/png" sizes="192x192"/> <link rel="icon" href="/icon-512.png" type="image/png" sizes="512x512"/> <link rel="apple-touch-icon" href="/icon-192.png" sizes="192x192"/> ``` No new assets — just metadata wiring. ## Test plan - [x] `npm run typecheck` — clean. - [x] `npm run lint` — clean. - [x] `curl /login` on `npm run dev` shows the four `<link>` tags above. - [ ] Eyeball the favicon in a browser tab after merge. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(pwa): wire favicon + apple-touch-icon to existing /icon assets
Some checks failed
Commits / Conventional Commits (pull_request) Successful in 6s
PR / Static analysis (pull_request) Successful in 41s
PR / Lint (pull_request) Successful in 4m21s
PR / Package age policy (soft) (pull_request) Successful in 14s
Secrets / gitleaks (pull_request) Successful in 15s
PR / Typecheck (pull_request) Successful in 3m44s
PR / Build (pull_request) Successful in 3m59s
PR / npm audit (pull_request) Successful in 3m4s
PR / Test (postgres) (pull_request) Successful in 4m9s
PR / Test (sqlite) (pull_request) Successful in 5m4s
PR / OSV-Scanner (pull_request) Successful in 4m39s
PR / Coverage (soft) (pull_request) Successful in 6m10s
PR / Trivy (image) (pull_request) Failing after 8m20s
521b34cf70
The PWA manifest already declares /icon.svg, /icon-192.png, and
/icon-512.png, but the root layout's metadata never advertised them
as browser icons — so the tab fell back to the default favicon.ico
404. Add an `icons` block to `metadata` that surfaces the same three
files Next emits as <link rel="icon"> + <link rel="apple-touch-icon">.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
james merged commit 0f6e3ceec7 into main 2026-06-20 03:44:49 +00:00
james deleted branch chore-favicon-metadata 2026-06-20 03:44:50 +00:00

📊 Test coverage

Patch coverage: no testable lines changed.

Overall (app/, lib/, db/, excluding UI per ADR-0019):

Metric Value Soft target
Lines 80.8% ≥ 50%
Branches 80.8% ≥ 75%
Functions 88.5% informational

Soft thresholds per ADR-0019. Coverage is informational and does not block merge.

<!-- coverage-comment --> ## 📊 Test coverage **Patch coverage:** no testable lines changed. **Overall** (`app/`, `lib/`, `db/`, excluding UI per ADR-0019): | Metric | Value | Soft target | |---|---|---| | Lines | 80.8% ✅ | ≥ 50% | | Branches | 80.8% ✅ | ≥ 75% | | Functions | 88.5% | informational | Soft thresholds per [ADR-0019](docs/adr/0019-coverage-soft-targets.md). Coverage is informational and does not block merge.

Trivy (container image)

Threshold: high  ·  Total findings: 121  ·  At/above threshold: 1

critical high medium low
0 1 50 70
severity id package installed / range fix
high CVE-2026-12151 undici 6.25.0 6.27.0, 7.28.0, 8.5.0
<!-- scanner-comment: trivy --> ### Trivy (container image) **Threshold:** `high` &nbsp;·&nbsp; **Total findings:** 121 &nbsp;·&nbsp; **At/above threshold:** 1 | critical | high | medium | low | |---:|---:|---:|---:| | 0 | 1 | 50 | 70 | | severity | id | package | installed / range | fix | |---|---|---|---|---| | high | [CVE-2026-12151](https://avd.aquasec.com/nvd/cve-2026-12151) | undici | 6.25.0 | `6.27.0, 7.28.0, 8.5.0` |
Sign in to join this conversation.
No description provided.