Files
KoalaSync/docs/ROADMAP.md
T
Koala 4909a86a13 feat: implement sprint 1 quick wins - toast system, notifications, UX polish
- 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
2026-05-25 09:53:25 +02:00

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.session persistiert currentRoom, 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 (mockt chrome.* APIs) — testet popup.js Logik, Server-Logik
  • Integration Tests: puppeteer mit --load-extension Flag — 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