Files
lernbar/CHANGELOG.md
T
Florian WildeandClaude Opus 5 1af5613e9b Baustein 2: Inhalte einlesen und pruefen, Handouts, Suche, Glossar
Die fachlichen Inhalte liegen als Dateien unter content/ und werden beim
Start eingelesen, geprueft und in den Speicher geladen.

- Inhaltslader mit Zod-Schemata und Querverweispruefung
- Fehlermeldungen nennen Datei und Zeile, gesammelt statt beim ersten
  Fehler geworfen; die Anwendung startet bei Fehlern nicht
- npm run inhalte:pruefen prueft ohne Start
- Handout-Ansicht mit festem Aufbau, Uebersicht nach Themenbloecken
- Volltextsuche mit Gewichtung und Trefferausschnitt
- Gelesen-Markierung je Handout
- Glossar mit Suche und automatischer Verlinkung in den Handouts
- Beispielinhalte: 4 Wochen, 12 Handouts, 24 Merkkarten, 4 Aufgaben,
  4 Checklisten, 2 Lernzielkontrollen, 24 Glossareintraege
- rahmenplan.yaml aus FIAusbV 2020 und KMK-Rahmenlehrplan, mit Fundstellen
- gray-matter entfernt, YAML-Kopf wird selbst herausgeloest
- npm run screenshots nimmt die Bilder fuer die Anleitung auf
- 39 neue Tests, insgesamt 68

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 07:56:38 +02:00

5.3 KiB
Raw Blame History

Änderungsprotokoll

Alle nennenswerten Änderungen an der Lern-Bar stehen hier. Aufbau nach Keep a Changelog, Versionsnummern nach Semantischer Versionierung.

Wie versioniert wird

  • Patch (0.1.x) – Fehlerbehebungen, Textkorrekturen, Inhaltsänderungen
  • Minor (0.x.0) – ein neuer Baustein aus dem Fahrplan
  • Major (x.0.0) – 1.0.0 ist die erste abnahmefähige Fassung; danach nur noch bei Änderungen, die einen Eingriff beim Betrieb erfordern (Datenformat, Umgebungsvariablen, Betriebsablauf)

Eine Fassung wird so festgeschrieben:

npm version minor -m "Fassung %s"   # hebt package.json und setzt ein Git-Etikett
git push --follow-tags

Vor npm version wandert der Abschnitt „Unveröffentlicht" unter eine neue Überschrift mit Nummer und Datum.


Unveröffentlicht

0.2.0 – 2026-09-10

Die Inhalte kommen ins Spiel: Handouts, Suche, Glossar – alles aus Dateien im Repository, beim Start geprüft.

Hinzugefügt

  • Inhaltslader für content/: YAML und Markdown mit YAML-Kopf, Prüfung über Zod-Schemata, Aufbau aller Querverweise
  • Fehlermeldungen mit Datei und Zeile. Fehler werden gesammelt statt beim ersten geworfen – wer zehn Tippfehler eingebaut hat, sieht sie in einem Durchgang. Die Zeilennummer stammt aus dem YAML-Dokumentmodell, nicht aus einer Schätzung
  • Geprüft wird unter anderem: Existenz jeder referenzierten Kennung, Zugehörigkeit jedes Handouts zu genau einer Woche (in beide Richtungen), Kürzel passend zum Themenblock, Berufsbildpositionen und Lernfelder gegen rahmenplan.yaml, lückenlose Wochennummerierung, doppelte Kennungen, Glossarverweise ins Leere
  • npm run inhalte:pruefen prüft ohne Start und meldet zusätzlich, welche Berufsbildpositionen bisher von keinem Inhalt berührt werden
  • Handout-Ansicht mit dem festen Aufbau: Kürzel, Titel, „Worum es geht", Das Wesentliche, Übersicht, hervorgehobener Merksatz, eingeklappte Prüfungsfrage; dazu die Zuordnung zu Rahmenplan, Lernfeld und Woche
  • Handout-Übersicht nach Themenblöcken, Filter je Block, Lesestand je Block
  • Volltextsuche über Titel, Kurzbeschreibung, Merksatz, Merkkarten und Fließtext – mit Gewichtung und Trefferausschnitt, unempfindlich gegen Umlaute und Großschreibung
  • „Als gelesen markieren" je Handout, gespeichert je Benutzer
  • Glossar mit Suche; Begriffe werden in den Handouts automatisch verlinkt – höchstens einmal je Seite, nie in Code, Überschriften oder bestehenden Verweisen. Der Verweis ist ein echter Link mit Erklärung im title-Attribut, damit er auch am Handy und mit der Tastatur nutzbar ist
  • Neu einlesen bei Dateiänderung im Entwicklungsbetrieb; schlägt das fehl, bleibt der bisherige Stand aktiv und der Fehler steht im Protokoll
  • Beispielinhalte: 4 Wochen, 12 Handouts mit 24 Merkkarten, 4 Praxisaufgaben, 4 Checklisten, 2 Lernzielkontrollen mit Musterlösungen, 24 Glossareinträge
  • content/rahmenplan.yaml mit allen Berufsbildpositionen der FIAusbV 2020 (Abschnitte A, C und F, hier als A1–A10, B1–B3, C1–C5) samt amtlicher Fundstelle sowie allen zwölf Lernfeldern des KMK-Rahmenlehrplans
  • npm run screenshots nimmt die Bilder für die Anleitung automatisiert auf

Geändert

  • gray-matter entfernt: Der YAML-Kopf wird selbst herausgelöst. Die Bibliothek merkt sich Ergebnisse und lieferte beim zweiten Einlesen desselben Textes ein anderes Objekt; außerdem stimmt der Zeilenversatz für Fehlermeldungen jetzt garantiert

0.1.0 – 2026-09-10

Erster Baustein: das Fundament steht, die Anwendung lässt sich starten, anmelden und verwalten.

Hinzugefügt

  • Projektgerüst mit Next.js 15 (App Router), React 19, TypeScript
  • SQLite über Drizzle ORM; der gesamte Datenzugriff liegt hinter einer Repository-Schicht, damit ein späterer Wechsel auf PostgreSQL kein Umbau ist
  • Eigener Migrationslauf: src/lib/db/migrationen/*.sql werden beim Start einmalig angewendet und mit Prüfsumme vermerkt; nachträgliche Änderungen an bereits angewendeten Dateien lassen die Anwendung mit klarer Meldung abbrechen
  • Anmeldung mit Argon2id, serverseitigen Sitzungen, HttpOnly-Cookie und SameSite=Lax; im Cookie steht nur ein Zufallswert, gespeichert wird dessen SHA-256-Abdruck
  • Zwei Rollen (ausbilder, azubi); die Rechteregeln liegen als reine Funktionen in src/lib/auth/regeln.ts und sind vollständig testbar
  • Verwaltungsbereich für den Ausbilder: Azubikonto samt Ausbildung anlegen, Eckdaten ändern, Passwort setzen, Konto sperren und entsperren
  • Gestaltung in Petrol/Bernstein, helle und dunkle Darstellung mit Umschalter in der Kopfzeile, nur Systemschriften, keine Ressourcen von außen
  • Zeitrechnung für Europe/Berlin und Kalenderwochen nach ISO 8601
  • Mehrstufiges Dockerfile, docker-compose.yml mit einem Dienst und einem Volume, Lebenszeichen unter /api/gesundheit
  • update.sh für den Linux-Server: sichert, holt den Quelltext, baut, schaltet um und fällt bei fehlendem Lebenszeichen automatisch auf die vorherige Fassung zurück
  • sicherung.sh und wiederherstellen.sh für Datenbank und Anhänge
  • npm run konto:anlegen für das erste Ausbilderkonto