diff --git a/gerbil-manager-web/e2e/stammbaum.spec.ts b/gerbil-manager-web/e2e/stammbaum.spec.ts
index 2f55793..e9d6ecf 100644
--- a/gerbil-manager-web/e2e/stammbaum.spec.ts
+++ b/gerbil-manager-web/e2e/stammbaum.spec.ts
@@ -137,3 +137,20 @@ test('Kein Würfe-Panel wenn Wurzeltier keine Würfe hat (STAMMBAUM-LITTERS)', a
await expect(page.locator('.pedigree-card').first()).toBeVisible()
await expect(page.locator('.stammbaum-litters-panel')).not.toBeVisible()
})
+
+test('Knoten-Karte zeigt volles Geburtsdatum (STAMMBAUM-FULLDATE)', async ({ page }) => {
+ skipUnlessMock()
+ // Krümel: dateOfBirth '2025-03-12' → formatDate → '12.03.2025'
+ await page.goto('/rennmaeuse/kruemel/stammbaum')
+ await expect(page.locator('.pedigree-card').first()).toBeVisible()
+ await expect(page.locator('.pedigree-card__year').first()).toContainText('12.03.2025')
+})
+
+test('Gencode-Chip zeigt Genotyp statt Farbname (STAMMBAUM-GENCODE)', async ({ page }) => {
+ skipUnlessMock()
+ // Fridolin ist Vater von Krümel — genotype 'aa CC DD EE GG PP spsp rere'
+ await page.goto('/rennmaeuse/kruemel/stammbaum')
+ await expect(page.locator('.pedigree-card').first()).toBeVisible()
+ const fridolinCard = page.locator('.pedigree-card').filter({ hasText: 'Fridolin' })
+ await expect(fridolinCard.locator('.pedigree-chip')).toContainText('aa CC')
+})
diff --git a/gerbil-manager-web/src/components/AppShell.tsx b/gerbil-manager-web/src/components/AppShell.tsx
index 043260f..06b2c93 100644
--- a/gerbil-manager-web/src/components/AppShell.tsx
+++ b/gerbil-manager-web/src/components/AppShell.tsx
@@ -1,19 +1,21 @@
import { useState } from 'react'
+import type { ReactNode } from 'react'
import { NavLink, Outlet } from 'react-router-dom'
import { de } from '../strings/de'
+import GerbilIcon from './GerbilIcon'
import './appShell.css'
interface NavItem {
to: string
label: string
- icon: string
+ icon: ReactNode
end?: boolean
}
// Primary items are always visible in the phone bottom bar; secondary items
// move into the "Mehr" sheet on phones and appear inline in the desktop sidebar.
const PRIMARY: NavItem[] = [
- { to: '/rennmaeuse', label: de.nav.gerbils, icon: '🐭' },
+ { to: '/rennmaeuse', label: de.nav.gerbils, icon: