chore(brand): swap header logo to a real svg + ship favicons for portal-admin #106

Merged
julien merged 1 commits from chore/brand-assets-sync into main 2026-05-12 11:59:04 +02:00
Owner

Summary

Two related brand-asset cleanups, bundled per request:

portal-shell — header logo

  • Replace apf-small.png (a 7.6 KB raster we'd extracted from the original PNG-in-SVG and re-encoded through sharp) with apf-logo.svg — an actual 1024×1024 vector export (2.1 KB). Sharper at any density, smaller payload, no rasterisation artefacts when zoomed.
  • header.html swaps <img src=…> accordingly.
  • The wide-format apf-portal.svg stays in place for future surfaces (login splash, etc.).

portal-admin — favicons + PWA manifest

Mirrors what PR #84 did for portal-shell:

  • Copy the six favicon images (favicon.ico, favicon.svg, favicon-96x96.png, apple-touch-icon.png, web-app-manifest-{192,512}.png) into apps/portal-admin/public/favicons/. Single visual identity across the two apps.
  • Customise site.webmanifest for admin: name: "APF Portal Admin", short_name: "Admin". Everything else (icons, theme-color, display) stays identical to portal-shell's manifest.
  • Wire the <link> block + <meta name="theme-color"> in apps/portal-admin/src/index.html.
  • Remove the obsolete top-level apps/portal-admin/public/favicon.ico — now under favicons/, served via <link rel="shortcut icon">.

Decision worth flagging

Assets duplicated rather than shared via a lib. Both apps ship their own copy of the 7 favicon files (~120 KB binary each). The alternative — a shared-assets (or extended shared-tokens) lib with the assets glob copied into each app's dist/ at build time — is the architecturally tidier path, but introduces a build-config change with no real payoff at our scale. Revisit if a third surface (e.g., a future static landing page) ends up needing the same set.

Verification

  • nx run-many -t lint test build --projects=portal-shell,portal-admin — green.
  • Both dist/apps/{portal-shell,portal-admin}/browser/{en,fr}/favicons/ ship the seven expected files.
  • Admin's emitted site.webmanifest carries "name": "APF Portal Admin".
  • Admin's emitted index.html carries the full <link> block + theme-color meta.
  • Portal-shell ships apf-logo.svg in its logos/ folder per locale; apf-small.png is gone.

Test plan

  • Lint + test + build green.
  • Built outputs spot-checked (assets ship, manifest text correct, index.html wired).
  • Manual: nx serve portal-shell → header shows the new SVG logo crisp at 1x / 2x / 3x DPR.
  • Manual: nx serve portal-admin → tab favicon visible, dev tools → Application → Manifest shows "APF Portal Admin" with no errors.
  • Manual: install portal-admin as a PWA from a Chromium browser → the install dialog reads "Install APF Portal Admin", home-screen icon uses the same family as portal-shell.
## Summary Two related brand-asset cleanups, bundled per request: ### portal-shell — header logo - Replace [`apf-small.png`](apps/portal-shell/public/logos/) (a 7.6 KB raster we'd extracted from the original PNG-in-SVG and re-encoded through sharp) with [`apf-logo.svg`](apps/portal-shell/public/logos/apf-logo.svg) — an actual 1024×1024 vector export (2.1 KB). Sharper at any density, smaller payload, no rasterisation artefacts when zoomed. - [`header.html`](apps/portal-shell/src/app/components/header/header.html) swaps `<img src=…>` accordingly. - The wide-format `apf-portal.svg` stays in place for future surfaces (login splash, etc.). ### portal-admin — favicons + PWA manifest Mirrors what PR #84 did for `portal-shell`: - Copy the six favicon images (`favicon.ico`, `favicon.svg`, `favicon-96x96.png`, `apple-touch-icon.png`, `web-app-manifest-{192,512}.png`) into [`apps/portal-admin/public/favicons/`](apps/portal-admin/public/favicons/). Single visual identity across the two apps. - Customise [`site.webmanifest`](apps/portal-admin/public/favicons/site.webmanifest) for admin: `name: "APF Portal Admin"`, `short_name: "Admin"`. Everything else (icons, theme-color, display) stays identical to portal-shell's manifest. - Wire the `<link>` block + `<meta name="theme-color">` in [`apps/portal-admin/src/index.html`](apps/portal-admin/src/index.html). - Remove the obsolete top-level `apps/portal-admin/public/favicon.ico` — now under `favicons/`, served via `<link rel="shortcut icon">`. ## Decision worth flagging **Assets duplicated rather than shared via a lib.** Both apps ship their own copy of the 7 favicon files (~120 KB binary each). The alternative — a `shared-assets` (or extended `shared-tokens`) lib with the assets glob copied into each app's `dist/` at build time — is the architecturally tidier path, but introduces a build-config change with no real payoff at our scale. Revisit if a third surface (e.g., a future static landing page) ends up needing the same set. ## Verification - `nx run-many -t lint test build --projects=portal-shell,portal-admin` — green. - Both `dist/apps/{portal-shell,portal-admin}/browser/{en,fr}/favicons/` ship the seven expected files. - Admin's emitted `site.webmanifest` carries `"name": "APF Portal Admin"`. - Admin's emitted `index.html` carries the full `<link>` block + `theme-color` meta. - Portal-shell ships `apf-logo.svg` in its `logos/` folder per locale; `apf-small.png` is gone. ## Test plan - [x] Lint + test + build green. - [x] Built outputs spot-checked (assets ship, manifest text correct, index.html wired). - [ ] Manual: `nx serve portal-shell` → header shows the new SVG logo crisp at 1x / 2x / 3x DPR. - [ ] Manual: `nx serve portal-admin` → tab favicon visible, dev tools → Application → Manifest shows "APF Portal Admin" with no errors. - [ ] Manual: install portal-admin as a PWA from a Chromium browser → the install dialog reads "Install APF Portal Admin", home-screen icon uses the same family as portal-shell.
julien added 1 commit 2026-05-12 11:58:50 +02:00
chore(brand): swap header logo to a real svg + ship favicons for portal-admin
CI / scan (pull_request) Successful in 3m13s
CI / commits (pull_request) Successful in 3m56s
CI / check (pull_request) Successful in 4m12s
CI / a11y (pull_request) Successful in 3m33s
CI / perf (pull_request) Successful in 9m23s
22fd93a43a
Two related brand-asset cleanups bundled per request:

portal-shell — header logo:
- Replace `apf-small.png` (a 7.6 KB raster wrapped through sharp from
  the original PNG-in-SVG file) with `apf-logo.svg`, an actual
  vector 1024×1024 export (2.1 KB). Sharper at any density, smaller
  payload, no rasterisation artefacts when the header zooms.
- `header.html` swaps the `<img src=…>` accordingly.
- The wide-format `apf-portal.svg` stays in place for future
  surfaces (login splash, etc.).

portal-admin — favicons + PWA manifest:
- Mirror portal-shell's PR #84 setup. Copy the six favicon image
  assets (favicon.ico, favicon.svg, favicon-96x96.png,
  apple-touch-icon.png, web-app-manifest-{192,512}.png) into
  `apps/portal-admin/public/favicons/`. Single visual identity
  across the two apps.
- Customise `site.webmanifest`: `name: "APF Portal Admin"`,
  `short_name: "Admin"`. PWA install banners and home-screen
  icons read the right app name when admin is installed
  standalone. Icon entries + theme-color + display stay identical
  to portal-shell.
- Wire `<link>` tags in `apps/portal-admin/src/index.html` mirroring
  portal-shell's, plus `<meta name="theme-color">`.
- Remove the now-obsolete top-level `apps/portal-admin/public/favicon.ico`
  (replaced by the entry under `favicons/`, referenced via
  `<link rel="shortcut icon">`).

Verified: `nx run-many -t lint test build --projects=portal-shell,
portal-admin` green; both `dist/.../browser/{en,fr}/favicons/` ship
the seven expected files; admin manifest contains "APF Portal Admin";
admin `index.html` has the right `<link>` block.
julien merged commit 9443a52bb7 into main 2026-05-12 11:59:04 +02:00
julien deleted branch chore/brand-assets-sync 2026-05-12 11:59:06 +02:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: julien/apf_portal#106