Initial commit
This commit is contained in:
64
ROADMAP.md
Normal file
64
ROADMAP.md
Normal 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`
|
||||
|
||||
Reference in New Issue
Block a user