Commit Graph

4 Commits

Author SHA1 Message Date
thomas e2af87a7e5 fix(a11y): Beschriftungen verknuepfen, Reiter umbrechen, Badge-Farbton zurueck
- Alle 14 <label> ohne Bezug haben jetzt htmlFor/id — davon 9 in den
  Fuehrer-Formularen, also genau dort, wo am Handy getippt wird. Die
  GPS-Gruppenueberschrift im Benutzerformular ist keine Feldbeschriftung
  mehr, sondern eine Ueberschrift.
- Das Auf- und Zuklappen im Audit-Log lag auf einem <div> und war mit der
  Tastatur nicht erreichbar; jetzt ein <button> mit aria-expanded, das bei
  fehlenden Details disabled ist. .audit-item-header war ausserdem zweimal
  in derselben Datei definiert — zusammengefasst.
- Die Reiter im Admin-Panel standen in einem inline-flex ohne Umbruch: bei
  360 px war die Leiste 395 px breit und die Seite lief horizontal ueber.
  Die Datei hatte gar keine Media-Query. Jetzt Umbruch, ein Breakpoint fuer
  <=480px und 44 px Mindesthoehe je Reiter.
- REGRESSION der letzten Runde: die geskriptete Token-Migration hat #e8eaf6
  (Indigo-Toenung) als neutrale Flaeche eingestuft, wodurch .badge-bulk-update
  im Hellmodus nicht mehr von .badge-default zu unterscheiden war. Farbton
  zurueckgesetzt.
- .settings-section-count und .settings-rule-index nutzten --color-border als
  Flaeche und lagen bei 4,49:1 — jetzt --color-surface-alt.
- Checkbox, Radio und Schieberegler folgen ueber accent-color der Markenfarbe
  statt dem Browser-Blau.

Geprueft: rechnerischer Kontrast-Durchlauf ueber alle Regeln mit Flaeche und
Text in beiden Ansichten; kein Ueberlauf mehr bei 360 px in Admin-Panel und
Fuehrer-Dashboard, hell wie dunkel.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-30 20:47:44 +02:00
thomas 81b21da499 fix(frontend): kaputtes UserCard-JSX reparieren, Einladungs-Token erzeugbar machen
- UserCard.js ließ sich nicht übersetzen: die öffnende Hälfte des Ternary
  um den GPS-Bereich ({isEditingGPS ? () fehlte, während das ") : (" und
  das ")}" stehen geblieben waren. isEditingGPS wurde dadurch nur noch
  gesetzt, nie gelesen. Da die Datei in allen drei Apps identisch ist,
  scheiterte überall der Build.
- Der Einladungs-Flow aus 8384ad9 war nur zur Hälfte da: Backend und
  Login-Formular verlangen einen Invite-Token, aber kein Frontend hat
  /invite-token je aufgerufen – der Admin konnte gar keinen erzeugen und
  ein Führer ohne Passwort kam nicht ins System. Die Benutzerkarte hat
  jetzt einen Button dafür (nur bei hinterlegter E-Mail), verdrahtet über
  UserList und AdminPanel.
- api.js: bei einem Fehler ohne Request-Config lief der Retry-Zweig in
  "config.retry = 2" auf undefined und verdeckte den echten Fehler.
- useUsers: "mehr laden" hat die aktiven Filter verworfen und die
  ungefilterte zweite Seite angehängt. Mit dem serverseitigen Typfilter
  aus d9fecb6 fällt das jetzt deutlich stärker auf.
- Die öffentliche Liste zeigte statt des Telefon-Emojis ein kaputtes
  Ersatzzeichen.
- Der Logo-Upload nannte SVG als erlaubtes Format, das Backend lehnt es
  bewusst ab.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 08:11:55 +02:00
thomas 770b0b1d38 Fix app labels: replace Nachsuchen with app-specific names in drohnenfuehrer and stoeberhunde
- drohnenfuehrer: all Nachsuchenführer/Hundeführer labels replaced with Drohnenführer
- stoeberhunde: all Nachsuchenführer/Hundeführer labels replaced with Stöberhundeführer
- Fixed backend config, controllers, logger, env, package.json, seed.js
- Fixed frontend components: Header, UserList, UserForm, PublicUserList, HandlerLogin, AdminPanel, RulesDisplay
- Fixed Dockerfiles (PUBLIC_URL), nginx configs, podman-compose.yml, CONTAINER.md, docs
- Fixed service worker registration path: /sw.js -> ./sw.js
- Fixed portal/index.html
2026-05-03 08:24:28 +02:00
thomas 5eb14a7826 init: Jagd Apps Heidekreis – Portal, Nachsuche, Drohnenführer, Stöberhunde 2026-05-02 17:31:20 +02:00