diff --git a/CLAUDE.md b/CLAUDE.md index acc852b..94642b4 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -51,4 +51,4 @@ elo.js → api.js → state.js → ui.js → app.js - **ELO source of truth is the match history**, not the stored player ELO values. Always call `recalculateStatsFromHistory()` after loading or deleting matches. - **Doubles matches** store `winnerId`/`loserId` as comma-separated player ID strings (`"id1,id2"`). Check for commas before parsing. - **Write operations** require `APP_SECRET`; reads are public. Supabase RLS enforces this via the `x-app-secret` header. -- The service worker (`sw.js`, cache key `speedhennen-v3`) uses cache-first for static assets and network-first for Supabase/CDN. Bump the cache version string when adding new static files to `STATIC_ASSETS`. +- The service worker (`sw.js`, cache key `eloapp-v1`) uses cache-first for static assets and network-first for Supabase/CDN. Bump the cache version string when adding new static files to `STATIC_ASSETS`. diff --git a/README.md b/README.md index 92d401d..cfb4449 100644 --- a/README.md +++ b/README.md @@ -67,8 +67,8 @@ Alle visuellen Markenwerte werden aus dem `BRANDING`-Objekt in `config.js` geset | Feld | Beschreibung | Standard | |------|-------------|---------| -| `name` | App-Name (Titel + H1) | `'SpeedHennen 🏸🐔'` | -| `shortName` | Kurzname für iOS-Homescreen | `'SpeedHennen'` | +| `name` | App-Name (Titel + H1) | `'EloApp 🏸'` | +| `shortName` | Kurzname für iOS-Homescreen | `'EloApp'` | | `primaryColor` | Hauptfarbe (Hex) | `'#c51216'` | | `primaryColorDark` | Hover-Farbe (optional, wird sonst berechnet) | auto | | `fontHeading` | Überschriften-Schrift (Google Fonts Name) | `'Fredoka One'` | diff --git a/config.example.js b/config.example.js index 67246dd..be61711 100644 --- a/config.example.js +++ b/config.example.js @@ -13,8 +13,8 @@ var CONFIG = { // White-Label-Branding (alle Felder optional — weglassen = Standard-Design) BRANDING: { - name: 'SpeedHennen 🏸🐔', // App-Name (Titel + H1) - shortName: 'SpeedHennen', // Kurzname für iOS Homescreen + name: 'EloApp 🏸', // App-Name (Titel + H1) + shortName: 'EloApp', // Kurzname für iOS Homescreen primaryColor: '#c51216', // Hauptfarbe (Hex) // primaryColorDark: '#a30f12', // optional: Hover-Farbe (wird sonst automatisch berechnet) diff --git a/index.html b/index.html index a7f3ce8..d51a875 100644 --- a/index.html +++ b/index.html @@ -3,12 +3,12 @@ - SpeedHennen 🏸🐔 + EloApp 🏸 - + @@ -20,7 +20,7 @@
-

SpeedHennen 🏸🐔

+

EloApp 🏸

@@ -42,7 +42,7 @@

SpeedHennen 🏸🐔

📜 Spielverlauf
- 🐔 Neue Henne + Spieler
@@ -57,7 +57,7 @@

🏸 Neues Spiel eintragen

- +
@@ -124,12 +124,12 @@

Team 2

-

🐔 Neue Henne hinzufügen

+

Neuen Spieler hinzufügen

- +
@@ -180,8 +180,8 @@

🏅 Rangliste

-
-
+
+
diff --git a/manifest.json b/manifest.json index 617a956..8d18671 100644 --- a/manifest.json +++ b/manifest.json @@ -1,6 +1,6 @@ { - "name": "SpeedHennen", - "short_name": "SpeedHennen", + "name": "EloApp", + "short_name": "EloApp", "description": "Badminton ELO-Ranking für Einzel und Doppel", "start_url": "./", "display": "standalone", diff --git a/src/branding.js b/src/branding.js index 1774998..55a0623 100644 --- a/src/branding.js +++ b/src/branding.js @@ -31,7 +31,7 @@ export function applyBranding(branding = {}) { document.head.appendChild(link); } - const appName = branding.name || 'SpeedHennen 🏸🐔'; + const appName = branding.name || 'EloApp 🏸'; document.title = appName; diff --git a/src/ui.js b/src/ui.js index 1f20435..d79e9b1 100644 --- a/src/ui.js +++ b/src/ui.js @@ -7,7 +7,7 @@ const avatarEmojis = ['😎','🤩','🤓','🤠','👻','🤖','👽','🦄',' export function getAvatarEmoji(playerId) { playerId = String(playerId || ''); - if (!playerId) return '🐔'; + if (!playerId) return '🏸'; const seed = playerId.charCodeAt(0) + playerId.charCodeAt(playerId.length - 1); return avatarEmojis[seed % avatarEmojis.length]; } @@ -29,7 +29,7 @@ export function showSuccess(message) { } export function toggleLoading(show) { - const el = document.querySelector('.chicken-overlay'); + const el = document.querySelector('.app-overlay'); if (!el) return; el.style.display = show ? 'flex' : 'none'; el.style.opacity = show ? 1 : 0; diff --git a/style.css b/style.css index 5956120..5cef895 100644 --- a/style.css +++ b/style.css @@ -445,7 +445,7 @@ tr:hover td { background: #f9f9f9; } /* ================= LOADING OVERLAY ================= */ -.chicken-overlay { +.app-overlay { display: none; position: fixed; inset: 0; @@ -456,13 +456,13 @@ tr:hover td { background: #f9f9f9; } flex-direction: column; } -.chicken-spinner { +.app-spinner { font-size: 60px; animation: spin 0.8s linear infinite; } -.chicken-spinner::after { - content: '🐔'; +.app-spinner::after { + content: '🏸'; } @keyframes spin { diff --git a/sw.js b/sw.js index c8a7fff..faf750d 100644 --- a/sw.js +++ b/sw.js @@ -1,4 +1,4 @@ -const CACHE = 'speedhennen-v3'; +const CACHE = 'eloapp-v1'; const STATIC_ASSETS = [ './',