Pages
Contents
TOOL_chat_adr-003 – localStorage Key Konvention
Status: ACCEPTED · Erstellt April 2026 Übergeordnet:
TOOL_chat_roadmap.mdVerwandt:TOOL_chat_concept-identity.md
Kontext
xPulse Chat speichert alle Daten lokal im localStorage des Browsers.
Ohne eine einheitliche Key-Konvention entstehen Kollisionen, unklare
Zugehörigkeiten und Privacy-Probleme wenn mehrere User dasselbe Gerät nutzen.
Entscheidung
Es gibt zwei Namespaces:
| xpulse_identity_* → Identitätsdaten (geräte- und toolübergreifend) |
| xpulse_chat_* → Chat-spezifische Daten |
Namespace 1 – `xpulse_identity_`
Identität ist fundamentaler als ein einzelnes Tool – sie gehört dem System, nicht dem Chat. Könnte später von anderen xPulse Tools genutzt werden.
| xpulse_identity_client_{resource} → Gerätedaten (kein userId-Prefix) |
| xpulse_identity_{userId}_{resource} → User-Identitätsdaten |
Namespace 2 – `xpulse_chat_`
Chat-spezifische Daten folgen dem Schema:
| xpulse_chat_{userId}_{resource}_{subId?} → user-spezifisch |
| xpulse_chat_{resource} → global/technisch |
Regel 1 – Kein abgekürztes `xp_`
Verhindert Kollisionen mit anderen Apps im gleichen Origin. Immer den vollen Prefix ausschreiben.
Regel 2 – `userId` immer als erstes nach dem Prefix
Alle Daten die zu einem User gehören sind sofort nach userId gruppiert.
Ermöglicht saubere Isolation zwischen mehreren Usern auf demselben Gerät.
Regel 3 – Globale/technische Keys ohne `userId`
Daten die nicht zu einem spezifischen User gehören bekommen keinen userId-Teil.
Key-Übersicht
Identity – Gerät
| xpulse_identity_client_id |
| xpulse_identity_client_public_key |
| xpulse_identity_client_private_key ← AES-GCM verschlüsselt |
Identity – User
| xpulse_identity_{userId}_public_key |
| xpulse_identity_{userId}_private_key ← AES-GCM verschlüsselt |
| xpulse_identity_{userId}_salt |
Chat – User-spezifisch
| xpulse_chat_{userId}_profile |
| xpulse_chat_{userId}_devices |
| xpulse_chat_{userId}_chat_{chatId} |
| xpulse_chat_{userId}_graveyard_{chatId} |
| xpulse_chat_{userId}_pending_delete_{chatId} |
Chat – Global / technisch
| xpulse_chat_terms_accepted |
| xpulse_chat_panel_info |
| xpulse_chat_sw_version |
| xpulse_chat_ai_consent |
Konsequenzen
- Alle bestehenden Keys (
xp_*) müssen migriert werden - Migration läuft einmalig beim ersten Start nach dem Update
- Export/Import muss beide Namespaces kennen
- Alle Concept-Docs und Specs verwenden ab sofort diese Konvention
Migration alter Keys
| Alt | Neu |
|---|---|
xp_terms_accepted |
xpulse_chat_terms_accepted |
xp_panel_chat_info |
xpulse_chat_panel_info |
xpulse_panel_chat_info |
xpulse_chat_panel_info |
xp_graveyard_{chatId} |
xpulse_chat_{userId}_graveyard_{chatId} |
xp_ai_consent |
xpulse_chat_ai_consent |