◑ MOCKUP — Design-Landkarte (benannte Komponenten-Bibliothek). Kanonische SSOT für ALLE Chat-Screens · Realdaten illustrativ · Hell/Dunkel umschaltbar.
🗺 TGV Design-Landkarte
Benanntes Komponenten-Vokabular · einmal ändern → überall · gegen Drift
Jede wiederkehrende UX-Rolle hat einen Namen, eine Funktion, EINE kanonische Darstellung (+ States), eine Regel (Bibel) und wo verwendet. Instanz-agnostisch: CORE-KAI und gabriel-CHAT sind Geschwister derselben Engine → EIN geteilter Renderer + EIN Vokabular (Shell/Composer/Bubbles/thread-context/generische Blöcke). Instanz-spezifisch nur die render_hint-Typen (CORE=Finanz · gabriel=Memoir) — gleiche Hülle/Regeln. 43 Komponenten.Typografie-Disziplin: nur die DESIGN#01-Skala (6 Größen), Chat-Text TGV-weit EINE Größe — s. type-scale. Schutzlevel-Modell: Ordner-Ampel = Default/Tenor des Verzeichnisses (Dateien erben) · Dokument-🔒-Schloss = konkrete Stufe pro Datei (kann strenger sein) — gleiche Stufen/Farben (🟢 intern · 🟡 vertraulich · 🔴 streng).
🧩 Selbst-vervollständigende Landkarte (Pflicht): stößt eine Bau-Lane (oder ein JC-Screenshot eines realen Falls) auf eine UX-Rolle, die hier nicht gelistet ist → flaggen + Komponente ergänzen, nie still ad-hoc bauen. Neue Fälle laufen über AGENT-UX#01 in diese Liste (Name + Darstellung + Regel) → bleibt die einzige Wahrheit gegen Drift.
🏷 Stand-Kennzeichnung + FREIGABE-WORKFLOW (JC 2026-07-03): Komponenten werden HIER am Katalog-Eintrag freigegeben, nicht über Sektions-Mockups (unmöglich, alle Use-Cases in „Heute“/„Klärung“ zu zeigen; im Chat-Modus kann jede Komponente gebraucht werden). Weg: ① Eintrag zeigt kanonische Form + States (+ Verhalten im Vertikalschnitt ODER Kitchen-Sink) → ② JC gibt den EINTRAG frei → Chip JC ✓ freigegeben → ③ Sektionen/Kai dürfen NUR Freigegebenes konsumieren (Antwort-Form-Policy wählt aus dem freigegebenen Vokabular; Konformitäts-Harness + AGENT-UXAUDIT#01 prüfen mechanisch). Neuer Bedarf im Chat → Landkarte ergänzen + freigeben, nie ad-hoc (Selbst-Vervollständigungs-Pflicht oben). Karten mit grünem Stand 03.07. ✓-Chip sind gegen die aktuelle Vertikalschnitt-Referenz geprüft; Karten ohne Chip sind noch nicht gegen die neue Referenz gesweept (können älteren Stand zeigen — im Zweifel gilt der Vertikalschnitt). Änderungs-Log: 03.07. statusline generisch (R-90, 11 Dimensionen) · source-link NEU (R-91) · klaerung-card Fall-Typen-Katalog (8) · doc-steckbrief NEU (Slide-over/Sheet, R-06) · approval-card Aktions-Raster (R-94) · scope-frame auf „Wir schauen auf“-Kanon · Thread-Tint-Kalibrierung (R-82). 02.07. kai-ava/A=B (R-85–R-87) · eckige Unterkanten (R-90). 03.07.(b) scope-selector ABGELÖST → freigegebenes Scope-Popover (beide Achsen) · Bestätigungs-Buttons: Ruhe-Label ohne „✓“ (✓ = Klick-Feedback R-81).
EINE strenge Skala (6 Größen · 3 Gewichte 400/500/600) über ALLE Komponenten.
Regel
⭐ Chat-Haupttext (KAI+User) = body, TGV-weit EINE Größe; Sekundär=small; Meta=micro. Größen NUR aus DESIGN#01-Token, nie pro-Komponente. „Superfett" raus (max. fw-bold 600).
Wo
alle Komponenten · CORE + gabriel
kai-avaKaï-Avatar (kanonisch, EIN Avatar überall)Stand 03.07. ✓
KKAkzent-Quadrat · Tinte=--surface (theme-sicher) · --sm für Scope-Zeile
Funktion
kennzeichnet Kaï als Sprecher — identisch in Chat-Bubble, Scope-Frame, Quittungen.
States
idle · denkt (Punkte)
Regel
R-85: GENAU EIN Kaï-Avatar überall (nie 2. Variante). Sprecher-Code: Kaï links.
Abstand
R-87: Luft LINKS (Rand→Icon) = RECHTS (Icon→Bubble) — beide --msg-gutter (18px), Kaï + User gespiegelt.
SSOT
foundation.css .kai-ava
Wo
überall wo Kaï auftritt
statusline„Ab hier"-Zustandszeile — GENERISCH über den Dimensions-Katalog (R-90)geteiltStand 03.07. ✓
EIN Baustein, parametrisiert über die Dimension — adaptive Formulierung, gewählte Option einheitlich Icon + fett/Akzent, untere Ecken eckig (Dauer-Marker: gilt ab hier abwärts). Alle 11 Dimensionen (JC: jeden Satz einzeln abnehmbar):
K
Wir schauen auf: 🏢 C4 SARL · 📅 Dieses Jahrändern ▾ · ① Scope
K
Wir arbeiten ab hier als 🧑💼 mandant_admin.ändern ▾ · ② Rolle
K
Wir wechseln zu 🏷️ Anna (Typ-B).ändern ▾ · ③ Mandant
K
Ab hier: 🧭 Concevoir (Etappe 3).ändern ▾ · ④ Etappe
K
Ab hier 🔒 streng vertraulich.ändern ▾ · ⑤ Vertraulichkeit
K
Ab hier auf 🌐 Français.ändern ▾ · ⑥ Sprache
K
Ab hier arbeitet ✨ der Vertrags-Extraktor für uns.ändern ▾ · ⑦ Skill
K
Ab hier werde ich 🎭 strenger — der Stichtag ist nah.ändern ▾ · ⑧ Persona
K
Ab hier antworte ich aus 📚 dem Wissens-RAG — jede Aussage mit Beleg.ändern ▾ · ⑨ Grounding
K
Ab hier gilt: 🤝 Souverän — ich schlage nur vor.ändern ▾ · ⑩ Autonomie
K
Ab hier ⏳ Stichtag-Modus — UStVA in 3 Tagen.ändern ▾ · ⑪ Frist
(⑫ Multi-User „Ab hier ist User X eingeschaltet" folgt mit PLAT#09 per-Member-RLS.)
Dimensions-Katalog (engine.js STATE_DIMS): Scope „Wir schauen auf: {v}" · Rolle „Wir arbeiten ab hier als {v}." · Mandant „Wir wechseln zu {v}." · Etappe „Ab hier: {v}." · Vertraulichkeit „Ab hier {v}." · Sprache „Ab hier auf {v}." · Skill „Ab hier arbeitet {v} für uns." · Persona „Ab hier werde ich {v}." · Grounding „Ab hier antworte ich aus {v}." · Autonomie „Ab hier gilt: {v}." · Frist „Ab hier {v}." · (Multi-User folgt mit PLAT#09)
Funktion
markiert JEDE konversationsweite Zustandsänderung als Kaï-Zustand — im Schema/Intent ein Daten-Turn {state, value}, nie Markup.
R-91 / GOLDENE REGEL: jede Beleg-ID #xxxx IMMER mit Drive-Link, nie nackt — der Konformitäts-Check flaggt nackte IDs im DOM (fail-closed). Verwandt R-33 (Quell-Links Klär-Karten) · R-34 (out-bar).
✨ Meine Empfehlung: der Buchung vom 12.06. zuordnen — Valuta-Versatz 1 Tag ist bei Kartenzahlung normal.
Funktion
Detail-Ansicht jedes Dokuments: Vorschau (docpage aus erkannten Feldern, R-32) + Drive-Link (GOLDENE REGEL) · Zusammenfassung (KI-geparst) — das Dokument in 1–3 Sätzen Klartext, bei Verträgen der wichtigste Teil (Rate/Laufzeit/Frist/Kündigung als Prosa; Gold-Zone aus dem RKA-Doc-Detail) · „Was das System weiß“ (Felder mit Konfidenz-% und „ändern“ — konversationell: Eingabe unten gilt dem Fall, KEIN totes Formular) · 3-Achsen-Badges · Verknüpfungen (Buchung/Reise/Vertrag) · Kai-Empfehlung · typgerechte Entscheidung (Bestätigen rechts, R-13).
Darreichung
Desktop = rechtes Slide-over (Breite ziehbar, R-06) · Mobil = Sheet von unten (volle Breite, max 86 vh) — NIE schwebendes Popup (Handy-tauglich, JC 2026-07-03). Ersetzt das frühere Modal.
States
Original-Vorschau: live = Drive-/preview-iframe (Gold openDocPanel) · Mockup = ehrlich beschrifteter Skeleton-Platzhalter · ohne Original (Buchung ohne Beleg) = Feld-REKONSTRUKTION, klar so beschriftet — NIE Rekonstruktion als Original ausgeben · Essential/Pro (Dichte-Achse) · Feld unlesbar = „— nicht lesbar“
Regel
R-06 (Slide-over/Sheet, info + EINE Entscheidung) · R-33 (Quell-Links Beleg UND Buchung) · R-91 (Drive-Link) · R-94 ③ (Zugang von jeder Aktions-Karte über „Alle Details“).
Klärung (Beleg-Chips + Fall-Fokus) · Heute („Klären/Prüfen“) · künftig Verträge/Dokumente/Inbox
speaker-bubbleNachricht (KAI/Du)Stand 03.07. ✓
K
Ich habe 3 Belege abgelegt.
JC
Zeig mir Juni.
Funktion
Gesprächs-Turn.
States
KAI (hell, links) · Du (blau, rechts)
Regel
Sprecher-Code; Du rechts, KAI links — auch in Karten. R-89: Blase endet vor der Gegen-Icon-Spalte (Gegen-Ufer frei); Zone bleibt volle Breite (G1).
Wo
alle Chat-Screens
scope-selectorEntität/Zeitraum wählen — ABGELÖST: aufgegangen im freigegebenen Scope-PopoverStand 03.07. ✓
Freigegebene Form (Vertikalschnitt): „ändern ▾“ an der Scope-Zeile → EIN Popover mit BEIDEN Achsen (Entität und Zeitraum von–bis), vertikal angeordnet:
K
Wir schauen auf: 🏢 C3 GmbH · 📅 Juni 2026ändern ▾
Entität
Zeitraum
tagesgenau:–
Die früheren Einzel-Dropdowns der Topbar (🏢 ▾ · 📅 ▾ · „⋯ mehr“) sind ENTFERNT (R-40) — sie existieren nur noch in Alt-Cockpits bis zur Migration.
Funktion
Wahl von Entität UND Zeitraum (von–bis) — immer beide Achsen in EINEM Popover (R-41), geöffnet über „ändern ▾“ der Scope-Zeile ODER den Hero-Scope-Chip (G3, derselbe Wähler).
Regel
ABGELÖST durch scope-frame (= Instanz #1 der statusline, R-88/R-90); das Auswahl-Popover ist das EINHEITLICHE scopepop (R-90). Keine Topbar-Dropdowns, kein Overflow-„mehr“-Muster mehr.
SSOT
foundation.css .scopepop · engine.js (scopePop im Renderer)
Wo
über scope-frame in jeder Konversation/Datensicht · Alt-Cockpits = Migrations-Backlog (PLAT#03)
scope-frameDaten-Scope EINMAL pro Konversation — Instanz #1 der statusline (R-90)geteiltStand 03.07. ✓
KAI-Zeile (kanonisch ✅ — JC 2026-06-28; Wording-Kanon seit R-88/R-90: „Wir schauen auf: …“, untere Ecken eckig — s. statusline):
K Wir schauen auf: 🏢 C3 GmbH · 📅 Juni 2026oder sag „zeig mir C4 / letztes Jahr"
„ändern ▾" → EIN Popover mit BEIDEN Achsen (Entität und Zeitraum von–bis):
Entität
Zeitraum (von–bis)
vonbis
Funktion
Daten-Scope (Entität + Zeitraum) — EINMAL pro Konversation, von KAI als leiser Eröffnungs-Rahmen behauptet. Scope-Wechsel betrifft IMMER beide Achsen (Entität UND Zeitraum von–bis), nie nur eine. Ändern: konversationell („zeig mir C4 / Q1 / 01.04.–30.06.") ODER 1 Klick „ändern ▾" (EIN Popover mit beidem).
States
beide gesetzt · Popover offen · von–bis-Range · im Thread = Thread-Scope
Regel
Konsolidiert scope-breadcrumb + scope-selector (Header-Dropdowns ENTFERNT, kein Doppel). „ändern" ändert Entität UND Zeitraum (von–bis) zusammen — nicht nur Entität (JC 2026-06-28). Identität → Konto, Essential/Pro → globaler Default. Auto-Scope darf nur verengen (RLS), nie erweitern. Kanonisch = KAI-Zeile; schlanke Leiste verworfen.
Wo
Eröffnung jeder Konversation/Datensicht · CORE + gabriel · Klärungs-Persona
Gabriel-Muster: Vorschlag + 1–2 Fragen, nichts wird ungefragt gespeichert. EINE kanonische Karte (approvalCard()) für Inbox (Intake) UND Klärung (cardHtml) — einmal ändern = beide Flows.
States
offen · übernommen(leave-Animation) · später · (Klärung: mit Schnell-Antwort-Chips + Detail-Buttons)
Aktion ≠ Frage (Primär „annehmen" rechts). KEIN Composer auf der Karte (Free-Text nur am unteren Composer, Bibel §0e). Quick-Reply-Chips = KAIs Antwort-Angebote an der Nachricht (§0f). Nutzt beleg-preview (Klärungs-Variante) + done-state.
Orientierungs-Block: die wichtigsten Kennzahlen eines Bereichs auf einen Blick — Eröffnung der Orientierungsseite-KAI (jeder Menüpunkt = Orientierung→Dialog, #763). Mehrere kpi-tile gruppiert + Scope-Kontext.
vorgeschlagene nächste Aktionen (Orientierung→Dialog, #763) — führt in eine Route/einen Dialog (→), kontextuell aus Scope + offenen ToDos. ≠ chip (das beantwortet KAI; dieser handelt/navigiert).
States
ruhig · hover · erledigt-ausgegraut
Regel
Aktions-Vorschlag mit Ziel (→); kein Tipp-Zwang; verschwindet, wenn erledigt.
Wo
Orientierungsseite-KAI · Heute · leerer Chat · nach Abschluss
EIN Aktions-Set: Verschieben · Herunterladen · Per Mail · in Wissen (RAG) · als Chat-Input · Umbenennen · Löschen (Schutz-Prüfung). Pro Datei „…" = identisch zur Multiselect-Bulk-Bar.
total · belege_review · buchungen_offen · vertraege_aktion · fenster_tage
domain-card (Aktionen)
travel_summary_card
type=result_card + render_hint · trip_id · label · entity · status · period · km · uebernachtungen · pauschalen_eur · belege_open · belege_total
domain-card (Reise) + route-map
approval_card
type=approval_card · approval_tier (jc_direct) · state (pending) · proposal{skill,args} · preview[[wort,wert]] · widerruf · writes[] · reversible · audit{event,required} · actions{approve,edit,reject} · microcopy ⛔ Q0062 (CODEX-KAI#03, 25.09.): preview trägt Ziel · Wirkung · Grund · Geltung als Paare, widerruf den Rückweg im Klartext. Bis dahin standen diese Angaben nur in proposal.args — und die liest der Renderer nicht.
knowledge-card — .kc-snip-Clamp + „Mehr anzeigen“ (lange RAG-Antwort NIE als Textwand) · srclink (R-91, Drive-Link aus drive_file_id selbst gebaut) · 🔒 R-132
knowledge_card ist die RAG-Wissensabfrage-Karte (RAG#01/Mig-227-Cutoff), nicht Teil der #697-Finanz-Engine — daher der eigene Stand-Chip. Regel: eine RAG-Antwort ist IMMER diese Karte (geclampter Snippet + klickbare Quellen), NIE ein roher Chunk-Dump. Der Konformitäts-Harness prüft das (DRIFT-KNOWLEDGE: Renderer da + lange Antwort geclampt). Quellen tragen ihren Drive-Link (R-91, GOLDENE REGEL) — die Karte baut ihn aus drive_file_id selbst, braucht keine fertige url.
Envelope: { v:1, domain, sprache, scope:{mandant_id, entity, confidentiality_max, source}, blocks:[ {kind:"card"|"prose", …} ] }. Anti-Fabrikat: "—"/null = nicht vorhanden (nie erfinden). iban_masked = einzige IBAN-Form. saldo (String, Anzeige) vs. saldo_value (Zahl, Logik). Dedup über (render_hint, id, trip_id, contract_id). ✅ deckungsgleich mit #697.
🟧 gabriel-Memoir — Instanz-render_hints (gleiche Hülle/Regeln, eigene Typen)
Universell: derselbe Renderer + dieselben generischen Blöcke (prose/long-prose/list/table/approval/audio/image/link) tragen auch gabriel. Nur die Domänen-render_hints unterscheiden sich — Memoir statt Finanz. Stimme/Theme (FR/warm) = DESIGN#04, kein Komponenten-Unterschied.
4-Status-Treue (verbatim/résumé/inférence/à vérifier) = eigene Achse, fließt in validation_status/Badge. Shell · Composer · thread-context · scope-selector tragen für gabriel mit (geprüft).
🎛 Composer-Senden — 3 Varianten zur Wahl (JC entscheidet)
Der alte ➤-Glyph-Knopf war „schrecklich". Drei saubere Optionen — kanonisch gesetzt = Variante B (Paper-Plane-SVG, kompakt-rund). Sag, falls du A oder C willst, dann ziehe ich es überall nach.
Nachricht …
A · Pill mit Labelmaximal klar/zugänglich (Text + Icon). Etwas breiter — gut auf Desktop.
Nachricht …
B · Rund Paper-Plane ✅ kanonischkompakt-modern, echtes SVG (kein Glyph), Hover-Lift. Mobil-freundlich.
Nachricht …
C · Inline im FeldKnopf sitzt im Eingabefeld rechts, erscheint bei Text. Minimalistisch.
EINE durchgehende Konversation mit allen Bausteinen in echter Kombination, Realdaten. Frage: „in einem Guss?" + „hübsch?" — in Hell und Dunkel (Toggle oben rechts).
K Wir schauen auf: 🏢 C3 GmbH · 📅 Juni 2026ändern ▾oder sag „zeig mir C4 / letztes Jahr"
K
Guten Morgen Jean-Chris 👋 Alles liegt auf EU-Servern — du gibst frei, nicht ich. 3 Dinge brauchen kurz dich, den Rest habe ich erledigt.
🔊 Vorlesen 0:08
JC
Was steht für C3 im Juni an?
K
Drei offene Klärungen für C3 · Juni:
Datum
Lieferant
Betrag
Status
05.06.
IONOS SE
−79,00 €
zu prüfen
12.06.
NH Hotels
−184,00 €
zu prüfen
10.06.
Kunde Meyer AG
+4.760,00 €
zugeordnet
K
Beim ersten habe ich einen Vorschlag — nichts gespeichert:
Aus deinem Arbeitsweg-Kalender (19 km · 122 Bürotage · 74 Homeoffice):
Entfernungspauschale
+695,40 €
Homeoffice
+444,00 €
✅ Σ 1.139,40 € für 2025.
⚠️ Entwurf — Steuerberaterin-Freigabe steht aus.
JC
Wie weit war die Hamburg-Reise nochmal?
K
Reise Berlin → Hamburg, 03.–05.06.:
289 km · Bahn + Hotel (NH) · Projekt Alpha
Diktat möglich:🎤 „Eingeladen war Kunde Meyer …"
K
Noch ein Hinweis zu einem Vertrag, der bald kündbar ist:
🔁 VertragC3
Vodafone GmbH · Mobilfunk 03-26-013
79,00 €/M · Konto Geschäft · Kündigung bis 30.09.
JC
Warum ist die UStVA-Zahllast so hoch — erklär mal.
K
Klar — kurz erklärt, wie die Zahllast zustande kommt:
Die zwei Seiten
Aus deinen Ausgangsrechnungen entsteht Umsatzsteuer, aus den Eingangsrechnungen Vorsteuer. Die Differenz schuldest du dem Finanzamt.
Umsatzsteuer (19 %): 760,00 €
Vorsteuer aus Belegen: −402,18 €
Zahllast: 357,82 €
Warum nicht weniger?
Im Juni gab es kaum Eingangsrechnungen mit Vorsteuer — der größte Posten (IONOS) ist klein. Sobald du die 2 offenen Belege verknüpfst, sinkt die Zahllast evtl. leicht. Soll ich sie raussuchen?
🔊 Vorlesen 0:21
🔒 EU-Server · vertraulich · KAI schlägt vor, du entscheidest.
💬 Schreib unten — deine Frage zu „C3 · Juni" landet im Verlauf.
🧊 EINGEFRORENES ARCHIV (T3-7, JC-OK 19.07.): Stand eingefroren am 19.07.2026 — die Prüf-FUNKTION lebt in den Guards weiter (familie_guard C/D-Achsen · Harness · CI), die Befund-Inhalte sind im Anforderungs-Register aufgegangen. Dieser Reiter bleibt als Historie (Doku-Wert; „löschen geht später immer").
Wo dieselbe UX-Rolle bisher unterschiedlich aussah → EINE kanonische Version festgelegt. Bereinigte Abweichungen:
Diese 20 Namen werden in die Chatbot-UX-Bibel aufgenommen (SSOT). Ab dann: Änderung an name → automatisch überall (Renderer + Lanes erben).
Dieselben Bausteine — gabriels Memoir-Welt (warm, Französisch). EIN Renderer/Vokabular wie CORE; nur die render_hints sind Memoir statt Finanz. Marke/Stimme (Terracotta, FR) = DESIGN#04, kein Komponenten-Unterschied.
G
Bonjour Jean-Chris 🌿 Racontez-moi un souvenir — je l'écoute, puis j'en fais une fiche. Rien n'est figé tant que vous ne validez pas.
🔊 Écouter 0:06
JC
L'été 1985 chez ma grand-mère en Bretagne…
G
souvenir_card
🕰 Souvenirà vérifier
Été 1985 — Bretagne
Lieu: maison de grand-mère · Personnes: grand-mère · Saison: été
G
memoir_fiche_card (brouillon_ia)
📄 FicheÉtappe: Recueillir
Brouillon : « Les étés en Bretagne sentaient le sel et le pain chaud ; la cuisine de grand-mère ne se taisait jamais… »
EINE Komponenten-Bibliothek, ZWEI Marken-Paletten (DESIGN#01 data-brand-Vertrag). Gleiche Rolle-Tokens, andere Hex — Re-Branding ändert NUR Look, nie Bedeutung/Funktion. Der gabriel-Kitchen-Sink flippt live auf data-brand="gabriel" (warm). Quelle: PLAT_06/tokens.css (nicht erfunden).
🔵 CORE — kühl (data-brand=core)
--bg#f4f6f9
--surface#ffffff
--surface-2#eceff4
--border#e1e4ea
--c-action#185fa5
--c-action-bg#e6f1fb
--selected-bd#e3c200
🟧 gabriel — warm (data-brand=gabriel)
--bg#faf5ec
--surface#fffdf8
--surface-2#f2e9da
--border#e7dcc9
--c-action#9a4a28
--c-action-bg#f6e7de
--selected-bd#d99a3a
Stimme/Theme unterscheiden (gabriel FR/warm vs CORE kühl) = DESIGN#04 · kein Komponenten-Unterschied. Megabook = reine Akzent-Marke (Lila), Flächen neutral. Dark-Mode je Marke vorhanden.
UX-Feedback-Panel (.ux-fb-panel) — JC schreibt direkt auf jeder Mockup-Seite was auffällt; das Feedback fließt in die UX-Pipeline. Phase 1: localStorage (Key tgv_ux_fb_v1_{page}), Export → Clipboard → Tower. Phase 2 = Supabase · Phase 3 = UXBOT (KONZEPT_UX_FEEDBACK_PANEL.md). Live auf dieser Seite: unten rechts „💬 Feedback" ausprobieren →
ux-fb-panelFeedback erfassen je Seite/Sektion (Phase 1: localStorage)geteilt
Auf allen 6 Mockup-Seiten ausgerollt (data-ux-page + data-ux-version am <html>). Floating Toggle (unten rechts) → Panel rechts, kollabierbar, Badge = offene Einträge.
Beispiel: „KPI-Tiles zu groß auf Mobile"
UX · buchungen · offen · 29.06.2026
„Theme-Toggle wirkt nicht"
BUG · allgemein · offen · 29.06.2026
Funktion
Feedback je Seite + Sektion (aus location.hash) erfassen, Typ wählen (UX/Bug/Idee/OK/Kritisch), exportieren. Überlebt Reload (localStorage).
States
geschlossen (nur Toggle) · offen · Liste leer/gefüllt · Badge-Count
Regel
Farben nur via --c-*; additive Klassen (kein .ds-*-Restyle); Dark-Mode + 375px-tauglich (≤360px = 100vw).
Wo
alle 6 Mockup-Seiten · später Core-Shell (Phase 2)
🗃 Datenmodell (universell ab Phase 1)
Feld
Beispiel
Zweck
id
fb-…
eindeutig
page · section · version
core_app_mockup · buchungen · v3.0
wo (Seite/Sektion/Stand)
comment · type
„KPIs zu groß" · ux/bug/idee/ok/kritisch
was
author · status
jc · offen/in_bearbeitung/umgesetzt/abgelehnt
wer/Stand (Phase 2)
timestamp · pipeline_triggered · linked_pr
ISO · false · null
Pipeline-Anbindung (Phase 2/3)
Rollout-Block (CSS+HTML+JS) ist auf jeder Seite identisch vor </body> eingebettet — kopierbar. JS liest data-ux-page/-version vom <html>.