- Add central toast notification system (popup.html, popup.js) - Add browser notifications toggle (opt-in) with event toasts - Fix interpolation memory leak (unload listener) - Add /health endpoint with IP-based rate limiting (server) - Improve tab sorting (current tab first, matches, alphabetical) - Add copy-to-clipboard visual feedback with toast - Show targetTime in last action card for seek/force sync - Add explicit video cleanup when element removed (content.js) - Update ROADMAP.md to remove implemented features
2.6 KiB
KoalaSync Roadmap
This document tracks planned features, improvements, and their implementation details.
Antworten auf offenen Fragen
1. Graceful Shutdown
Korrektur: Der Server hat bereits Graceful Shutdown implementiert (server/index.js:481-499). Bei SIGTERM/SIGINT wird allen Clients eine Neustart-Nachricht gesendet, der HTTP-Server geschlossen und nach 5s erzwungen beendet. Kein Handlungsbedarf.
3. setInterval(refreshLogs, 5000) Last
5 Sekunden ist technisch wenig Last (~0.2 IPC calls/sec). Aber es ist architektonisch unsauber — der Interval läuft auch wenn der Dev-Tab nicht sichtbar ist. Besser: Nur pollen wenn Dev-Tab aktiv, oder auf chrome.runtime.onMessage umstellen (Push statt Poll).
6. Service Worker Fallback bei Room-State Verlust
Manifest V3 suspendiert den Service Worker nach ~30s Inaktivität. chrome.alarms weckt ihn auf, aber:
- Problem: Wenn der SW neu startet, sind alle Variablen (
currentRoom,socket,isNamespaceJoined) weg - Aktueller Stand:
chrome.storage.sessionpersistiertcurrentRoom,peerId,eventQueue— der SW stellt diese beim Start wieder her (restoreSession()) - Lücke: Der WebSocket muss neu aufgebaut werden. Das passiert automatisch via
connect(), aber es gibt eine Zeitlücke von 2-5 Sekunden in der Events verloren gehen können. Verbesserung: Queue-Events während Reconnect, visualisiere "Reconnecting..." im Popup.
7. Tests für Extensions
Stimmt, sind aufwändig. Praktische Ansätze:
- Unit Tests:
jest+jest-chrome(mocktchrome.*APIs) — testetpopup.jsLogik, Server-Logik - Integration Tests:
puppeteermit--load-extensionFlag — testet Extension im echten Browser - Server Tests:
supertest+socket.io-client— testet WebSocket-Flows - Aufwand: ~400-600 LOC für sinnvolle Testabdeckung der Kernlogik
Zukünftige Features (spätere Releases)
Diese Features wurden evaluiert aber sind nicht Teil der nächsten Release:
| Feature | Aufwand | Nutzen | Status |
|---|---|---|---|
| Verbesserte Empty States | ~40 LOC | 7/10 | Backlog |
| Onboarding Tour | ~120 LOC | 8/10 | Backlog |
| Dev-Tab Logs nur bei Sichtbarkeit pollen | ~10 LOC | 5/10 | Backlog |
| Chat im Room | ~400 LOC | 9/10 | Geplant v1.6 |
| Playback Speed Sync | ~150 LOC | 8/10 | Geplant v1.5 |
| Room Host/Owner | ~350 LOC | 8/10 | Geplant v1.6 |
| Auto-Reconnect mit State | ~250 LOC | 9/10 | Teilweise implementiert |
| Multi-Video Support | ~300 LOC | 7/10 | Geplant v2.0 |
| Volume Sync | ~120 LOC | 6/10 | Backlog |
| Stats Dashboard | ~200 LOC | 6/10 | Backlog |
| Custom Themes | ~80 LOC | 5/10 | Backlog |