3 Commits
Author SHA1 Message Date
hilman2andClaude Opus 5 75ab1e6a7f Sprachumschalter mit Flaggen, CLAUDE.md und CHANGELOG.md
Der Umschalter sitzt jetzt oben in der Kopfzeile statt unten im Fuss, mit
Flagge und Sprachkuerzel je Sprache. Die Flaggen sind eingebettete SVG, keine
Emoji: Windows stellt die Regional-Indicator-Paare nicht als Flagge dar,
sondern als Buchstabenpaar. Eine Flagge bezeichnet ausserdem ein Land und keine
Sprache, darum steht das Kuerzel daneben und title wie aria-label nennen die
Sprache aus. Die Rechtsseiten bekommen denselben Umschalter, jeweils auf ihr
Gegenstueck in der anderen Sprache.

Dabei ist ein Fehler aus der ersten Fassung aufgefallen: die Mobil-Regel
`.bar { padding: .75rem 0 }` hat den seitlichen Rand von `.wrap` aufgehoben,
wodurch die Navigation am Displayrand klebte. Jetzt werden nur noch oben und
unten gesetzt.

CLAUDE.md haelt die Regeln fest, die in diesem Repo gelten und die man sonst
jedes Mal neu erklaeren muesste: Changelog auf Englisch fuer Anwender,
Migrationen sind nach Veroeffentlichung unveraenderlich, docs/ ist erzeugt und
wird nicht von Hand bearbeitet, alle Texte in vier Sprachen, keine
Gedankenstriche.

CHANGELOG.md beschreibt 0.2.0 bis 0.4.0 aus Sicht der Anwender. Kein
Dateiname, kein Funktionsname, sondern was jemand jetzt tun kann und was er
beim Update beachten muss.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 12:59:58 +02:00
hilman2andClaude Opus 5 6e2cf022a2 Impressum und Datenschutzerklaerung, Seitengenerator ins Repository
Die Projektseite wird aus Deutschland betrieben und braucht damit beides:
Anbieterangaben nach § 5 DDG und Hinweise nach Art. 13 DSGVO. Beide Seiten gibt
es in allen vier Sprachen, verlinkt im Fuss jeder Seite, also mit einem Klick
erreichbar. Die deutsche Fassung ist die massgebliche; die uebrigen tragen
einen entsprechenden Hinweis.

Die Datenschutzerklaerung faellt kurz aus, weil die Seite nichts von fremden
Servern laedt: keine Schriften, keine Skripte, keine Bilder, kein Tracking,
keine Cookies. Zu benennen bleibt allein das Hosting bei GitHub Pages mit den
Server-Logs und der Uebermittlung in die USA. Ein Einwilligungsbanner ist
deshalb nicht noetig.

Kein Verweis auf die EU-Plattform zur Online-Streitbeilegung: die wurde im Juli
2025 eingestellt, der sonst uebliche Link ginge ins Leere.

Die Rechtsseiten stehen auf noindex, damit sie nicht mit der Produktseite um
Suchtreffer konkurrieren. Erreichbar bleiben sie ueber den Fuss.

Ausserdem liegt der Generator jetzt unter tools/build_pages.py statt nur bei
mir lokal. Ohne ihn muesste man zwoelf erzeugte HTML-Dateien von Hand
gleichhalten. Ein Aufruf baut die komplette Seite neu.

Die READMEs verweisen oben auf die Projektseite, in der jeweiligen Sprache.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-01 12:50:55 +02:00
hilman2andGitHub d4f118c2cb Mitarbeiter sind Benutzer, Ladelimits, Umbenennung auf easy-ocpp (v0.4.0)
Zwei Themen, die sich fast ueberall beruehren, plus die Umbenennung und die
neue Projektseite.

Mitarbeiter sind Benutzer
Migration 0002 hatte `users` (Login) und `employees` (Person) getrennt. Die
Verknuepfung wurde nur fuer Altdaten einmalig gesetzt und danach nie gepflegt,
weshalb ein Nicht-Admin-Login praktisch nie eigene Ladungen sah. Migration 0003
loest `employees` auf: ein Mitarbeiter ist ein `users`-Eintrag mit
`role='user'`, Chips und Transaktionen haengen wieder an `user_id`. Mitarbeiter
ohne Login bekommen ein Konto ohne Passwort.

Ein Mitarbeiter sieht und steuert ausschliesslich die Ladungen seiner eigenen
Chips. Cockpit, Wallboxen, Chips und Benutzerverwaltung sind serverseitig
admin-only, `/` leitet Nicht-Admins auf `/me`. Der letzte aktive Admin laesst
sich nicht mehr degradieren, deaktivieren oder loeschen.

Ladelimits
Timer und Ziel-kWh je Ladung, Abschaltung beim zuerst erreichten Wert. Ein
Watchdog prueft alle 15 s und schickt RemoteStopTransaction; das Energielimit
wird zusaetzlich sofort nach eingehenden MeterValues geprueft. Lehnt die
Wallbox ab, wird beim naechsten Takt erneut versucht. Vorgaben je Person setzt
der Mitarbeiter selbst oder der Admin.

Chip-Kategorie abgeleitet
Chip mit Benutzer ist ein Mitarbeiter-Chip, ohne ein Gast-Chip. Vorher liessen
sich Zuordnung und Kategorie widersprechen. Die Migration loest dabei die
Pseudo-Person "Gast" auf, mit der der fehlende Begriff nachgebaut wurde.

Umbenennung easy-occp auf easy-ocpp
Im Produktnamen steckte ein Dreher, das Protokoll heisst OCPP. Betrifft Binary,
Cookie, Doku und Release-Workflow. Bestehende Installationen verlieren nichts:
existiert nur die alte data/easy-occp.db, wird sie weiterverwendet.

Dazu
Projektseite in vier Sprachen unter docs/ mit hreflang, Canonical, Open Graph,
JSON-LD und Sitemap. READMEs auf die im Feld gebraeuchlichen Begriffe
ausgerichtet (CSMS, OCPP-Server, self-hosted). Version 0.4.0. Gedankenstriche
aus Code, Doku und UI-Texten entfernt; migrations/0001 und 0002 blieben dabei
unangetastet, weil sqlx eine Pruefsumme ueber den Dateiinhalt bildet.
2026-09-01 12:36:57 +02:00