Release Notes
Jede Änderung am KAIA-Prototyp — vom ersten Commit bis heute. Mit Aufwandszeit, Commit-SHA und wissenschaftlicher Einordnung.
d9541591h 10min**Admin Auswertung: Pre/Post-Fragebogen-Status je Teilnehmer:in.** Neue Spalten "Pre-Fragebogen" / "Post-Fragebogen" mit grünem "ausgefüllt"-Badge oder grauem "ausstehend". Backend-Endpoint `/admin/participants/progress` liefert `pre_survey_done` + `post_survey_done` via GseResult-Abfrage in einem DB-Roundtrip. Coverage-Gate: 63% → 65.06% via 14 neue Tests (participants/progress, send_single_study_start_mail, reset_test_user, settings-Routen, build_session_detail). nanoid <3.3.17 High-Severity-Vuln geschlossen.
feat: participant progress with survey status + fix CI coverage & nanoid
960213a45min**Admin Auswertung: Fortschrittsübersicht aller aktiven Teilnehmenden.** Neue Tabelle mit Fortschrittsbalken (Session x/10) erscheint sobald jemand die erste Session gestartet hat — unabhängig vom COMPLETED-Status. Macht Studienfortschritt in Echtzeit sichtbar.
feat: add participant progress overview to admin Auswertung
9fb70b715min**Admin Auswertung: korrekter Leerstand-Text.** Vorheriger Text suggerierte fälschlicherweise "Noch keine Teilnehmenden markiert", obwohl die Studie bereits läuft. Korrekte Botschaft: Daten werden erfasst, Tabelle erscheint erst nach Abschluss aller 10 Sessions. Modell-Liste bereinigt.
fix: update auswertung empty state + clean up model list
d516e6f20min**Admin Thesis-Cockpit: falsche Dateinamen korrigiert.** Alle 6 Kapitel-Seiten (Theorie, Kap3–Kap6) hatten inkorrekte `readDoc()`-Dateinamen und zeigten Fallback-Platzhalter statt Thesis-Inhalt. Ursache: Dateinamen im Code entsprachen nicht den tatsächlichen `docs/KAIA_Kap*.md`-Dateien.
fix: correct thesis chapter filenames in all admin pages
31b142e30min**WeasyPrint PDF: native Libraries im Docker-Image.** `python:3.12-slim` enthält kein libcairo/libpango — WeasyPrint installierte sich, crashing dann zur Laufzeit mit `OSError`. Fix: `apt-get install libpangocairo-1.0-0 libgdk-pixbuf-2.0-0 fonts-noto-core` im Runner-Stage des Dockerfiles. PDF-Download auf der Abschluss-Seite funktioniert jetzt vollständig. Rebuild des API-Images erforderlich.
fix: install WeasyPrint system libs in API Docker image
072b4ae30min**WeasyPrint: Fehlerbehandlung und Fehleranzeige im UI.** `except ImportError` fing native-Library-Fehler nicht — auf `except Exception` erweitert. HTML-Fallback mit `Content-Disposition: attachment`. Frontend zeigt jetzt konkrete Fehlermeldung unter dem Download-Button statt still zu scheitern.
fix: catch all WeasyPrint exceptions and show PDF error in UI
fe1466a4h**Abschluss-Seite `/abschluss` vollständig neu gestaltet.** Radar-Chart (Chart.js) für MSLQ-Subskalen. Session-Summaries einzeln aufklappbar. Vollständige Chat-Transkripte je Session. Farbiger PDF-Bericht. GSE prä/post-Vergleich mit Delta-Badge. Die Abschluss-Seite ist die zentrale Ergebnisdarstellung für Teilnehmende nach 10 Sessions — zeigt die persönliche Lernentwicklung.
feat: redesign /abschluss page with radar charts, session summaries, full chat logs + colorful PDF
eac1d0145min**Admin Testauswertung-Seite.** Zeigt Rohdaten der Simulation-User (GSE-Werte, MSLQ, Chat-Transkripte) zur Verifizierung des Journey-Test-Flows. Macht Datenspeicherung kontrollierbar ohne echte Studienteilnehmende zu benötigen.
feat: admin Testauswertung page for journey test data review
de193f330min`is_simulation`-Flag wird jetzt persistent in die DB geschrieben. Chat-Route bypassed Session-Limit und Daily-Limit konsistent für alle Simulation-User — verhindert False-Positive-Sperren bei Admin-Tests.
fix: correct is_simulation persistence + consistent bypass in chat routes
78b164915minTest-Token-Laufzeit auf 8h verlängert (vorher 15 min — zu kurz für vollständige Session-Tests). Slot-Counter aus Registrierungs-UI entfernt (irreführend bei `STUDY_MODE=locked`).
fix: extend test token to 8h, remove slot counter from registration
0e566b830min**Seed-Sessions-Endpoint** `POST /admin/users/{id}/seed-sessions`: generiert N abgeschlossene Sessions für Simulation-User — Journey-Test in Sekunden statt Minuten. Forscher-Links auf der Mitmachen-Seite direkt zur Registrierung.
feat: seed-sessions endpoint + journey test researcher links
d34793315minSession-Summary-Extraktion: `response_format={"type": "json_object"}` erzwungen — verhindert `JSONDecodeError` wenn GPT Markdown-Codeblock-Wrapping erzeugt.
fix: active users table UI improvements
d5050d430minTests für Export- und Admin-Endpoints ergänzt. npm-Audit-Vulnerabilities gefixt (esbuild + vite).
test: add export + admin tests; fix npm audit vulnerabilities
c1bfbfd5h**LLM-Architektur-Umbau: Anthropic vollständig entfernt.** `_iter_llm()` als einheitlicher Streaming-Einstiegspunkt für alle LLM-Calls — ein Code-Pfad, kein Provider-spezifischer Branch mehr. Anthropic-SDK aus Dependencies entfernt, kein impliziter Claude-Fallback möglich. Standard-Modell ab sofort `gpt-4.1-mini`. Commits `c1bfbfd` · `6cb57bb` · `39927e7` · `ab42e15`.
feat: implement real-time token streaming via _iter_llm, remove Anthropic
e2201551h 15min**thinking_strip vollständig wiederhergestellt.** `<thinking>`-Blöcke werden gepuffert und vor dem SSE-Output entfernt — Nutzer:innen sehen nie die internen Klassifikationsschritte des V7-Warm-Prompts. Warnung im Log wenn Block unvollständig (verhindert stilles Partiell-Strippen). meta_question max_tokens auf 400 erhöht (Meta-Fragen wurden gelegentlich abgeschnitten).
fix: strip <thinking> blocks before SSE output, restore thinking_strip
74cfa371h 30minUnit-Tests für `_provider()` und `_iter_llm()` ergänzt — Coverage-Gate (65%) nach dem LLM-Umbau wiederhergestellt. CI wieder grün.
test: add _provider and _iter_llm unit tests to restore coverage above 65%
66188533h**Abschluss-Seite `/abschluss`**: GSE prä/post-Vergleich (numerische Werte + Differenz), MSLQ-Subskalen als Balkengrafik (4 Subskalen: Kognition, Motivation, Lernstrategie, Ressourcenmanagement), Session-Tabelle (alle 10 Sessions mit Datum und Message-Count), Reflexionsfeld, PDF-Button. Zentrale Ergebnisdarstellung für Studienteilnehmende nach Abschluss aller 10 Sessions — zeigt die persönliche Entwicklung der Selbstwirksamkeitserwartung.
feat: implement /abschluss completion screen with GSE/MSLQ comparison
b83add61h`GET /api/v1/chat/sessions/summary` Endpoint: liefert `message_count` pro Session für die Abschluss-Seite. Seed-Completion-Logik für Simulation-User (MSLQ/GSE-Dummy-Werte, 10 Session-Stubs) — macht `/abschluss` testbar ohne echte 10 Sessions zu durchlaufen.
feat: add sessions/summary endpoint and seed-completion for sim users
270cec730minAdmin-Button "Studie abschließen" für Simulation-User: setzt Journey-State manuell auf COMPLETED (ausschließlich `is_simulation=True`). Vollständiger Test des Abschluss-Flows in wenigen Klicks.
feat: add seed-completion button for simulation users in admin panel
c81c06d3h**Studien-Export-Endpoints:** `GET /api/v1/admin/export/participants.csv` — 37 Spalten, R-ready, participant_ids (P01/P02 Pseudonymisierung), alle 10 GSE-Items + 4 MSLQ-Subskalen + Session-Counts. `GET /api/v1/admin/users/{id}/export/pdf` — WeasyPrint, Chat-Transkripte + Scores. Direkter Eingang für R-Analysen nach Studienende ohne manuelles Datenzusammenführen.
feat: add admin export endpoints for study data (CSV + PDF)
9b6dd1a2h**Admin-Auswertungsseite `/admin/auswertung`**: Tabelle aller COMPLETED-Teilnehmenden mit Aggregate-Stats (Ø GSE prä/post, Ø MSLQ-Subskalen über alle Abgeschlossenen), Einzel-Download-Buttons für CSV und PDF direkt aus der Tabellenzeile. Anthropic vollständig aus Model-Selector und Survey-Profile-Service entfernt.
feat: add Auswertung admin page with per-participant CSV/PDF export
bd1da0e45min**Studienstart-Mail pro Teilnehmer:in**: Admin kann Studienstart-Nachricht an einzelne Accounts senden. Simulation-User (`is_simulation=True`) werden automatisch aus Sammel-Versand ausgeschlossen — kein versehentlicher Mail-Blast an Test-Accounts.
feat: per-user study-start mail + exclude simulation users from bulk send
f1e38161h 30min**Admin-Fixes:** Kompakte Icon-only-Buttons in Aktiv-User-Tabelle (Platzersparnis). Delete-Button direkt in der Aktiv-Ansicht. Hard-Delete für Vorregistrierungen (kein Soft-Delete, keine Benachrichtigungs-E-Mail). Delete-Button auch in Entfernt-Ansicht sichtbar. Admin-Remove als Hard-Delete aus DB (kein Soft-Delete-Zombie). Onboarding-Thema wird vorausgefüllt wenn Profil vorhanden.
fix: compact icon-only buttons · add delete buttons · hard-delete pre-registrations
d42af6630min**Topic-Lock (Thema-Anker) im V7-Warm-Prompt**: KAIA verankert das Lernthema aus dem Onboarding explizit als Gesprächsanker — verhindert thematischen Drift in späteren Sessions. Alle 10 Sessions bleiben auf das deklarierte Lernthema fokussiert.
feat: add topic-lock (Thema-Anker) to V7 warm prompt
fe450721h 30min**Studienstart-Clearance: drei Code-Fixes + zwei Server-Aufgaben.** (1) Daily-Limit-SQL: Browser-Crash erzeugte leere Geister-Session die das Tageslimit aufbrauchte — `EXISTS`-Subquery auf Messages korrigiert das. (2) Datenschutzerklärung: Anthropic Claude Sonnet korrekt als primärer LLM-Anbieter eingetragen, OpenAI GPT-4.1-mini als Fallback — DSGVO Art. 13 Empfänger-Transparenz hergestellt. (3) DSE-Self-Service-Versprechen entfernt — "Profil → Datenschutz"-UI existiert nicht, Ausübung der DSGVO-Rechte jetzt per E-Mail (Art. 12 Abs. 3). (4) CSP-Header in Caddyfile: `default-src 'self'`, Sentry `connect-src`, `frame-ancestors 'none'`. Server: STUDY_MODE=pilot gesetzt (Daily-Limit jetzt aktiv), Hetzner-Backup aktiviert (€1.20/Mo).
fix: study readiness blockers — daily limit, DSE, CSP
31853d530minSession-Nummern-Logik: `COUNT(sessions with messages)` → `MAX(session_number)` — verhindert Session-Nummern-Rücksprünge wenn leere Sessions vorhanden sind. Admin-Session-Picker schreibt korrekte Nummern auch bei Lücken.
fix: use MAX(session_number) instead of COUNT for session numbering
486c6df1hSession-Summary-Extraktion: vollständiger Fallback von Claude Haiku auf GPT-4.1-mini bei API-Fehler, mit Traceback-Logging für alle Fehlerpfade. Die KAIA-Reflexion nach Session-Ende wird jetzt garantiert berechnet — auch bei temporären Anthropic-Ausfällen.
fix: add OpenAI fallback + full tracebacks for session summary extraction
f78da7f45minAdmin Chat-Test: Session-Picker (1–10) erlaubt gezieltes Testen einer bestimmten Session ohne alle Vorgänger durchlaufen zu müssen. Ref-Pattern verhindert Race Condition bei schnellem Wechsel. Nur für `is_simulation=True`-User.
feat: add session picker (1-10) in admin chat-test for targeted testing
0ee382920minPDF-Download-Button in der KAIA-Reflexion-Karte prominent gestaltet: volle Breite, "Gespräch + Reflexion als PDF speichern". Reflexionsinhalt ist jetzt tatsächlich im PDF enthalten.
fix: make PDF download in reflexion card prominent and correctly labeled
28b256f15minDatenschutzerklärung und Mitmachen-Seite auf GPT-4.1-mini als Session-Summary-Fallback hingewiesen. (Durch `fe45072` nochmals korrigiert: Anthropic korrekt als Primäranbieter.)
docs: update Datenschutzerklärung und Mitmachen für GPT-4.1-mini
3136da620minClosing max_tokens auf 600 erhöht (Abschlussphrase wurde gelegentlich abgeschnitten). Timeout-Meldung "Reflexion konnte nicht geladen werden" nach 30s wenn Summary-Extraktion hängt.
fix: increase closing max_tokens to 600, add summary loading timeout
d11dd9b20minOpening max_tokens auf 1200 erhöht. preferred_name stale-closure in useEffect repariert (Wunschname wurde in Session-1-Eröffnung nicht korrekt verwendet).
fix: increase opening max_tokens to 1200 and fix preferred_name stale closure
b39170b15minOpening-Trigger sperrt Zeitreferenzen (KAIA fragt nicht mehr nach Tagesgeschehen in Session-Eröffnungen). Summary-Polling auf 2s beschleunigt.
fix: prohibit time references in opening trigger, faster summary polling
33b7cbb30minKAIA-Reflexion nach Session-Ende als erste und prominenteste Aktion: separates Panel, volle Breite, eigener CTA — nicht mehr versteckt unter dem "nächste Session"-Flow.
feat: Reflexion-Button als erste prominente Aktion nach Session-Ende
2df512b30minMAX_TOKENS auf 4000 erhöht (war 2048 — zu knapp für komplexe Antworten in späteren Sessions). Session-Openings laufen jetzt auf Haiku statt Sonnet — günstiger, schneller, ausreichend für strukturierte Eröffnungsfragen.
fix: increase MAX_TOKENS to 4000 and use Haiku for session openings
ba18d9715minOperator-Precedence-Bug in Prompt-Rendering behoben. setState-in-effect-Lint-Fehler in Admin-Eval-Seite gefixt.
fix: operator precedence and setState-in-effect lint errors
bb3e7cb2h**PDF-Export** der Session-Transkripte inkl. KAIA-Reflexion aus dem Chat-Interface. **Thinking-Indicator** während KAIA antwortet. Reflexions-Button prominent nach Session-Ende.
feat: PDF-Export, Thinking-Indicator und prominenter Reflexions-Button
dcf5b811h**Per-Teilnehmer-Cost-Tracking**: Kosten pro Nutzer:in in Admin-Ansicht sichtbar. Korrekte Sonnet-4-6-Preise hinterlegt. Kostenlimit-Sperre bei Überschreitung des pro-User-Budgets.
feat: per-participant cost tracking + correct Sonnet 4.6 prices
88d1cab20minV7-Warm-Prompt: Explizite Cross-Session-Referenzen erlaubt — KAIA kann jetzt direkt auf frühere Sessions verweisen. Vorher blockierte ein zu strenger Constraint alle Rückbezüge.
fix(prompts): enable explicit cross-session references in V7 warm
c2d444e20minnpm audit: 6 High-Severity-Vulnerabilities in Web-Dependencies behoben. `package.json overrides` für `postcss` (≥8.5.18) und `sharp` (≥0.35.0) zwingen Next.js, gepatchte Versionen in eigenen node_modules zu nutzen. CI-Audit auf `--omit=dev` umgestellt: `brace-expansion` läuft ausschließlich durch ESLint (devOnly, nie in Production). Lokal und CI: 0 high vulnerabilities.
fix: resolve npm audit high severity vulnerabilities in web
1a3ccf41h 30min**Mitmachen-Seite vollständig neu** — nach 3-Agenten-Review (UX, Compliance, Psychologe). Neu: Einführungsgespräch als Schritt 2 (~15 Min Videocall vor Studienstart), KAIAs Session-Reflexion erklärt, alle 10 Session-Namen als Grid (Ankern → Loslassen). Korrekturen: "mindestens" → "genau 10 Sessions", Interview 45 Min → 15–20 Min, "Nach Woche 4" → "Nach Woche 3", CTA-Widerspruch aufgelöst, Telefonnummer Forscherin (0176 611 59 403), zweite Krisenhotline (0800 111 0 222), CoI-Deklaration im Footer. DSGVO-Fix: "Keine US-Clouds" durch korrekte SCC-Formulierung ersetzt (Anthropic/OpenAI erhalten Chat-Inhalte zur KI-Verarbeitung auf Basis von EU-SCCs).
feat: update mitmachen page for study launch
4c7354215minKAIAs Reflexion: Ladetext korrigiert auf "Ich notiere kurz, was ich aus diesem Gespräch mitnehme." (Vorgänger "nachlassen" bedeutet auf Deutsch auch "abnehmen" — grammatikalisch mehrdeutig).
feat: KAIA reflection — notiz-text while loading, button on ready
436d53845min**KAIAs Reflexion** — Session-Zusammenfassung nach Session-Ende hinter Button statt Auto-Show. UX: "Ich notiere kurz…" → "KAIAs Reflexion ansehen"-Button → expandierbare Karte (Stimmung, Themen, stärkstes Zitat, nächster Schritt).
feat: KAIA-Reflexion button — session summary on demand, not auto-shown
a5446bb1hStudienzeitraum finalisiert: 8.–28. August 2026 (3 Wochen), Interviews 1.–4. September, Thesis-Abgabe 3. Oktober. Alle Thesis-Dokumente aktualisiert (Kap. 2, 4, 6, Studienprotokoll, Teilnahmevereinbarung, Anhang, Ethikkommission). "Vier Wochen" → "drei Wochen" durchgehend.
docs: update study timeline — 3 weeks, Aug 8–28, interviews Sep 1–4, thesis Oct 3
65af3644h**KAIA Prompt V7** — Vollständige Überarbeitung des System-Prompts: Session-spezifische Opening-Trigger für alle 10 Sessions (jeweils mit eigenem Gesprächseinstieg und Retrieval-first Memory-Anchor). Einzel-Fragen-Constraint: genau 1 Fragezeichen pro KAIA-Antwort ([EINZEL-FRAGE]-Block + Check #14). Beziehungsreife-Block ab Session 6 (Elenchos, schärfere Konfrontation). `session_tone` und `session_memory_horizon` pro Session differenziert. Chat-Header: "Session 4 — Ausprobieren · von 10". Phase-Marker nach S3 ("Einstiegsphase abgeschlossen") und S5 ("Halbzeit"). Abschluss-Seite (`/abschluss`) neu: "Alles abgeschlossen.", privates Textarea-Ritual, "Fertig."-Button.
feat: V7 prompt + session-named journey arc + hero experience improvements
fcfb59d30minThema-Lock: Session 1 erlaubt einmalige Thema-Änderung, danach gesperrt. Meta-Reflexion Polling-Fix: `showSummaryCard` state korrekt reset auf `resetSession`.
feat: topic lock + one-time change in session 1 + fix meta-reflection polling
b33e03125minAlembic-Migration für KAIA Prompt v6 repariert: `updated_at`-Spalte entfernt (existiert nicht in Prod-Schema), DELETE + INSERT statt ON CONFLICT (idempotent).
fix: prompt v6 migration — remove updated_at + use DELETE/INSERT instead of ON CONFLICT
0ba14b230minStudienabschluss-Seite `/abschluss` + Redirect nach Post-Survey. Teilnehmende landen nach dem Post-Fragebogen auf einer Abschlussseite statt auf einem leeren State.
feat: study completion page + redirect after post-survey
d5e752c1h 30min**KAIA Prompt v6** — Konzept-Drift-Sperre (Check #12): KAIA wechselt das Gesprächsthema nicht, solange der aktuelle Faden unabgeschlossen ist. Schritt-Abschluss-Check (Check #13): KAIA fragt nach dem konkreten nächsten Schritt bevor sie zum nächsten Gedanken wechselt.
feat: KAIA prompt v6 — Konzept-Drift-Sperre + Schritt-Abschluss-Check
e13f10b1h 15minTages-Limit pro User: max. 1 Session/Tag (studienkonform). Preferred Name: KAIA fragt in Session 1 nach dem Wunschnamen, speichert in `users.preferred_name`, verwendet ihn in allen folgenden Sessions im System-Prompt. Admin-Timestamp in Kostentabelle.
feat: daily session limit, preferred name collection, name in prompt
f825db820minStudienstart auf **8. August 2026** verschoben (war 1. August). Studiendauer von 4 auf **3 Wochen** reduziert (Ende: 28. August 2026). 10 Sessions bleiben. Alle Stellen im System aktualisiert: StudyCountdown, Mitmachen-Seite, Landing Page, Onboarding, Survey, E-Mails, Thesis-Dokumente.
feat: add foreign language + new learning topic examples to onboarding
9869f1310minauthFetch für Disclosure-Acknowledgement repariert: Bearer-Token wurde nicht mitgeschickt → 401 beim KI-Disclosure-Bestätigungs-Endpoint.
fix: use authFetch for disclosure-ack to send Bearer token
cda4e6d10minFragebogen-Einstiegstexte auf Transfer-USP ausgerichtet. Titel: „Wie weit bringst du dein Wissen in die Praxis?" (war: „Wie lernst du bisher?"). Erklärtexte benennen jetzt explizit die Wissen-Handeln-Lücke als Messziel — kein generischer Lernfragebogen mehr.
fix: align survey intro texts with KDG/transfer USP
cc1fb4025minDocker-Dev-Umgebung repariert: Prompts-Volume-Mount und KAIA_EVAL_PROMPTS_DIR fehlten in docker-compose.dev.yml (war in Prod vorhanden). Dockerfile.dev läuft jetzt Alembic-Migrationen beim Start automatisch.
fix: add prompts volume mount and migrations to dev docker setup
942157a3hThesis-Kapitelstruktur vollständig auf Exposé-Gliederung umgestellt (mit Betreuern abgestimmt). Einleitung v2.0: Terminologische Grundlagen für „neuroadaptiv" und „Lernbegleitung/KDG". 7 neue Dokumente: Kap. 5–7 (Platzhalter), Abstract, Eidesstattliche Erklärung, Abkürzungsverzeichnis, Navigationsübersicht.
docs: Thesis-Kapitelstruktur auf Exposé-Gliederung umgestellt
9ad9e812h**KDG als USP — vollständiger Umbau.** KAIA positioniert sich nicht mehr als generischer Lernbegleiter, sondern explizit als Transfer-Instrument für den Knowing-Doing Gap (Pfeffer & Sutton, 2000). Alle Nutzertexte, Onboarding, Mitmachen-Seite, KI-Disclosure und Fragebogen-Rahmung überarbeitet. Placeholder-Beispiel: „Kritische Feedbackgespräche, die ich immer wieder aufschiebe."
feat: Knowing-Doing Gap als USP — vollständiger Umbau
499b91e45minJourney-Guard verschärft: Reihenfolge Disclosure → Onboarding → Prä-Fragebogen wird nun serverseitig erzwungen (403 bei falscher Reihenfolge). Kein Bypass durch direkte URL mehr möglich.
feat: enforce full journey order in app guard
dd69ac61hCrisis-Detection: Bypass-Bug behoben (bestimmte Formulierungen umgingen den Pre-Filter), fehlende Muster ergänzt. Eval-Pipeline: Goldset-Validierung für Crisis-Szenarien erweitert.
fix: crisis detection bypass and missing patterns in eval pipeline
4c1e67630minEval-Judge-Kalibrierung: Score-Grenzen für M3 (Persona-Responsivität) und M5 (Sequenz-Kohärenz) geschärft. Central-Tendency-Bias reduziert — Judge verteilt Scores jetzt trennschärfer über die volle Skala.
fix: sharpen M3 and M5 judge score boundaries to reduce central-tendency bias
baeeb4b45minKAIA System-Prompt v5: Schweiger-Check (#11) integriert. KAIA unterscheidet jetzt zwischen einsilbiger Antwort als Rückzug vs. als Nachdenken — Rupture-Repair-Sequenz reagiert entsprechend differenziert.
feat: add Schweiger-Check #11 to KAIA system prompt v5
ed888b145minMSLQ Subskala V "Control of Learning Beliefs" (4 Items): misst, ob Teilnehmende glauben, dass ihr Lernerfolg von ihrer eigenen Anstrengung abhängt (vs. externen Faktoren). Fünfte Subskala im Pre/Post-Survey.
feat: add MSLQ subscale V "Control of Learning Beliefs" (4 items)
7c7029d30minMSLQ Subskala V im Survey-UI sichtbar: motivierender Intro-Screen vor dem Fragebogen ("Bevor wir starten — ein kurzer Moment für dich").
feat: add MSLQ Subskala V to survey UI + motivating intro screen
994ae3315minGoldset-Beispiel m6-g001 ersetzt: Coaching-Drift im alten Beispiel führte zu systematisch zu hohem Judge-Score für M6 (Autonomie-Respekt). Neues Beispiel zeigt echte KAIA-Grenze (direktive Formulierung korrigiert).
fix: replace m6-g001 goldset example to eliminate coaching drift
c786ca945minJudge-Validierungsmethodik in Thesis Kap. 5 + Anhang M dokumentiert: Cohen's κ-Berechnung, Goldset-Design, Inter-Rater-Reliabilität-Protokoll für LLM-Evaluationsbericht.
docs: add judge validation methodology to thesis (Kap 5 + Anhang M)
860d6e910minUser-Kostenlimit auf €5.00 erhöht (war €2.00). Pre-Test zeigte: €2.00 reicht für ~15 KAIA-Turns — zu wenig für sinnvolle 10-Session-Journey.
fix: raise user cost limit to €5.00 for study participants
f8bc25510minPrompt-Versions-ID für v4_warm korrigiert + Supersession-Test aktualisiert (referenzierte falsche Version).
fix: correct v4_warm version number and update supersession test
2c41f5015minChat-Header-Icons korrigiert nach UX-Review: Flag → AlertCircle (semantisch: Meldung, kein Punkt-setzen), DoorOpen → CheckCircle2 (Session abschließen = Abschluss, nicht Abgang), "Session beenden" → "Sitzung abschließen" (sprachlich positiver), Info → HelpCircle.
2e99a9020minCharakter-Buttons aus dem Header in den Input-Bereich verschoben. Kontextuell sinnvoller: Die Charakterwahl gehört zur Gesprächsgestaltung, nicht zur globalen Navigation. Labels: 🌸 Begleitend · ⚡ Konfrontierend · 🎭 Perspektivwechselnd. Tap-Target ≥44px (WCAG 2.5.5).
ddd481120minStudienstart auf 1. August 2026 verschoben (war 16. Juli). StudyCountdown, /mitmachen, Landing Page, Vorregistrierungs-Flow, Studienprotokoll, Backend-Service aktualisiert. Study-Lock jetzt 28. Juli 2026.
158df1620minTon-Selector direkt über Chat verschoben (war versteckt im Header). Sitzung-abschließen-Button neben Senden-Button für konsistentere Bedienbarkeit.
fix: Ton-Selector direkt über Chat, Sitzung-abschließen neben Senden-Button
5e784c315minBeenden-Button prominenter: Icon (CheckCircle2) + Label direkt neben dem Senden-Button sichtbar. Verhindert unbewusstes Tab-Schließen ohne Session-Abschluss.
fix: Beenden-Button prominenter — Icon + Label direkt neben Senden
ff405cb15minSession-Counter-Bug: Zähler ging nach `resetSession` rückwärts (3 → 2). Fix: Session-Nummer wird aus DB geladen, nicht aus lokalem State.
fix: session counter goes backwards after resetSession
2691e6910minTypeScript-Narrowing im Charakter-Selektor: `disabled`-Bedingung korrigiert — verhinderte falsches Greying-out von Charakter-Buttons.
fix: TypeScript-Narrowing in Charakter-Selektor — disabled-Bedingung korrigiert
3ac152710minDPA-Tasks mit Frist 18. Juli 2026 und Links zu Anthropic/OpenAI-DPA-Seiten im Backlog hinterlegt.
chore: DPA-Tasks mit Links und Frist 18. Juli 2026 im Backlog
f7aa3651h 30minVollständige Thesis- und Dokumentations-Aktualisierung auf Stand 13. Juli: Kap. 2–6, Studienprotokoll, Teilnahmevereinbarung, BACKLOG, ARCHITECTURE synchronisiert.
docs: vollständige Thesis- und Doku-Aktualisierung auf Stand 13. Juli 2026
45a995820minAnthropic DPA archiviert: Mit Commercial ToS automatisch akzeptiert (SCCs Module Two, irisches Recht, controller→processor). PDF in `docs/legal/anthropic_dpa_2026-07-15.pdf`. Backlog-Task abgehakt.
docs: archive Anthropic DPA and mark as complete
7e2927820minMistral nach Pre-Test aus LLM-Eval-Scope ausgeschlossen. Begründung: Empathiequalität im Acceptance-Test unzureichend für Studienstandards. LLM-Eval läuft jetzt mit Anthropic Claude + OpenAI only. Vereinfacht LLM-Evaluationsbericht erheblich.
docs: drop Mistral from LLM eval scope after pre-test
4357f2d10minOpenAI DPA-Bestätigung archiviert: OpenAI Ireland Ltd. als Vertragspartner (EWR), SCCs Modul 2, gültig ab 1. Januar 2026.
docs: archive OpenAI DPA confirmation and mark as complete
16ba1e210minOpenAI DPA-PDF archiviert + vollständige Compliance-Dokumentation abgeschlossen. Beide DPA-Backlog-Tasks erledigt.
docs: archive OpenAI DPA PDF, complete compliance documentation
8b98a3530minVorläufiger Acceptance-Test dokumentiert (Acceptance-Kriterien G1-G3 für Claude-Sonnet-4.6 erfüllt). Mistral offiziell aus Studienscope ausgeschlossen und in allen Dokumenten aktualisiert.
docs: integrate preliminary acceptance test + exclude Mistral from study scope
519e1951h**Post-Studie Celebration-Screen** — Nach der Post-Messung sehen Teilnehmende eine Abschlussseite mit Pre/Post-Vergleich ihres GSE-Scores und der MSLQ-Subscores. Visualisiert die persönliche Entwicklung ohne sie zu interpretieren. Psychologen-Gate G11: Normative Referenz (Schwarzer & Jerusalem, 1995), keine klinische Aussage.
feat: post-study celebration screen with pre/post comparison
91868fc2h**KAIA Prompt v4** — Drei Verbesserungen: (1) Typ-5-Loop-Fix: KAIA fragt nicht mehr in jeder Antwort nach dem gleichen Schrittfortschritt. (2) Koan/Analogie als neues Gesprächselement für Session 4+. (3) Melden-Button im Prompt explizit sichtbar gemacht.
feat: KAIA Prompt v4 — Typ-5-Loop-Fix + Koan/Analogie + Melden-Button sichtbar
1cf814815minOSF-Vorregistrierung vollständig aus Thesis und Backlog entfernt. Vom Betreuer nicht als Pflicht bestätigt — Entfernung vereinfacht Thesis-Struktur ohne wissenschaftlichen Verlust.
docs: OSF-Vorregistrierung vollständig aus Thesis und Backlog entfernt
0aa22eb20minDatenschutzerklärung: Mistral aus Auflistung der Datenempfänger entfernt. Schrems-II-Formulierung präzisiert: Transfers an Anthropic/OpenAI auf Basis von EU-SCCs dokumentiert.
fix: Datenschutzerklärung — Mistral entfernt, Schrems-II-Formulierung präzisiert
e9663ee20minSession-1-Abschlussfrage korrigiert: war Bloom-5-Synthesefrage ("Was hast du heute entdeckt?") — ersetzt durch nicht-präsupponierende Bloom-1-2-Frage ("Woran würdest du heute Abend merken, dass sich etwas bewegt hat?"). Psychologen-Gate G11.
fix: S1 Abschlussfrage — nicht-präsupponierende Bloom-1-2-Frage statt Bloom-5-Discovery
94b3c3c20minPost-Closure Bug B1 behoben: `is_final_exchange`-Flag verhindert jetzt, dass KAIA nach dem formalen Session-Abschluss noch eine neue Frage stellt (war: Endlosschleife im Abschluss-State).
fix: Post-Closure B1 — is_final_exchange verhindert neue Frage nach Sitzungsabschluss
fa569a61h 30min**Passwort-Reset-Flow** via Brevo SMTP: User fordert Reset an, bekommt E-Mail mit Token (30 Min Gültigkeit), setzt neues Passwort. Vollständig: `POST /auth/forgot-password` + `POST /auth/reset-password`. DSGVO-konform (kein Tracking-Pixel).
feat: password-reset flow via Brevo SMTP
725fc8d1h**Meta-Reflexion UI** — KAIA schreibt nach Session-Ende eine kurze Reflexion (Stimmung, Themen, stärkstes Zitat, nächster Schritt). Karte erscheint nach dem Abschluss — optional lesbar, kein Pflicht-Interaktionspunkt.
feat: meta-reflection UI — session summary after session end
79144ad20minBug B3 behoben: `count_sessions()` zählte orphaned Sessions (ohne Nachrichten) mit — Tages-Limit wurde dadurch fälschlicherweise überschritten. Fix: Query schließt leere Sessions aus (`WHERE message_count > 0`).
fix: B3 — count_sessions excludes empty orphaned sessions
f079f1f30minSession-10-Abschluss-Flow: Nach der letzten Session werden Teilnehmende automatisch zur Post-Befragung weitergeleitet (`/umfrage/post`). Kein manueller Schritt mehr nötig.
feat: session-10 completion flow — redirect to post-survey
cce50552h**Goldset M2-M6 + Release Gates** — Goldset-Beispiele für alle fünf operationalisierten Metriken (M2 Empathie, M3 Persona-Responsivität, M4 Sokratische Reinheit, M5 Sequenz-Kohärenz, M6 Autonomie-Respekt) manuell gelabelt. Judge-Validierungsscript: berechnet Cohen's κ zwischen Judge-Scores und Goldset-Labels. Release Gates: Eval-Pipeline startet erst nach erfolgreichem Gate-Check (κ ≥ 0.6).
feat: add goldset M2-M6, judge validation script, release gates
20319f82h 30minPer-User-Modellzuweisung implementiert: Admin kann für jeden Studienteilnehmenden das LLM individuell festlegen (Admin → User-Liste → Modell-Dropdown, auch in Journey-Test). Neue Spalte `kaia_model` (nullable) in `users`. PATCH `/api/v1/admin/users/{id}`. Gilt für alle vier Stream-Funktionen (opening, response, closing, meta-question). System-Standard wenn leer. Schema-Update: `UserRead` gibt `kaia_model` zurück.
feat: per-user LLM model assignment + GPT-5.6 Terra support
2a275ae30minKritischer Fix für OpenAI GPT-5.x: API lehnt `max_tokens` ab (invalid_request_error), erwartet `max_completion_tokens`. Betrifft alle Chat-Stream-Calls und Eval-Judge-Calls für GPT-5.x. Mistral verwendet weiterhin `max_tokens`.
fix: use max_completion_tokens for OpenAI GPT-5.x models
52df1e630minGPT-5.6 Terra (gpt-5.6-terra) in Eval-Pipeline, Admin-Model-Switcher und Kostentabelle. Kosten: $5.00/M Input · $15.00/M Output.
430b6f015minGPT-4.1 mini Labels und Cost-Estimates im Eval-UI.
50e633930minEval-Judge JSON-Parse-Fehler: LLMs betten gelegentlich literale Newlines in JSON-Strings ein. Fix: Zwei-Stufen-Parse (sauber → `re.sub(r"[\n\r\t]", " ", ...)` Bereinigung → Fallback score=None mit Logging).
7b7077945minVier kritische Chat-Fixes: (1) Abschluss-Schleife — KAIA fragte nach dem Close endlos nach Feedback (State-Machine-Fix). (2) Logout-Redirect nach Session-Ende. (3) Startseite-Link im Footer. (4) Token-Refresh robuster — stale Tokens werden proaktiv rotiert.
56870291h 30minE-Mail-Benachrichtigungen für drei Ereignisse: Registrierung (Bestätigung + Wartehinweis), Freischaltung durch Admin (mit Login-Link), Studienstart (mit Journey-Link). DSGVO-konform, kein Tracking-Pixel, SMTP via FastAPI BackgroundTask.
169ce2b45minLernthema-Eingabe direkt im Registrierungsformular (war bisher erst im Onboarding). Admin kann User löschen (DSGVO Art. 17 Kaskade aller Daten).
faf281830minJourney-Routing-Fix, Registrierungsformular-Redesign, Session-Start-403-Fix.
d1f19db15minOSF-Pre-Registration und Ethikvotum-Hinweise aus allen öffentlichen Seiten entfernt. Hintergrund: Beides noch nicht abgeschlossen — öffentliche Ankündigung wäre irreführend.
390310a5minUnbenutzter Mail-Import in Admin-Users entfernt.
f2185a34hEval-Matrix v1: Vier Metriken (Empathie, Sokratik, Konsistenz, Crisis-Detection-Safety). LLM-as-Judge (Claude Sonnet 4.6). Simulation-Persona-Runner (10 Crash-Personas). Cancel-Endpoint. Admin-UI mit Live-Log + Heatmap.
0bef8761hSimulation: Stop-Button, Persona-Auswahl (alle/Teilmenge), Lauf-Historie mit Zeitstempel.
3c5f4d62hMulti-Model Eval: Alle vier LLMs (Claude Sonnet, Claude Haiku, GPT-4o, Mistral Large) parallel evaluierbar. Admin Model Switcher für Chat.
703d42e1hEval-Vergleichsmodus: Direkte Gegenüberstellung zweier Modelle über alle Metriken.
720afc820minKAIA_CHAT_MODEL env-var für Modell-Override ohne Code-Änderung.
062495110minKAIA_CHAT_MODEL via .env ins Docker-Environment durchgereicht.
d0a09e945minAnthropic Prompt Caching für alle LLM-Calls aktiviert. System-Prompts + Session-Kontext als Cache-Kandidaten markiert. ~70% Kostenreduktion bei langen Prompts.
fce8d3620minPrompt Caching auch für Eval-Judge und Persona-Simulator. Judge-System-Prompt identisch über alle Metriken — idealer Cache-Kandidat.
678320630minEval Compare Mode: Per-Persona-Blöcke vertikal gestapelt für bessere Lesbarkeit.
9b60e4220minCompare Mode UX: Deltas in Ø-Spalten, klareres Differenz-Banner.
c3ef8ec30minEval-Run löschen möglich. Compare-Mode-Fixes. Model-Badge generalisiert.
82aa06e45minSimulation + Eval-Matrix UX: 4-Schritt-Flow (Modell → Simulation → Eval → Ergebnisse), ETA-Banner, Fortschrittsanzeige.
76fc9f120minHeatmap zeigt geflaggte Metriken pro Zelle statt has_flags-Bool.
8ebeb1045minSession-spezifische Abschlussfragen (Session 10 ≠ 1-9). Session-Wiederaufnahme wenn Browser ohne Abschluss geschlossen wird (window-close-Handling via GET /sessions/active).
1d10b9730minSession-Prompt-Modell mit M2-Judge synchronisiert. Crisis-Detection erweitert (mehr Trigger-Phrasen).
0e5cfad30minRate-Limit-Retry mit exponenziellem Backoff. Mistral-Small-Empfehlung im Eval-UI für kosteneffiziente Evaluierungen.
ea3fb2b15minFix: Mistral + OpenAI brauchen mindestens eine User-Message (leere Message-History crash).
9751e6015minFail-fast bei erschöpftem Anthropic API-Kontingent (429 → sofortiger Fehler).
fe4daab20minEval-Log zeigt Simulations-Fehler + Judge-Reasoning bei score=None.
e7aa1b615minEval Stop = tatsächlich Stop. Live-Log. Prompt-Pfad-Fix.
c2b2bf210minEval-Matrix Leerstate erklärt Trennung von Simulation und Eval.
9e5428e10minETA-Banner zeigt korrekte Gesamtsession-Anzahl bei Teilauswahl.
8ff33f410minsession_numbers im Eval-Modal korrekt übertragen.
106616f5minHaiku-Kostenrate auf 0.040 EUR/Turn (empirisch gemessen).
73b05c410minKostenschätzung auf empirische Messwerte kalibriert.
1622c615minKostenangaben auf 2 Nachkommastellen.
56c610210minEval-Matrix Login-Redirect behoben (Next.js Admin-Proxy-Routen).
eab24df20mintest_chat + test_prompts repariert (UserProfileRepository + v3 warm-Prompt).
43915b430minRelease Notes Redesign: Neue Timeline-Ansicht. Admin-Link in Nav für eingeloggte Admins.
3bf298320minCoverage-Gate wiederhergestellt: 66% (war 53% durch neue Eval/Simulation-Dateien).
b14a8f945minLive-Kostentransparenz: llm_usage-Tabelle, Admin-Dashboard zeigt Kosten pro User in Echtzeit. Basis für Cost-Guard (max. €2/User).
fbe9ef315minAPI-Timeouts auf alle Anthropic-Client-Calls (connect=5s, read=60s, write=10s).
dccd0e510minMAX_TOKENS 1500 → 3000. v3-Prompt braucht deutlich mehr Denk-Budget.
a58188715minauthFetch leitet bei abgelaufener Session automatisch auf /login um.
f3af2625minAdmin-Test-Token auf 2h (war 15min — zu kurz für Journey-Tests).
bb2c30620minKAIA nutzt learning_topic in erster Session für gezieltes Motiv-Probing.
f60241c5minAdmin-Dashboard Health-Check URL korrigiert (doppeltes /api entfernt).
2315c2310minMigration ON CONFLICT → DELETE+INSERT (PostgreSQL-Kompatibilität).
aecb22130minHaiku gibt JSON mit Markdown-Fences zurück — Strip-Mechanismus. Cross-Session-Kontext robuster.
b284aa11hTier-2 Qualitäts-Gates: Domain-Grenzen durch import-linter erzwungen, Factory-Pattern.
a9a460445minQuality Gates Tier 1: chat/service.py aufgeteilt, Test hardening.
4c181cc20minmypy zum Pre-Commit-Hook hinzugefügt.
550a2c220minmypy-Fehler in summary, survey/service, users/models behoben.
04.07.2026 · Session-Architektur-Redesign v0.9.0
Vollständige Neugestaltung der KAIA-Session-Architektur auf Basis eines interdisziplinären Team-Reviews (Psychologe, Didaktiker, AI Engineer, UX Designer). KAIA war bisher session-blind — kein Zugriff auf Sitzungsnummer, kein kumulatives Gedächtnis, kein persistentes Lernenden-Profil. Das ist jetzt grundlegend behoben.
▸ Technische Details einblenden▾ Technische Details ausblenden
Was sich für Nutzer:innen ändert:
KAIA weiß ab jetzt in welcher Session sie sich befindet und verhält sich entsprechend. Die Gesprächsführung eskaliert systematisch von explorativem Erkunden (Sessions 1–2) über Transferarbeit und Analyse (Sessions 3–8) bis zur Synthese (Sessions 9–10). Session 5 enthält immer einen obligatorischen Halbzeit-Spiegel. Session 10 endet mit drei simultanen Aufgaben: Gegenüberstellung der eigenen Aussagen von Session 1 mit heute, Autonomisierungsfrage ("Wie lernst du ohne mich weiter?") und — bewusst — kein GSE-Priming vor der Post-Messung.
Im Chat-Header wird jetzt "Session N von 10" angezeigt. Ab Session 9 erscheint ein stiller Kontext-Satz ("Das ist deine vorletzte Session." / "Das ist deine letzte Session.") — ohne Fanfare, ohne UI-Element, als einfacher Hinweis.
Technische Umsetzung (vollständig):
Zwei-Schichten-Profil-Modell: • Layer 1: Neue Tabelle user_learning_profiles — unveränderlicher Snapshot nach Pre-Survey (MSLQ + GSE). Speichert gse_baseline, subscale_scores (JSONB), gse_items (JSONB) und eine LLM-generierte profile_interpretation (Haiku, max. 120 Wörter). UNIQUE-Constraint verhindert Doppelanlagen auch unter paralleler BackgroundTask-Ausführung. • Layer 2: session_summary in chat_sessions — kumulative Verhaltensdaten inkl. neu hinzugefügtem Feld strongest_quote (stärkster eigener Satz des Lernenden pro Session).
PromptContext v3 — 7 neue Felder: session_number, session_phase (early/mid/late), is_final_session, user_turns, learner_profile, gse_baseline, session_history_summary, historical_quotes.
Kumulatives Session-Gedächtnis: load_all_session_contexts() aggregiert alle Vorsessions kompakt (älteste zuerst). Inline-Re-Extraktion mit 12-Sekunden-Timeout entfernt — das war das größte Latenz-Risiko beim Session-Start.
KAIA_PROMPT_V3_WARM (aktiv): Jinja2-Template mit session-aware Logik: Session-Kontext-Header, Lernenden-Profil-Block (Hintergrund, nie explizit zitieren), obligatorischer Session-5-Trigger, Historical-Quotes-Block (ab Session 6 für Widerspruchsarbeit Typ 3), Session-10-Drei-Aufgaben-Abschluss. V2 als Eval-Regression-Baseline erhalten.
Profil-Trigger nach Pre-Survey: maybe_create_learning_profile() als BackgroundTasks-Task nach /survey/mslq und /survey/gse — idempotent, kein LLM-Call pro Session.
Thesis-Relevanz: Das persistente Nutzerprofil ist ein Kernbaustein der neuroadaptiven Personalisierung (Forschungsfrage 2). Die regelbasierte MSLQ-Profil-Übersetzung (4 Kombinationen: Enthusiast / Kompetente-ohne-Antrieb / Gewissenhafte / Lernstarke) ist als Phase-3-Feature geplant — die Architektur ist vorbereitet. Wichtig für die LLM-Evaluation: V2 bleibt als Eval-Regression-Baseline für kontrollierte Vergleiche in der Pilotstudie erhalten. · ~12h Teamarbeit + Implementierung
2184a3130minSurvey 500-Fehler behoben: Parametername-Mismatch (`mt` vs. `measurement_type`). MSLQ- und GSE-Items werden jetzt Fisher-Yates randomisiert. Fortschrittsleiste. Auswertungsansicht nach Abschluss des Fragebogens.
fix: Survey 500-Fehler + Randomisierung + Auswertungsanzeige
bfd5a6d45minMasterthesis server-seitig gerendert: Markdown wird serverseitig zu HTML konvertiert — kein Client-JS für 170 KB Thesis-Text mehr nötig. CSS-Toggle ohne React-Reconciliation. Survey-Auth-Flow: Admin-Token in tokenStore.
fix: Masterthesis server-side rendering + Survey-Auth-Flow
744ce471h 20minFragebogen-Auswertung mit Interpretationstext und Farbkodierung (niedrig/mittel/hoch). GSE-Normdaten: M=2,97 dt. Stichprobe (Schwarzer & Jerusalem, 1995). ITC-Richtlinien / Psychometrik-Gate G11. Admin-Journey-Test kann Chat starten: `kaia_session`-Cookie-Middleware-Fix.
feat: Auswertungs-Interpretation + Chat-Auth-Fix für Admin-Journey-Test
cd698a51hKritischer Fix: `user.learning_topic` wurde gespeichert aber nie an den Prompt weitergegeben. PromptContext + alle vier Stream-Funktionen + DB-Migration aktualisiert. KAIA kennt das Lernthema jetzt von Anfang an. `is_simulation` + `simulation_run`-Felder für Crash-Test-Simulation ergänzt.
fix: Lernthema wird jetzt in jeden KAIA-Prompt übergeben
fc7829320min"Session beenden" als sichtbarer Header-Button (DoorOpen-Icon, Border-Stil). Feedback-Buttons mit Kategoriezeile und Tooltips für bessere Erkennbarkeit.
feat: Chat-UX — Session-beenden-Button in Header + Feedback-Erklärungen
c7af4dd20minSession-2-Einstieg erinnert jetzt an Session 1. resetSession ruft POST /sessions/{id}/end auf bevor die neue Session startet — extract_session_summary läuft im Hintergrund und befüllt insight_for_next_session, last_first_step und observation für die Folgesession.
fix: Session-Ende vor Reset aufrufen — Cross-Session-Gedächtnis aktiviert
e7fda9f2h 30minNeue Admin-Seite /admin/lerndesign zeigt vollständige Session-Architektur (Sessions 1–10, Bloom-Progression, Sentiment-Signale, verbotene Muster, Feature-Status-Matrix, EMA-Referenz). EMA-Feedback-Buttons (Wow, Weiterdenken, Hänge fest, Unklar) im Chat-Test aktiv. SRL-Messung via MSLQ (Pintrich et al., 1991) — Instrumentenwahl auf Basis psychologischer Fachberatung. Relevant für Studien-Testing und Thesis-Messkonzept.
feat: Admin Lerndesign-Seite + EMA Feedback-Buttons im Chat-Test
7466be66hVollständige Studien-Journey implementiert: Pre-Befragung (MSLQ + GSE) vor erstem Chat, bis zu 10 Sitzungen, Post-Befragung danach — mit Chat-Gating (HTTP 403 wenn Fragebögen fehlen). Admin Instrumente-Seite: alle 30 MSLQ-Items, Auswertungslogik, APA-Zitate für Thesis-Anhang. Masterthesis-Navigation fix (useMemo). v0.8.0.
feat: Journey-Infrastruktur (MSLQ/GSE Pre/Post) + Admin Instrumente + Masterthesis-Fix
f6a54071h 30minAdmin "Journey testen"-Seite: kompletten Studienflow in einem Schritt, Reset-Button. `learning_topic` als DB-Feld (neue Migration). Masterthesis-Freeze: `React.memo` auf `ChapterContent`.
feat: Journey-Test-Seite (Admin) + learning_topic + Masterthesis-Freeze-Fix v2
83a8ce315minJourneyTestClient nutzt Admin-Test-Token (wie chat-test): 401-Fehler auf Journey-Testseite behoben.
fix: JourneyTestClient nutzt admin test-token (wie chat-test)
8c0628a10minJourneyTestClient korrekter api-Import: `apiFetch` existiert nicht — auf `api.get` + nativen `fetch` umgestellt. Build-Fehler behoben.
fix: JourneyTestClient — korrekter api-Import (apiFetch → api.get + fetch)
c4a71e640minMasterthesis lazy-mount in DOM. Survey-Formular sendet Auth-Header korrekt.
fix: Masterthesis lazy-mount + Survey-Auth
41e125b20minMasterthesis-Navigation mit `startTransition` unterbrechbar. Journey-Auth-Fix (401).
fix: Masterthesis startTransition + Journey authFetch (401)
3baa6a520minMasterthesis-Navigation: alle sechs Kapitel werden einmalig gerendert, per CSS ein-/ausgeblendet. Kein Reconciliation-Overhead mehr.
fix: Masterthesis-Navigation — alle Kapitel im DOM
215187a2minUngenutzte Imports aus Lerndesign-Seite entfernt. Keine funktionale Änderung.
chore: unused imports aus Lerndesign-Seite entfernen
e9bdea130minFK-Violation nach Von-vorne-Reset behoben (stream_opening verwirft Session-gone-Fehler statt zu crashen). Prompt-Verbotsliste um Affekt-Spiegeln-Muster erweitert + Strukturprinzip für emotionale Einstiege explizit gemacht.
fix: IntegrityError bei Reset-Race + Affekt-Strukturprinzip im Prompt
5b2608c5minKAIA darf keine menschliche Gesprächsgeschichte behaupten ("das kenne ich aus vielen Gesprächen", "das höre ich oft") — solche Vergleiche sind fabricated und täuschend.
fix: Erfahrungsvergleiche in KAIA-Verbotsliste
2dda94530minKAIAs erste Session hat jetzt einen vollständigen Lernziel-Flow: (1) offene Einladung, (2) Thema + Motiv, (3) Bestätigung, (4) Lernintention ("was könntest du in 4 Wochen können/verstehen?"), (5) erster Schritt + Evidenzanker ("woran würdest du merken, dass sich etwas bewegt hat?"). Wissenschaftlich fundiert durch Hattie & Timperley (2007, d=0.54), Knowles' evidence of accomplishment (1975), Gollwitzer & Sheeran (2006, d=.65) und RCT Schimpf et al. (2026) zur KI-gestützten Zielformulierung.
feat: Session-1-Flow — Lernintention + Evidenzanker (Knowles/Hattie)
0c62cf630minKAIAs erste Frage in Session 1 ist jetzt offen — "Was beschäftigt dich gerade — womit möchtest du heute anfangen?" statt der fehlerhaften Variante, die ein Thema voraussetzte das noch gar nicht da war. Im Admin-Chat-Test zeigt die Kopfzeile jetzt Session 1/2/3 (Lernzähler) statt der internen DB-ID.
fix: Session-1-Prompt und Session-Nummer-Anzeige im Chat-Test
a9f24ed45minKapitel 3 (Rahmenwerk) und 6 (Pilotstudie) der Masterthesis aktualisiert. Neue Abschnitte: konzeptuelle Trias Lernziel/Lernschritt/Erfolgskriterium (Knowles, 1975), Task vs. Learning Intention (Hattie & Timperley, 2007, d=0.54), Evidenzanker als Alternative zu "messbarem Erfolg", Implementation Intentions (Gollwitzer & Sheeran, 2006, d=.65). 11 neue Quellen in APA-7, darunter RCT zu KI-gestützter Zielformulierung (Schimpf et al., 2026).
docs: Thesis Kap3+6 — Session-1-Design wissenschaftlich fundiert
6a9ee2810minKAIA sagt nicht mehr "Muss nichts Großes sein", "Kein Druck", "Das ist okay so" o.ä. — diese Sätze entlasten statt zu aktivieren und gehören in Therapie, nicht in Lernbegleitung. Bei "weiß nicht" scaffoldet KAIA jetzt mit drei konkreten Orientierungsrichtungen statt emotionaler Beruhigung.
fix: Therapiesprache aus KAIA-Prompt verbannt
75a8fe55minKAIA fragt nicht mehr nach innerer Wahrnehmung — kein "spürbar", kein "was taucht auf", keine Abend-/Morgenritual-Einstiege. Diese Muster sind Therapie-Sprache, keine Lernbegleitung. Bei Orientierungslosigkeit scaffoldet KAIA mit konkreten Beispielbereichen, nicht mit Innenschau-Einladungen.
fix: Innenraum-Muster in KAIA-Prompt verboten
a5d8bb745minKAIA bleibt bei negativem Affekt-Einstieg im Lern-Frame statt in den emotionalen Frame zu folgen. Wissenschaftliche Grundlage: D'Mello & Graesser (2012), Boekaerts (1993/2011), Pekrun (2006) — Thesis-Kapitel 3.3.10.4 mit 6 neuen APA-7-Quellen ergänzt.
fix: Affekt-Pivot-Regel im Prompt + Thesis 3.3.10.4
eb1525b20minIm Admin-Chat-Test gibt es jetzt den Button "Von vorne" (mit Trash-Icon). Erster Klick: roter Bestätigungsbutton "Sicher löschen?", zweiter Klick: alle Chat-Sessions, Nachrichten und Memory-Chunks des admin_test-Users werden gelöscht. Die nächste Session startet wieder als Session 1 — inklusive frischer Eröffnungsfrage. Relevant für iterative Prompt-Tests ohne Datenbank-Zugriff.
feat: Admin Chat-Test — Von-vorne-Button löscht alle Chat-Daten
4bddc2b2h 30minVier Feedback-Buttons erscheinen während einer Session: "Muss ich weiterdenken", "Wow — das trifft was", "Ich hänge gerade", "Das verstehe ich noch nicht". Passive Buttons speichern das Signal nur (kein LLM-Eingriff). Aktive Buttons ("Ich hänge gerade", "Das verstehe ich noch nicht") triggern zusätzlich eine kurze Metakognitions-Frage von KAIA. Technisch: session_feedback-Tabelle (Alembic-Migration f6a2b4c8d1e9), POST /feedback + POST /meta-question Endpoints, stream_meta_question() Service-Funktion. Wissenschaftlich: EMA/ESM-Paradigma (Csikszentmihalyi & Larson, 1987), Affect Labeling (Lieberman et al., 2007), Selbstregulations-Monitoring (Zimmermann, 2000).
feat: STORY-002 In-Session Feedback Buttons (EMA)
7e1f83b30minCI-Coverage-Gate war bei 59% (Schwelle 70%). Neue Testdateien: test_chat.py (45 Tests: Chat-Repository alle Methoden, Schemas-Validatoren, SSE-Helpers, Thinking-Strip, stream_closing und stream_meta_question mit gemocktem Anthropic-Client inkl. Debug-Mode, LLM-Error, malformed JSON, leerer Content) + test_observability.py (6 Tests: configure_logging debug/json-mode, init_sentry mit/ohne DSN). Coverage: 59% → 70%.
test: Coverage-Gate auf 70% gebracht
06d6a8530minDokumentation erweitert: AUSWERTUNG.md mit neuen SQL-Abfragen für Cross-Session-Gedächtnis (session_summary, first_step-Persistenz-Analyse). Neues UX-Designdokument für STORY-FUNKEN (Microcopy-Bewertung, vollständige Zustandsbeschreibung, Accessibility-Anforderungen). kaia_lerndesign_referenz.html bereinigt. .gitignore schließt *.local.md aus.
docs: Auswertungs-SQL erweitert, UX-Spec Funken, .gitignore *.local.md
138cde830minErste Wochenbilanz des KAIA-Teams — KW24 zusammengefasst: Kernprinzip gerettet, Chat Core deployed, STORY-001 Closure + STORY-002 EMA-Buttons, Coverage-Gate 70%, Funken-Feature-Spec, Data Scientist ongeboardet. Enthält Agent-Konflikte, Entscheidungen, Retrospektive und Thesis-Timeline.
docs: Wochenbilanz KW24 (06.06–12.06.2026)
179852c3hChat Core Backend: FastAPI SSE-Endpoint `/chat/stream`, Claude-Integration mit `claude-sonnet-4-5`, thinking-Strip (interne `<thinking>`-Blöcke nie an den Client), Conversation-History-Builder, PromptContext-Befüllung. KAIA erzeugt echten Gesprächsoutput.
feat: Chat Core Backend — SSE-Streaming, Claude-Integration, thinking-strip
d8d5c3c2hChat Core Frontend: SSE-Client mit EventSource, drei Charakter-Auswahl (warm/challenging/wild), Streaming-UI mit Tipp-Indikator, Nachrichtenhistorie. Erste vollständige Konversation zwischen User und KAIA möglich.
feat: Chat Core Frontend — SSE-Client, 3-Charakter-Auswahl, Streaming-UI
716af4f30minKAIA eröffnet das Gespräch: `stream_opening()` Service-Funktion erzeugt die erste Nachricht der Session, bevor der User tippt. `character`-Feld in Session-Model ergänzt.
feat: KAIA eröffnet das Gespräch + character-Feld im Model ergänzt
5c22f251hAdmin Chat-Test: JWT-gesicherter Testbereich für echten Produktions-Chat. POST `/admin/test-token` generiert kurzlebige Admin-Tokens. Split-Layout: links Chat, rechts Debug-Panel.
feat: Admin Chat-Test — JWT-gesicherter Testbereich für echten Produktions-Chat
db7cae830minAdmin Chat-Test Split-Layout: Phase-Indicator zeigt aktuelle Session-Phase (Opening/Active/Closing), Fragetyp-Extraktion aus KAIA-Responses (Typen 1–6 sichtbar).
feat: chat-test split layout fix + phase indicator + Fragetyp extraction
9b0c6f01hAdmin Analysis Panel: Live-Thinking-Block-Inspector zeigt KAIAs interne `<thinking>`-Prozesse in einem aufklappbaren Debug-Panel neben dem Chat. Nur im Admin sichtbar.
feat: admin analysis panel — live thinking-block inspector
e0bf40b20minThinking-Raw-Persistenz: jede KAIA-Antwort speichert `thinking_raw` in der DB. Ermöglicht retrospektive Analyse von KAIAs internen Entscheidungsprozessen für den LLM-Evaluationsbericht.
feat: persist thinking_raw on every KAIA assistant message
998fd8615minWeb wartet auf API-Healthcheck: Next.js-Startskript prüft `/api/v1/health` bevor die App hochkommt — kein 502 mehr bei zeitversetztem Container-Start. `test-token`-Route mit try-catch abgesichert.
feat: Web wartet auf API-Healthcheck + test-token Route mit try-catch
fa1c5cf10minMAX_TOKENS erhöht und Schutz gegen unclosed thinking-Blöcke eingebaut — verhindert abgeschnittene Antworten bei langen KAIA-Turns.
fix: increase MAX_TOKENS and guard against unclosed thinking blocks
4a6e00d10minthinkCounter-State durch Ref ersetzt: vermeidet Side-Effects im SSE-Updater, der bei State-Änderungen neu evaluiert würde.
fix: replace thinkCounter state with ref to avoid side effects in updater
3c32df95min`str()` für MessageRole in Conversation-History-Builder: Enum-Vergleich schlug fehl bei SQLAlchemy-Deserialisierung.
fix: use str() for MessageRole in conversation history builder
4d967a05minRoadmap- und Survey-ORM-Models beim App-Start registriert: verhindert `NoInspectionAvailable`-Fehler bei Alembic-Autogenerate.
fix: register roadmap and survey ORM models at startup
dac66ef5min`detect_crisis` im Chat-Service korrekt importiert: falsche Import-Pfad führte zu `ImportError` beim ersten Chat-Request.
fix: Crisis-Import — detect_crisis korrekt importiert in chat service
d999d045minMigration c8f2e4b6d1a3: doppelter Index auf `prompt_templates.name` entfernt — verhinderte Alembic-Migrations-Fehler nach vorherigem partiellem Rollout.
fix: Migration c8f2e4b6d1a3 — remove duplicate index on prompt_templates.name
362f6eb5minAdmin Chat-Test: TypeScript-Fehler bei `authHeader`-Konstruktion behoben — `undefined`-Check fehlte im Header-Builder.
fix: Admin Chat-Test — authHeader TypeScript-Fehler behoben
37f6f595minAdmin `test-token`-Route: doppeltes `/api`-Präfix in `INTERNAL_API_URL`-Konstruktion entfernt — führte zu 404 bei Token-Anfragen.
fix: Admin test-token — INTERNAL_API_URL Pfad-Duplikat behoben
33ace8310minAdmin-Layout `h-screen` gesetzt: Chat-Test Split-Panel füllt jetzt den gesamten Viewport — kein Scrollen mehr im Outer-Container.
fix: admin layout h-screen so chat-test split panel fills viewport
32110b930min`docs/AUSWERTUNG.md`: vollständige SQL-Referenz für die Studienauswertung — alle relevanten Queries für Session-Analyse, Feedback-Auswertung und LLM-Usage-Tracking.
docs: Auswertung.md — vollständige SQL-Referenz für Studienauswertung
321a4cb1h 30minSession-Abschluss mit Closure-Phase: KAIA generiert eine Abschluss-Bubble wenn der User "Session beenden" klickt. 4-State-Machine (idle → loading → awaiting_confirm → ended), `stream_closing()` Service-Funktion, POST `/sessions/{id}/end` Endpoint. Max. 2 Exchanges, kein Paternalismus. Gagné's 9. Unterrichtsereignis (Transfer-Vorbereitung), Peak-End-Rule (Kahneman).
feat: STORY-001 Session-Abschluss mit Closure-Phase
33e07a245minSession-Summary als BackgroundTask: Nach jeder Session analysiert KAIA mit `claude-haiku-4-5` das Transkript und extrahiert `first_step`, `observation`, `insight_for_next_session`, `mood`, `topics`, `strengths_observed`, `friction_points` als JSON in `session_summary`. KAIA erinnert sich in Session 2+ an Session 1.
feat: extract_session_summary als BackgroundTask + insight_for_next_session
cdc276b10minmypy strict-mode Fehler in `main.py`, `prompts/repository` und `chat/service` behoben.
fix: mypy-Fehler in main.py, prompts/repository, chat/service
a69adf12hVoranmeldungs-Feature komplett: max. 50 Plätze mit Live-Counter, witziges Formular mit Inspiration-Button, Bestätigungsmail via Brevo, Slack-Notification, Danke-Seite mit Countdown, Abmelde-Link. Admin `/admin/vorregistrierung` mit Entfernen-Button.
feat: Voranmeldung komplett (Backend + Frontend + Admin + E-Mails)
653c14e30minKontaktformular `/kontakt`: "Liegt dir was auf der Seele?" — Name optional, Kontaktart wählbar (E-Mail/Telefon/Lieber nicht), Slack-Notification bei Absenden. Telefonnummer +49 176 61159403 eingetragen.
feat: Kontaktformular + Telefonnummer
466403620minPre-Commit Hook: ruff + ESLint laufen jetzt lokal vor jedem Commit. Blockiert bei Fehlern, zeigt Fix-Anleitung. Einmalige Installation: `bash scripts/setup-hooks.sh`.
feat: Pre-Commit Hook für ruff + ESLint
805993b10minPlausible Analytics eingebunden: datenschutzkonform, kein Cookie-Banner, DSGVO out-of-the-box, EU-Server. Eigene Aufrufe per `localStorage.setItem('plausible_ignore', 'true')` ausschließen.
feat: Plausible Analytics
32bd2df15minImpressum nach § 5 TMG: Dagmar Rostek, Klosterstr. 12, 52511 Geilenkirchen. Verantwortlich nach § 18 Abs. 2 MStV, KI-Hinweis mit Krisentelefon.
feat: Impressum — § 5 TMG
6933f5c20minLanding Page komplett neu: klare Botschaft, drei Informationskarten, primärer CTA "Jetzt vorregistrieren", kein kaputtes "Konto erstellen" mehr. Anmelden-Link unauffällig erhalten.
feat: Landing Page neu
76714cb20minMigration `c8f2e4b6d1a3`: `llm_usage` (Token/Kosten-Tracking pro Session), `audit_events` (DSGVO append-only Audit-Log), `prompt_templates` (DB-managed Jinja2-Prompts). DB-Schema damit vollständig — alle 11 Tabellen live.
feat: Migration — llm_usage, audit_events, prompt_templates
e0265f315minImpressum + Datenschutz auf jeder Seite: `LegalFooter`-Komponente in public und auth Layout, Impressum/Datenschutz-Links am Ende der Admin-Sidebar.
fix: Impressum+Datenschutz auf jeder Seite
b644da510minSession-Ablauf auf Mitmachen-Seite bewusst offen gelassen: Mechanismus nicht beschreiben, Neugier wecken. Wissenschaftlich sinnvoll — Teilnehmende die den Ablauf kennen, verhalten sich anders.
feat: Session-Beschreibung offen lassen
5e7008610min"Was ist KAIA?": Sechs Fragetypen-Liste entfernt, Mechanismus nicht erklärt. "Was in einer Session passiert, lässt sich schwer vorausschreiben — das ist auch der Sinn der Sache."
feat: KAIA-Beschreibung neugierig statt technisch
4c6135b5min"Voranmeldungen" in Admin-Sidebar ergänzt.
feat: Voranmeldungen in Admin-Sidebar
6c895d410min`docs/ANALYTICS.md`: Plausible-Tracking deaktivieren, Setup neuer Rechner, Pre-Commit Notfall-Bypass dokumentiert.
docs: Analytics + Pre-Commit Anleitung
feaf70720minVoranmeldung: abgemeldete E-Mails können sich wieder anmelden (`create_or_reactivate`). Nur aktive werden als doppelt blockiert. Placeholder ohne Therapeutin-Satz.
fix: Voranmeldung — Re-Registrierung, Lint, Placeholder
04f3e9120minAdmin-Voranmeldung als Server Component: nutzt `INTERNAL_API_URL` + `ADMIN_PASSWORD` direkt statt Cookie-HMAC. Proxy-Route für Entfernen-Button.
fix: Admin-Voranmeldung als Server Component
52fb87d10minDoppeltes `/api/api/v1/...` in Voranmeldungs-Requests: relative URLs statt `NEXT_PUBLIC_API_URL`.
fix: relative URLs in Voranmeldung
e0265f310minmypy: `get_db` direkt aus `app.db.session` importiert. SMTP- und `ADMIN_EMAIL`-Env-Vars in `docker-compose.prod.yml` ergänzt.
fix: mypy get_db + docker-compose SMTP
2bf799e10minRuff I001 + ESLint: unused vars (`MessageSquare`, `bqContent`, `CheckCircle2`, `Clock`, `AlertTriangle`) entfernt. `setState` in `abgemeldet/page.tsx` via `setTimeout(fn, 0)` deferred.
fix: ruff + ESLint cleanup
6714dd42minruff format `email.py`.
fix: ruff format email.py
f1109c615min404-Seite: KAIA stellt natürlich eine Gegenfrage zurück. Buttons zu Startseite und Mitmachen-Seite.
feat: 404-Seite mit KAIA-Charakter
f1109c630minÖffentliches Entwicklungs-Tagebuch unter `/tagebuch`: Liest `docs/DAILY_LOG.md` und rendert alle Einträge. In der öffentlichen Navigation verlinkt — der Entwicklungsprozess ist Teil des Projekts.
feat: öffentliches Tagebuch unter /tagebuch
4a3ca6520minGSE-Fragebogen und Auswertungskonzept vollständig dokumentiert: alle 10 deutschen Items, Auswertungskonzept (Summenscore 10–40, Wilcoxon-Test, Effektgröße r), Normwerte (Hinz et al. 2006, M≈29), Gütekriterien (α .80–.90), Lizenznachweis (CC BY-NC-ND 3.0), 4 APA-7-Vollzitate. Projektbeschreibung Ethikkommission aktualisiert.
docs: GSE-Fragebogen + Auswertungskonzept für Ethikvotum
f1109c630minRegistrierung und Login gesperrt bis 16. Juli 2026: Beide Seiten zeigen rückwärtszählenden Countdown (Tage/Stunden/Minuten/Sekunden). Öffnet automatisch am 16.07.2026 00:00.
feat: Registrierung + Login gesperrt mit Countdown bis 16. Juli
f1109c620minMitmachen-Seite: Countdown-Banner oben + CTA-Buttons deaktiviert bis 16. Juli.
feat: Mitmachen-Seite mit Countdown + deaktivierten CTAs
369583f30minMitmachen-Seite: "Was ist KAIA?" und Session-Ablauf auf v2-Prompt-Design aktualisiert. Kernprinzip direkt kommuniziert, 6 Fragetypen sichtbar, 4-Schritte-Onboarding mit Spiegel-Schritt, "Was KAIA niemals tut"-Box, Rupture-Repair sichtbar gemacht.
feat: Mitmachen-Seite aktualisiert — KAIA v2-Beschreibung
f1109c610minKAIA-Link in Auth-Layout: Login- und Registrierungsseiten haben jetzt Header mit KAIA-Link und Theme-Toggle.
feat: KAIA-Header in Auth-Layout
f1109c65minÖffentliche Navigation um "Tagebuch" erweitert.
feat: Tagebuch in öffentliche Navigation
35769245minruff E501: Test-Assertion zu lang — auf mehrere Zeilen aufgeteilt.
fix: ruff E501 — test assertion auf mehrere Zeilen aufgeteilt
331acd65minBuild-Fehler: deutsche Anführungszeichen in JS-String-Literalen verursachten Parsing-Fehler (exit code 1 beim Docker-Build).
fix: Anführungszeichen in Fragetypen-Array — single quotes statt double
a5123054h`KAIA_PROMPT_V2_WARM`: Alle 29 Erkenntnisse aus 6 Prompt-Engineering-Quellen integriert (Anthropic Tutorial, Real World Prompting, Prompt Evaluations, Red Teaming, Guardrails, Evaluating AI Agents). Neue Elemente: XML-Tags für Daten/Instruktions-Trennung, `<thinking>/<final_answer>`-Split mit 8 internen Klassifikationsschritten (Lazarus, Fragetyp, Crisis, Grenz, Grounded, Session-Phase, Rupture, Erwünschtheit), Few-Shot Kontrast-Paare für Fragetypen 3/4/5, Jailbreak-Schutz, Bias-Neutralitäts-Constraint, Halluzinations-Guard, Kontext-Referenz-Verbot, diskrete Eval-Targets, Convergence-Constraint (4–6 Turns), Soziale-Erwünschtheit-Intervention, Rupture-Repair-Protokoll. v1 bleibt als inaktive Regression-Baseline. 19 Tests grün.
feat: KAIA_PROMPT_V2_WARM mit 29 Prompt-Engineering-Erkenntnissen
a51230515minData Scientist als 14. Teammitglied ongeboardet: Rolle, Trigger-Bedingungen (LLM-Evaluationsbericht, Studienauswertung, Experiment-Framework), G13 Statistik-Gate (Eval-Methodik, Convergence-Score, Stichprobenqualität).
feat: Data Scientist onboarded, G13 Statistik-Gate
dd7050830minSandbox-Kommunikation-Warm-Prompt auf v2 gehoben (identisch mit `KAIA_PROMPT_V2_WARM`, ohne Jinja2). Sandbox-Backend (`/admin/api/sandbox-chat`) strippt `<thinking>`-Blöcke vor der Ausgabe an den Nutzer — nur `<final_answer>`-Inhalt sichtbar. Rupture-Repair und Soziale-Erwünschtheit testbar in der Sandbox.
feat: Sandbox v2-Prompt + thinking-stripping im Backend
8a78b2c20minNeue Prompt-Regel: Sobald Lernende eine eigene Formulierung, einen Plan oder eine Erkenntnis produzieren, fragt KAIA nach Wirkung — nicht nach Verbesserung. KAIA ersetzt niemals die Formulierung des Lernenden durch eine eigene.
fix: neue Prompt-Regel — eigene Formulierung des Lernenden nie ersetzen
b3f1fc245minVier Fixes aus Live-Gesprächsanalyse: (1) Schritt 4 form-sensitiv — unterscheidet Verhaltensziele (erster Schritt) von inneren Zielen (erstes Zeichen). (2) Techniken-/Methoden-Vorschläge explizit verboten — auch als "Was wäre wenn..."-Frage verkleidet. (3) Rupture-Repair geht nicht zurück an den Anfang — pivotiert mit "Was wäre jetzt hilfreicher?". (4) React setState-in-useEffect-Lint-Fehler behoben — lazy useState-Initializer statt useEffect für localStorage-Restore.
fix: Prompt-Korrekturen aus Live-Test + React setState-Lint-Fix
dd7050815minSandbox-Motiv-Probing überarbeitet: keine Checkliste mehr — KAIA folgt dem echten Gesprächsfaden. Schritt 3 (Der Spiegel) mit explizitem Gewicht — KAIA geht nicht zu Schritt 4 bevor der Lernende den Spiegel bestätigt hat. Spiegel spiegelt das Motiv, nicht das Thema. Rupture-Repair um Kontraindikation erweitert: nach Rupture nie zurück an den Anfang.
fix: Schritt 2 Motiv-Probing + Spiegel-Gewicht + Rupture-Repair
cd2155c1h 30minAdmin User-Approval UI (/admin/users): Übersicht aller pending/aktiven/gesperrten Teilnehmenden. Freigabe-Button setzt Status ACTIVE + trägt `approved_at`/`approved_by` ein + Slack-Notification. Ablehnen-Button mit optionalem Grund-Eingabefeld. Aktive Teilnehmende mit Login-Datum, Reaktivierung gesperrter Accounts. Server Actions — Admin-Token verlässt den Server nie.
feat: Admin User-Approval UI — Teilnehmende freigeben/ablehnen
b89d5941h 30minCrisis-Detection-Pre-Filter (`app/core/crisis.py`): 20+ deutsche Regex-Muster für Suizidgedanken und Selbstverletzung. Bei Treffer: keine LLM-Verarbeitung, statische Antwort mit Telefonseelsorge 0800 111 0 111 und Notruf 112. KI-Disclosure-Seite (`/ki-disclosure`) mit Bestätigungs-Button der POST `/auth/disclosure-ack` auslöst. Datenschutzerklärung (`/datenschutz`) DSGVO-konform mit allen Art. 15–21 Rechten, Schrems-II-Hinweis, 6-Monate-Löschfrist.
feat: crisis detection + KI-disclosure + Datenschutzerklärung
7404aa345minStudienprotokoll (v1.0) + Teilnahmevereinbarung/Einwilligungserklärung erstellt: Forschungsfrage, drei vorregistrierungsfähige Hypothesen (H1–H3), Prä-Post-Design mit GSE-Skala, Krisenprotokoll, Risikobewertung. Einwilligungserklärung druckfertig mit DSGVO-Rechten und KI-Disclosure-Hinweis.
docs: Studienprotokoll + Teilnahmevereinbarung für Ethikvotum SRH
bccc53020minR-basierte Power-Analyse (`docs/power_analyse.R`): Wilcoxon-Vorzeichenrangtest, d=0.5, α=0.05, Power=80%. Ergebnis: N=32 Minimum. Power-Kurve als PNG. Reproduzierbar und thesis-zitierfähig.
docs: R-basierte Power-Analyse
aa12bf910minZiel-N auf 32 angehoben: Studienprotokoll mit exakten Power-Werten aktualisiert (N=32 → 80%, N=20 → 56.5%). Rekrutierungsziel ~46 mit 30% Dropout-Puffer.
docs: Ziel-N auf 32 angehoben (80% Power)
635ca911hAdmin-Roadmap komplett überarbeitet: Filter-Bar (Status/Tags/Agents kombinierbar), Feature-Karten mit beteiligten Agents (12 Typen farbkodiert), Aufwand-Schätzung und Git-Hash bei fertigen Features. Wissenschaftliche Pflichten als einklappbares Accordion.
feat: redesign admin roadmap — filters, agents, time, sha
7f5b0a420minRoadmap-Filter von Inline-Pills auf Dropdown-Boxen umgestellt (Status/Tags/Agents mit Checkbox-Listen). Spaltenreihenfolge: Backlog → Juni → Juli → August → Fertig.
feat: roadmap filter as dropdowns + column order
9390ec920minpasslib (unmaintained seit 2023) mit bcrypt>=4.0 inkompatibel: `__about__`-Attribut fehlt, 72-Byte-Limit strict. Ersetzt durch direktes bcrypt + SHA-256-Pre-Hash. Fünf Crisis-Detection-Patterns korrigiert (Wortstellungsfehler: 'nicht mehr leben' ohne Trailing-Verb, 'rItze' statt 'ritzen', Verb-vor-Objekt-Fälle).
fix: passlib → bcrypt direkt + crisis-Patterns korrigiert
a01be4b5min`INTERNAL_API_URL` in docker-compose war `http://api:8000` statt `http://api:8000/api` — Admin User-Approval API-Calls wären fehlgeschlagen.
fix: INTERNAL_API_URL mit /api-Prefix in docker-compose
336ab0a15minruff E501 (Zeile zu lang in crisis.py), A003 global ignoriert (SQLAlchemy `id`-Attribute — Standard), I001 auto-fixed. `FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true` im CI-Workflow.
fix: ruff E501/A003/I001 + Node.js 24 in CI
af559c85minruff format auf crisis.py, test_crisis.py, test_service.py angewendet.
style: ruff format crisis.py + test files
1c0aaa11h 30minProduktroadmap im Admin-Bereich (/admin/roadmap): Feature-Timeline Juni–August 2026 mit 34 Features in 4 Spalten (Fertig / Juni / Juli / August). Jede Karte zeigt Status-Badge, Beschreibung, Thesis-Kapitel-Mapping und farbkodierte Tags (DSGVO, Ethik, Psychometrie, LLM-Eval). Wissenschaftliche-Pflichten-Tracker listet alle 13 Pflichtpunkte — Blocker für das Ethikvotum rot hervorgehoben. Studienziel-Übersicht (20 Teilnehmende, 6-Monate-Datenlöschung, Token-Budget). Seite ist passwortgeschützt im Admin-Bereich.
feat: add admin roadmap page with thesis chapter mapping
0f271d61hAdmin-Login war wegen falscher Runtime-Annahme dauerhaft defekt: `process.env.ADMIN_PASSWORD` ist im Next.js Edge Runtime (Middleware) nicht erreichbar — das HMAC wurde mit leerem Key berechnet, der Cookie nie akzeptiert. Fix: Admin-Authentifizierung aus der Middleware in ein Server Component Layout (Node.js Runtime, `admin/(protected)/layout.tsx`) verschoben, wo `process.env` korrekt funktioniert. Gleichzeitig: 3 neue Backend-Test-Dateien (security.py, service.py, slack.py) bringen CI-Coverage von 60 % auf über 70 %.
fix: move admin auth from Edge Runtime middleware to Server Component layout
30e637330minKritischer Deployment-Bug: `apps/web/.env.local` enthielt `ADMIN_PASSWORD=testpasswort123` und wurde durch `COPY . .` im Dockerfile in das Docker-Image gebacken. Next.js lud diese Datei beim Server-Start und überschrieb den korrekten Runtime-Wert aus docker-compose — Admin-Login war auf dem Server dauerhaft mit dem falschen Passwort gesperrt. Fix: `.dockerignore` erstellt (schließt alle `.env.local`-Dateien aus dem Build aus), `ADMIN_PASSWORD` aus `.env.local` entfernt.
fix: exclude .env.local from Docker image, remove hardcoded ADMIN_PASSWORD
645a0e815minDeploy-Skript `scripts/deploy.sh` erstellt: Docker Compose mit `-f infra/docker-compose.prod.yml` suchte die `.env` im Verzeichnis der Compose-Datei (`infra/`) statt im Repo-Root — alle Variablen (ADMIN_PASSWORD, JWT_SECRET, DB-Credentials, API-Keys) wurden als leer interpretiert. Das Script übergibt `--env-file` explizit. Verwendung: `./scripts/deploy.sh [web|api|all]`.
fix: add deploy script that correctly passes --env-file to docker compose
9eabd2b5minUnbenutzter `RefreshToken`-Import in `test_service.py` entfernt (ruff F401 nach Refaktor).
fix: remove unused RefreshToken import (ruff F401)
f82d2632hAuth Phase 4 abgeschlossen: Login-Seite (`/login`), Registrierung (`/registrierung`) mit DSGVO-Zweifach-Consent (Pflichtfeld + freiwillige Analytics), `AuthContext` mit `loading/authenticated/unauthenticated`-States, `AuthGuard` in `(app)/layout.tsx`, `kaia_session`-Cookie als Middleware-lesbarer Session-Indikator (Access-Token bleibt In-Memory, nie in Storage). Slack-Benachrichtigung bei Neuregistrierung. Middleware schützt `/chat`, `/onboarding`, `/gse`.
feat: Auth Phase 4 — Frontend Login, Registrierung, geschützte Routen
464820f1hSentry vollständig ins Next.js-Frontend integriert: `instrumentation.ts` mit `onRequestError`-Hook fängt alle Server-Component-Fehler, `instrumentation-client.ts` (Next.js 15.3-Feature) initialisiert Sentry clientseitig vor React-Hydration, globaler `global-error.tsx`-Boundary sendet Root-Layout-Crashs. DSN via Build-Arg in Bundle baked + Runtime-Env für Server. War nicht konfiguriert, obwohl das Package installiert war.
feat: Sentry Frontend-Integration (instrumentation.ts + client)
7bc19293h 30minAuth-Flow implementiert: Registrierung mit DSGVO-Pflichtconsent (zwingend True, kein Opt-out), Login/Logout, JWT Access-Token (15 min, Bearer) + Refresh-Token (30 d, httpOnly-Cookie). Token-Rotation mit Family-basierter Reuse-Detection — gestohlener Token sperrt die gesamte Familie (RFC 6749). Brute-Force-Schutz (5 Versuche → 15 min Kontosperre). Konten starten als `pending`, Admin-Freigabe erforderlich. KI-Disclosure-Gate als eigener Endpunkt. Alembic async konfiguriert, erstes DB-Schema live.
feat: Auth-Flow Phase 1+2 — Alembic, JWT, Register/Login/Refresh/Logout
ad29b9e1hTeam-Charta auf Exposé-Stand gebracht: drei wissenschaftliche Spannungsfelder, vier Thesis-Deliverables, WCAG 2.2 AA (statt 2.1), 80% Coverage-Gate. Diskussions-Kultur-Sektion (ehrliche Kritik, kein Pseudo-Konsens) und Code-Verhalten-Regeln (Einfachheit, chirurgische Änderungen) hinzugefügt. Drei neue Slash-Commands: `/morning`, `/evening`, `/weekly` mit Thesis-Fortschritt-Tracking.
chore: update team charter + add morning/evening/weekly commands
8085cb73hAdmin-Bereich gebaut (Production Readiness, Changelog, Architektur, Dashboard) — passwortgeschützt via Edge-Middleware. Code auf Produktionsstandard gebracht: PyJWT statt python-jose (CVE), Non-Root-Docker, 70%-Coverage-Gate in CI, React Query + Zod, typisierter API-Client, BugReportWidget sauber refaktoriert.
feat: admin area + code review fixes (towards 10/10)
83bdee930minKosten-Übersichtsseite im Admin-Bereich — Infrastruktur, Claude Code Entwicklungskosten und zukünftige LLM-Inferenzkosten auf einen Blick. Tages-Zeittracker mit /log Command.
feat: cost overview page, daily log tracker, /log command
4988db320minEntwicklungs-Tagebuch im Admin-Bereich — tägliche Einträge als witzige Stories aus Agenten-Sicht, erstellbar mit /log Command.
feat: daily log page + story-style /log command
f54371c45minNeue öffentliche Seite /wissenschaft — alle 24 wissenschaftlichen Quellen der Masterthesis mit Erklärung warum jede Quelle für KAIA relevant ist. Aus dem Exposé + Empfehlungen des Psychologen.
feat: public wissenschaft page with all theoretical foundations
b32cd9945minEntwicklungs-Tagebuch jetzt mit Monats-Navigation und Accordion — der neueste Eintrag ist sofort sichtbar, ältere per Klick aufklappbar.
feat: daily log UX — accordion + month index navigation
da909b545minAlle öffentlichen Seiten (Release Notes, Architektur, Wissenschaft) haben jetzt eine gemeinsame Navigation — von jeder Seite aus erreichbar.
feat: shared public layout with nav for all public pages
56f48a010minAPI-Startfehler behoben (fehlende email-validator Dependency); Caddy DNS-Konfiguration korrigiert für Let's Encrypt.
fix: add email-validator dependency and remove Caddy DNS override
32a276620minTagebuch, Release Notes und Architektur sind jetzt auch auf dem Server sichtbar — docs/-Ordner wird als Volume in den Web-Container gemountet.
fix: mount docs/ volume in prod + unified readDoc helper
b1ff04c10minTagebuch, Release Notes und Architektur zeigen jetzt tatsächlich Inhalte auf dem Server.
fix: force-dynamic on all doc-reading pages
747e7d530minSpezialisiertes 12-köpfiges Sub-Agent-Team integriert (Architect, Security, Compliance, Psychologist, AI Engineer, AI Ethics, UX, QA, MLOps, Product Owner, Discovery Researcher, Coordinator) mit vollständigem KAIA-Projekt-Kontext.
chore: add 12-agent development team with KAIA onboarding
f79e75f25minLokale Entwicklungsumgebung mit Docker eingerichtet — Backend und Datenbank starten per docker compose, Frontend läuft nativ für schnellen Hot-Reload.
feat: local dev environment with Docker (DB + API)
4a161405minDocker-Build-Fehler behoben – Next.js produziert jetzt das für den Container benötigte standalone-Verzeichnis.
fix: enable standalone output for Next.js Docker build
f581dd210minSentry-Umgebungsvariablen von SENTRY_DSN_API/WEB zu SENTRY_KAIA_API/WEB umbenannt.
refactor: rename Sentry env vars to SENTRY_KAIA_API/WEB
426aa273hKAIA v2 startet — komplett neu aufgebaut als FastAPI + Next.js Monorepo. Ab diesem Commit wird jede Änderung hier dokumentiert. Bereits enthalten: Release-Notes-Seite, Architektur-Seite, Bug-Report-Widget (→ Slack), Dark/Light-Mode, CI/CD mit Study-Lock-Guard, Docker Compose für Lokal und Produktion, Projekt-Backlog mit 73 priorisierten Issues.
chore: initial monorepo skeleton (KAIA v2)
Stand: 8. August 2026