Initial commit

This commit is contained in:
Krzysztof Cieślik
2026-06-13 21:43:53 +02:00
commit 22a3e0fe7e
80 changed files with 4175 additions and 0 deletions

64
ROADMAP.md Normal file
View File

@@ -0,0 +1,64 @@
# 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/<domain>/<service>`) — 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`