Release Notes
Jede Änderung am KAIA-Prototyp — vom ersten Commit bis heute. Mit Aufwandszeit, Commit-SHA und wissenschaftlicher Einordnung.
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.
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: 13. Juli 2026