bollwerk/.github/skills
Jens Reinemann 56ac9b1425 feat: Messaging-System mit Offline-First und WebSocket-Push (#58)
## Server
- Messages-Tabelle (id, sender_id, receiver_id, body, sent_at, delivered_at)
- MessageRepository: save/getUndelivered/getConversation/markDelivered (JOIN statt N+1)
- POST /api/messages, GET /api/messages/{userId}: Nachrichten senden/abrufen
- GET /api/users: User-Liste fuer authentifizierte User (ohne eigenen Account)
- WebSocketManager: notifyNewMessage() + isOnline()
- WebSocketRoutes: unzugestellte Nachrichten bei Reconnect pushen
- LoginResponse: userId + username ergaenzt
- Server-Dependency: kotlinx.serialization fuer shared

## App
- MessageEntity + MessageDao (Room, Migration 3->4)
- KrisenvorratDatabase v4, Migrations.MIGRATION_3_4
- MessageRepositoryImpl: Offline-First (isPending), drain bei WebSocket-Connect
- WebSocketEvent.NewMessage -> MessageDto aus shared
- WebSocketClientImpl: new_message-Event parsen
- AUTH_USER_ID in SettingsKeys, SyncServiceImpl speichert userId bei Login
- UserListScreen + UserListViewModel: User-Liste anzeigen
- ChatScreen + ChatViewModel: WhatsApp-Style Chat (links/rechts, Zeitstempel)
- Navigation: Screen.UserList, Screen.Chat, MESSAGES in Bottom-Nav
- RepositoryModule: MessageRepository gebunden

## Tests
- 234 Tests, 0 Fehler
2026-05-16 23:35:25 +02:00
..
algorithmic-art chore: initial project setup with Copilot config, skills, and workspace structure 2026-05-13 13:40:41 +02:00
android-build chore: Dokumentation, SKILL.md und Drawables aktualisieren 2026-05-13 23:56:56 +02:00
android-device docs(device): Wireless ADB workflow und Screenshot-Pull dokumentiert 2026-05-16 12:55:35 +02:00
android-emulator docs(skills): align emulator and build docs with actual scripts 2026-05-13 22:29:09 +02:00
canvas-design chore: initial project setup with Copilot config, skills, and workspace structure 2026-05-13 13:40:41 +02:00
claude-api chore: initial project setup with Copilot config, skills, and workspace structure 2026-05-13 13:40:41 +02:00
doc-coauthoring chore: initial project setup with Copilot config, skills, and workspace structure 2026-05-13 13:40:41 +02:00
docx chore: initial project setup with Copilot config, skills, and workspace structure 2026-05-13 13:40:41 +02:00
frontend-design chore: initial project setup with Copilot config, skills, and workspace structure 2026-05-13 13:40:41 +02:00
gh-tickets fix(gh-tickets): set-board-status akzeptiert 'In Progress' mit Leerzeichen 2026-05-13 22:46:46 +02:00
git chore: initial project setup with Copilot config, skills, and workspace structure 2026-05-13 13:40:41 +02:00
internal-comms chore: initial project setup with Copilot config, skills, and workspace structure 2026-05-13 13:40:41 +02:00
mcp-builder chore: initial project setup with Copilot config, skills, and workspace structure 2026-05-13 13:40:41 +02:00
pdf chore: initial project setup with Copilot config, skills, and workspace structure 2026-05-13 13:40:41 +02:00
pptx chore: initial project setup with Copilot config, skills, and workspace structure 2026-05-13 13:40:41 +02:00
ship chore: update all paths and IDs from kispielwiese to krisenvorrat repo 2026-05-13 13:49:40 +02:00
skill-creator chore: initial project setup with Copilot config, skills, and workspace structure 2026-05-13 13:40:41 +02:00
tech-selection chore: initial project setup with Copilot config, skills, and workspace structure 2026-05-13 13:40:41 +02:00
theme-factory chore: initial project setup with Copilot config, skills, and workspace structure 2026-05-13 13:40:41 +02:00
vps-deploy feat: Messaging-System mit Offline-First und WebSocket-Push (#58) 2026-05-16 23:35:25 +02:00
web-artifacts-builder chore: initial project setup with Copilot config, skills, and workspace structure 2026-05-13 13:40:41 +02:00
webapp-testing chore: initial project setup with Copilot config, skills, and workspace structure 2026-05-13 13:40:41 +02:00
xlsx chore: initial project setup with Copilot config, skills, and workspace structure 2026-05-13 13:40:41 +02:00