Skip to content

feat(branding): project name and logo in the portal shell, auth screens and tab title - #10

Merged
Domantas merged 7 commits into
mainfrom
audit/project-branding
Oct 3, 2026
Merged

Domantas merged 7 commits into
mainfrom
audit/project-branding

Conversation

@Domantas

@Domantas Domantas commented Oct 3, 2026

Copy link
Copy Markdown
Contributor

What changed

  • Sidebar header (AppLayout): shows the project logo (alt = project name) when the public config has logoUrl, else the project name. The old hard-coded "Account" shows only while no project name is known. The "Account" label of the sign-out menu at the bottom stays.
  • Auth screens: password reset (request + confirm) and the OAuth callback now pass brandName + logoUrl from the store to AuthLayout, like sign-in already did.
  • Tab title: applyBranding sets document.title to the project name. The static metadata title "Admin Portal" stays as the fallback before the config loads.
  • New helper projectNameOf() in projectConfig.ts: the project name, or nothing while only the "Sign in" placeholder is known, so the sidebar and the tab never say "Sign in".
  • dashboard.tsx "Norbix Admin" is left as is: it is the no-project placeholder, there is no name to show there.

Tests

  • Vitest: new src/config/projectConfig.branding.test.ts (12 tests) covers the public-config mapping (name fallback order, brand absent / present, empty logo, endpoint failure), projectNameOf, and applyBranding (title, favicon, colour tokens).
  • Playwright (fake host): the fake host now serves its own SVG logo and returns a branding block (logo + icon, no colours). New tests/e2e/branding.spec.ts: sign-in shows the logo + "Sign in to E2E Shop", password reset shows the logo, the signed-in shell shows the logo in the sidebar, and the tab title is the project name.

Results

  • npm run lint pass, npm run format:check pass
  • npm test 13 files, 92 tests pass
  • npm run test:e2e 6 / 6 pass. The existing chat goldens did not change.
  • npm run typecheck: 6 errors, all inside ../sdks/norbix-react-redux (it calls getEmailCampaignMessage etc., which norbix-js main does not have). The same 6 errors happen on main without this change. No errors in src/.

Screenshots (new goldens)

  • tests/e2e/branding.spec.ts-snapshots/branding-sign-in-chromium-darwin.png
  • tests/e2e/branding.spec.ts-snapshots/branding-shell-chromium-darwin.png

Task file with findings: docs/tasks/project-branding.md.

🤖 Generated with Claude Code

Domantas and others added 7 commits October 3, 2026 11:13
…portal

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d on every auth screen, tab title = project name

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…resent, applyBranding title/favicon/tokens

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… spec with sign-in and shell goldens

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…erence

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Domantas
Domantas merged commit 642ae98 into main Oct 3, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant