Commit graph

392 commits

Author SHA1 Message Date
4df95bbe8b Release v1.1.1 2026-04-30 11:25:18 +02:00
7c66e0b9d4 Fix: CSS ?v=545 (nie gecacht) — SW by-v545, overflow-y:visible auf Desktop endgültig 2026-04-30 11:22:29 +02:00
ca44a53fb2 Fix: CSS ?v=540→543 — Browser-Cache invalidieren, overflow-y:visible auf Desktop, SW by-v544 2026-04-30 11:06:13 +02:00
d2e3009402 Fix: Desktop overflow-y:visible auf #page-content — verhindert Event-Capture, SW by-v543 2026-04-30 10:57:52 +02:00
466b4a3d6d Fix: overscroll-behavior-y:none nur mobile (max-width:767px) — Desktop-Mausrad freigegeben, SW by-v542 2026-04-30 10:42:47 +02:00
a37a944998 Fix: CSS-Version ?v=500→540 — immutable-Cache erzwingt Browser-Reload, SW by-v541, APP_VER 518 2026-04-30 10:38:11 +02:00
c0a1b2e922 Restore: CSS exakt auf v1.1.0 + overscroll-behavior-y:none auf #page-content — SW by-v540 2026-04-30 10:06:45 +02:00
4a634fbbd1 Fix: Desktop-Mausrad — overscroll-behavior:none von html/body entfernt, Desktop auf Original-Layout, SW by-v539 2026-04-30 09:58:25 +02:00
2943f98637 Fix: Desktop-Mausrad — #page-content height:100dvh+overflow-y:auto auf Desktop, interner Scroll, SW by-v538 2026-04-30 09:46:36 +02:00
3cb18acb44 Fix: Desktop Mausrad-Scroll — overscroll-behavior:auto auf html/body + #page-content ab 768px, SW by-v537 2026-04-30 09:41:50 +02:00
f01b0b228d Fix: Desktop-Scroll — overflow-y:visible auf #page-content ab 768px, SW by-v536 2026-04-30 09:32:54 +02:00
5a6ca5496b Revert nav: Original-Layout restauriert + overscroll-behavior:none — SW by-v535, APP_VER 512 2026-04-30 09:00:30 +02:00
9506eea0d9 Fix: Nav als Flex-Kind in #app{height:100dvh} — kein position:fixed, Desktop-Scroll repariert, SW by-v534 2026-04-30 08:52:39 +02:00
03508f8aa3 Fix: #app height:100dvh statt position:fixed+inset:0 — dvh inkl. safe areas, SW by-v533 2026-04-30 08:41:41 +02:00
6e938b9fa1 Fix: #bottom-nav aus #app heraus — position:fixed relativ zum echten Viewport, SW by-v532 2026-04-30 08:34:25 +02:00
460cc47844 Fix: overscroll-behavior:none auf html/body/#page-content — iOS Bounce bewegt keinen fixed Nav mehr, SW by-v531 2026-04-30 08:29:55 +02:00
b62d1ba933 Fix: Bottom-Nav position:fixed zurück — #app fixed+inset:0 verhindert Drift, nav erreicht Bildschirmrand, SW by-v530 2026-04-30 08:21:25 +02:00
cd5688ae8f Fix: iOS Bottom-Nav — #app position:fixed+inset:0, Nav als Flex-Kind
position:fixed auf #bottom-nav funktioniert in iOS PWA-Standalone-Mode nicht
zuverlässig (driftet beim Scrollen). Fix: #app selbst position:fixed;inset:0
→ Nav ist normales Flex-Kind am unteren Rand → kein iOS-Fixed-Bug möglich.
Desktop: #app position:static via Media Query. SW by-v529, APP_VER 506
2026-04-30 08:04:11 +02:00
1056824be3 Fix: Routen-Seite aus FULLSCREEN_PAGES — window-scroll statt interner Container, SW by-v528 2026-04-30 07:53:33 +02:00
359d46d9bc Fix: Bottom-Nav iOS — window scrollt statt #page-content
position:fixed funktioniert auf iOS nur stabil wenn der window-scroll aktiv ist.
Innere Scroll-Container lassen fixed-Elemente während des Scrollens 'driften'.

- #page-content: overflow:visible (window scrollt)
- body.page-fullscreen: Klasse für Karte/Routen/Chat/Gassi/Sitting
  → dort overflow:hidden + interner Scroll wie bisher
- navigate(): setzt/entfernt page-fullscreen bei jedem Seitenwechsel
- SW by-v527, APP_VER 504
2026-04-30 07:43:11 +02:00
61be87f29e Release v1.1.0 2026-04-30 07:34:06 +02:00
0e6ab1b773 Revert: App-Shell-CSS auf Original — height/overflow auf #app+body bricht iOS PWA
Behalte nur sichere Fixes:
- #page-content min-height:0 (iOS Flex-Bug)
- #bottom-nav transform:translateZ(0) (GPU-Layer)
- SW by-v526, APP_VER 503
2026-04-30 07:19:37 +02:00
8fb4137465 Fix: body overflow:hidden entfernt — bricht iOS Safari PWA-Rendering, SW by-v525 2026-04-30 06:36:31 +02:00
bdcb6bfd51 Fix: CSS-Version ?v=382→500 — immutable-Cache zwingt Browser zu neuem Download, SW by-v524 2026-04-30 06:30:45 +02:00
bbedd658fa Fix: Bottom-Nav iOS — min-height:0 auf #page-content + GPU-Layer auf #bottom-nav
- #page-content min-height:0: iOS-Flex-Bug — ohne das schrumpft der Container
  nicht und overflow-y:auto greift nicht → body scrollt statt #page-content
- #bottom-nav: transform:translateZ(0) + will-change:transform für stabile
  GPU-Compositing-Schicht auf iOS Safari
- #app: height:100% (kaskadiert von body) statt 100dvh
- SW by-v523, APP_VER 500
2026-04-30 06:20:54 +02:00
b27e4b006f Fix: Bottom-Nav immer fixiert + Gründer-Seite null-Error
- body: height:100% + overflow:hidden — body scrollt nie mehr selbst
- #app: height:100dvh (war min-height) + overflow:hidden — exakte Viewport-Höhe
- Desktop (768px+): #app height:auto + min-height:100dvh zurück (kein Bottom-Nav)
- #page-content: -webkit-overflow-scrolling:touch für iOS-Momentum-Scroll
- gruender.js: null-Check vor _renderStats() gegen "null is not an object"-Crash
- SW by-v522, APP_VER 499
2026-04-29 22:01:33 +02:00
d1e4867fb4 Fix: Trophy-Icon fill:#f59e0b auf SVG + use — goldene Farbe auch im Sprite sichtbar, SW by-v521 2026-04-29 21:51:35 +02:00
ed8398fdd4 UI: Sidebar-Footer Gründer — zentriert, goldenes Trophy-Icon 18px, muted Text, 'die 100', SW by-v520 2026-04-29 21:48:36 +02:00
0c91120427 UI: Gründer-Link im Sidebar-Footer — Trophy-Icon + 100, zentriert unter Impressum/Datenschutz, SW by-v519 2026-04-29 21:45:32 +02:00
8bf5a3960f Fix: uvicorn --forwarded-allow-ips=* — echte Client-IP hinter NPM-Proxy sichtbar
Ohne dieses Flag sehen alle Container-Requests die NPM-Bridge-IP (192.168.160.x)
als Client. Rate-Limits und Honeypot-Blocklist blockierten dadurch alle User
gleichzeitig sobald ein einziger Trigger auftrat.
2026-04-29 21:40:49 +02:00
6ae6806baf Fix: Referral-Card Header zeigt Rabattstufen — SW by-v518, APP_VER 495 2026-04-29 21:36:29 +02:00
e7e4adaa70 Feature: Referral-Rabattstufen — 10→20%, 20→30%, 50→50% lebenslang
- auth.py: _referral_tier() + _referral_next() Tier-Logik, GET /api/auth/referral gibt discount_pct + next_tier zurück
- settings.js: Referral-UI komplett neu — Tier-Kacheln, Fortschrittsbalken, Zähler, Rabatt-Hinweis
- SW by-v517, APP_VER 494
2026-04-29 21:34:23 +02:00
ab41af470d Feature: 100 Gründer-Challenge — Leaderboard, Ranking, founder_number
- users.founder_number: sequentielle Nummer #1-#100 (bei Registrierung mit Code oder Admin-Grant)
- Globaler Cap: max. 100 Gründer über alle Partner-Codes zusammen
- GET /api/partner/founders/stats: öffentlich — Slots, Partner-Ranking nach uses, Gründer-Galerie
- Öffentliche Seite /gruender: Fortschrittsbalken, Partner-Challenge-Leaderboard (🥇🥈🥉), Gründer-Grid
- Forum: "Gründer #42"-Badge (lila) neben Autorenname bei Threads + Antworten
- Settings: Badge zeigt "Gründer #N" statt nur "Gründer", klickbar zur /gruender-Seite
- Sidebar: "🏆 100 Gründer"-Link im Footer
- Admin-Grant: Vergabe von founder_number beim manuellen is_founder=1-Setzen
- SW by-v516, APP_VER 493
2026-04-29 21:30:52 +02:00
e57c6db013 Feature: Partner-Codes + Gründer-Lizenz-System für Influencer-Kooperationen
- partner_codes Tabelle: Code, Label, max_uses, grants_founder, uses-Counter
- users: is_founder + is_partner Flags (DB-Migration + auth.py SELECT)
- Registrierung: Partner-Code löst Gründer-Lizenz aus (vor User-Referral geprüft)
- API: GET/POST/DELETE /api/admin/partner/codes, POST /api/admin/partner/users/{id}/grant
- API: GET /api/partner/codes/{code}/info (öffentlich, für Registrierungsvalidierung)
- API: GET /api/admin/users/search (Name-Suche für Admin-UI)
- Admin-Tab "Partner & Codes": Code anlegen, Stats, User-Status vergeben
- Registrierungsformular: Einladungscode-Feld mit Live-Validierung
- Settings: Gründer (lila) + Partner (blau) Badge neben Kostenlos/Plus
- SW by-v515, APP_VER 492
2026-04-29 21:20:16 +02:00
810c1a79dc Fix: Staging-Icon für iOS — apple-touch-icon dynamisch für Staging-Umgebung
- icon-180-staging.png erstellt (Helm-Icon, 180px für iOS-Homescreen)
- spa_fallback: Staging-HTML ersetzt apple-touch-icon-Link dynamisch
- SW by-v514, APP_VER 491
2026-04-29 21:07:00 +02:00
15d8347e16 Fix: Staging-Nav-Styles nach App.init() setzen (inline, mit Retry) 2026-04-29 20:57:46 +02:00
0ecbc09b97 Asset: Staging-Icon — Hund mit Bauhelm, 192+512px 2026-04-29 20:49:55 +02:00
f7dfbb5bde UX: Staging — Bottom-Nav lila statt Top-Banner, kein Content-Verdecken 2026-04-29 20:45:53 +02:00
2e7ce5f248 Feature: Staging-Icon — lila Badge, BY ⚗️ Homescreen-Name, eigenes Manifest 2026-04-29 20:41:19 +02:00
a06b7862ab Merge: direct_messages Migration-Fix 2026-04-29 20:12:15 +02:00
27d847ce31 Fix: direct_messages Migration-Reihenfolge für frische DBs; Staging produktionsbereit — SW by-v513, APP_VER 490 2026-04-29 20:12:09 +02:00
720dcc3983 Merge: Staging-Workflow von develop 2026-04-29 19:57:52 +02:00
041af92306 Feature: Staging-Workflow — develop-Branch, make staging/release, APP_VERSION 1.0.0, Staging-Banner — SW by-v513 2026-04-29 19:57:33 +02:00
9d3f902014 Fix: Datumfelder im Wurfformular bündig ausgerichtet (align-items:end) — SW by-v512, APP_VER 489 2026-04-29 19:49:22 +02:00
acd46f124b UX: Wurfformular — Erwartet links, Tatsächlich rechts — SW by-v511, APP_VER 488 2026-04-29 19:45:10 +02:00
239681a6f0 UX: Wurfformular — Datumfelder mit erklärendem Hinweistext — SW by-v510, APP_VER 487 2026-04-29 19:42:26 +02:00
2411151b17 Feature: Offline-Stufen 1+2+3 — Timeout, API-Cache, Write-Queue (IndexedDB + BackgroundSync) — SW by-v509, APP_VER 486 2026-04-29 19:13:04 +02:00
ad3b73d687 Cleanup: training_exercises.js_exercise_id — ID-Mismatch bereinigt, JOIN mit exercise_progress, Fuß-Umbenennung — SW by-v508, APP_VER 485 2026-04-29 19:00:53 +02:00
9e9b87af35 Fix: Jahresbericht-Modal Schließen-Button + expliziter close-Handler — SW by-v507, APP_VER 484 2026-04-29 17:09:45 +02:00
41d5d745cb UX: Jahresbericht — Wahlmöglichkeit wenn letzter Bericht <30 Tage alt — SW by-v506, APP_VER 483 2026-04-29 17:06:34 +02:00