# RetroHA — Roadmap ## Sieć i integracja z HA - [x] Ekran konfiguracji: adres serwera HA + Long-Lived Access Token - [x] Klient REST (Retrofit) — pobieranie stanu encji (`/api/states`) - [x] Wywoływanie serwisów HA (`/api/services//`) — toggle, execute - [ ] WebSocket (`/api/websocket`) — subskrypcja zdarzeń `state_changed` dla aktualizacji w czasie rzeczywistym - [ ] Logika ponownego łączenia po utracie połączenia (exponential backoff) - [x] Wskaźnik stanu połączenia w górnym pasku (połączono / rozłączono / łączenie) - [x] Obsługa błędów: timeout, 401 Unauthorized, 404 Not Found ## Architektura — warstwa sieciowa (moduł `shared`) - [x] `HaApiService` — interfejs Retrofit z endpointami REST - [x] `HaEntity` — DTO mapujący JSON z `/api/states` - [ ] `HaWebSocketClient` — klient WebSocket z obsługą `auth`, `subscribe_events` - [x] `EntityStateCache` — mapujący `entity_id → EntityState` (w `Prefs` i `MainActivity`) - [ ] `HaWorker` — `HandlerThread` jako jeden wątek sieciowy (single-core device) - [x] `WeakReference` / `runOnUiThread` w callbackach sieciowych — unikanie wycieków `Activity` ## Konfiguracja widgetów - [x] Ekran dodawania widgetu — przeglądarka encji HA (lista z wyszukiwarką) - [x] Trwałe zapisywanie listy widgetów (JSON w `SharedPreferences`) - [x] Usuwanie widgetu (przez ekran wyboru encji) - [ ] Zmiana kolejności widgetów (drag & drop lub przyciski ↑↓) - [x] Filtrowanie widgetów przez zakładki (Oświetlenie, Gniazdka, Moc, itp.) ## Obsługa typów encji - [x] `light` — sterowanie jasnością (slider, auto-zapis po puszczeniu) - [ ] `light` — sterowanie kolorem (jeśli obsługuje) - [ ] `climate` — wyświetlanie temperatury docelowej, trybu HVAC; widok szczegółów - [x] `sensor` / `binary_sensor` — wyświetlanie wartości i stanów - [x] `switch` — przełączanie ON/OFF - [x] `automation` / `script` — wywoływanie akcji (EXECUTE) ## Wydajność i stabilność - [x] **Bauhaus Canvas** — autorski, lekki silnik graficzny (ręczne rysowanie na `Canvas`) - [x] Optymalizacja `onDraw` — cachowanie `StaticLayout`, unikanie alokacji w pętli rysowania - [x] Obsługa bardzo starych urządzeń (optymalizacja pod słabe procesory) - [ ] ProGuard / R8 dla release buildu ## UI - [x] Zakładki (Tabs) do szybkiego filtrowania domen - [x] Obsługa języków (PL/EN) - [x] Tryb Kiosk (Wake Lock) — ekran nie gaśnie przy widocznej aplikacji - [x] Responsywność — automatyczna liczba kolumn (Grid) ## i18n - [x] Pełne wsparcie dla języka polskiego (PL) - [x] Pełne wsparcie dla języka angielskiego (EN) - [ ] Tłumaczenia na języki: DE, FR, UK ## Testy - [x] Testy instrumentalne — `AppNavigationTest`, `AutomatedClickTest` - [x] Monkey Stress Test — testowanie stabilności pod dużym obciążeniem - [x] Unit testy — `ExampleUnitTest`