Skip to content

Commit 803bc72

Browse files
authored
Merge pull request #91 from baba-dev/codex/revise-milestone-goals-in-tasks.md
docs: align roadmap with current UI modules
2 parents 6b814c2 + c6387ab commit 803bc72

1 file changed

Lines changed: 114 additions & 49 deletions

File tree

docs/TASKS.md

Lines changed: 114 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -30,64 +30,129 @@ prerequisites, and deliver a focused change.
3030
- Considerations: update `docs/ARCHITECTURE.md` with the decision.
3131
- **M0.3 — Mock providers** (status: ☐)
3232
- Dependencies: M0.1.
33-
- Outcome: add mock data sources for Home, Rooms, and Security screens under
34-
`custom/integration/` behind a build flag.
35-
- Considerations: unblock UI work while MQTT is offline.
33+
- Outcome: add mock data sources for Rooms, CCTV, Weather, Media, and
34+
Settings pages under `custom/integration/` behind a build flag so each
35+
module in `custom/ui/pages/` has sample data.
36+
- Considerations: unblock UI work while MQTT is offline and document how to
37+
switch between real and mock providers.
3638

37-
### Milestone 1 — UI skeleton
39+
### Milestone 1 — Page scaffolding
3840

39-
- **M1.1 — Screen scaffolding** (status: )
41+
- **M1.1 — Rooms page scaffolding** (status: )
4042
- Dependencies: M0.3.
41-
- Outcome: create persistent LVGL objects for `ui_home.*`, `ui_rooms.*`,
42-
`ui_security.*`, and `ui_control_center.*` that match the layout spec.
43-
- Considerations: reuse placeholder widgets from `custom/ui/ui_components.*`.
44-
- **M1.2 — Shared components** (status: ☐)
45-
- Dependencies: M1.1.
46-
- Outcome: implement cards, chips, sliders, tabs, and confirm sheets styled
47-
via `ui_theme.h`.
48-
- Considerations: centralize styles so future screens stay consistent.
49-
- **M1.3 — Navigation and gestures** (status: ☐)
43+
- Outcome: create persistent LVGL layout for `ui_page_rooms.*`, including the
44+
toolbar, wallpaper, and grid of `ui_room_card` widgets managed by
45+
`ui_root.c`.
46+
- Current state: `ui_page_rooms_create` renders three cards with static
47+
descriptors, plays intro animations, and emits toggle/sheet events backed by
48+
mock `rooms_state_t` data inside the module.
49+
- Considerations: keep card gestures coordinated with
50+
`custom/ui/pages/ui_rooms_model.*` when real data arrives.
51+
- **M1.2 — CCTV page scaffolding** (status: ☑)
52+
- Dependencies: M0.3.
53+
- Outcome: build the CCTV layout in `ui_page_cctv.*` with toolbar controls,
54+
a `ui_room_card` wrapper for the live feed, and an events row prepared for
55+
camera history chips.
56+
- Current state: the page renders placeholder labels, hides unused toggles,
57+
and shows a stub "Live feed" container without switching logic or data.
58+
- Considerations: align toolbar button styles with shared assets from
59+
`custom/ui/ui_theme.h`.
60+
- **M1.3 — Weather page scaffolding** (status: ☑)
61+
- Dependencies: M0.3.
62+
- Outcome: assemble the climate dashboard in `ui_page_weather.*`, featuring
63+
indoor/outdoor cards and a flexible forecast row that can accept dynamic
64+
metrics.
65+
- Current state: static strings populate each metric block and forecast item,
66+
and the card toggles/specs are hidden until bindings are available.
67+
- Considerations: confirm copy and iconography match `docs/wireframes.md`.
68+
- **M1.4 — Media page scaffolding** (status: ☑)
69+
- Dependencies: M0.3.
70+
- Outcome: layout the media experience in `ui_page_media.*`, including now
71+
playing metadata, transport controls, quick scenes, and volume slider ready
72+
for callbacks.
73+
- Current state: album art, track labels, and transport buttons display
74+
placeholder content with no LVGL event handlers attached.
75+
- Considerations: ensure button spacing matches the reusable metrics from
76+
`custom/ui/ui_theme.h`.
77+
- **M1.5 — Settings page scaffolding** (status: ☑)
78+
- Dependencies: M0.3.
79+
- Outcome: implement the settings hierarchy in `ui_page_settings.*` with
80+
connectivity tests, theme controls, network tools, OTA prompts, and backup
81+
actions surfaced through `ui_page_settings_actions_t`.
82+
- Current state: the page constructs all sections, exposes setters such as
83+
`ui_page_settings_set_connection_status`, and binds actions via
84+
`app_launcher/view`, but integration calls still return placeholder states
85+
when hardware services are offline.
86+
- Considerations: document the action wiring in `docs/ARCHITECTURE.md` when
87+
integration matures.
88+
89+
### Milestone 2 — Data plumbing
90+
91+
- **M2.1 — Rooms state pipeline** (status: ☐)
5092
- Dependencies: M1.1.
51-
- Outcome: wire the tab rail, edge swipes, and control center sheet
52-
interactions.
53-
- Considerations: include optimistic animations for taps and long presses.
54-
55-
### Milestone 2 — Feature scaffolding
56-
57-
- **M2.1 — Home bindings** (status: ☐)
58-
- Dependencies: M1.2.
59-
- Outcome: connect Home cards to mock providers with optimistic updates ready
60-
for MQTT swap.
61-
- Considerations: keep command helpers in `custom/integration/`.
62-
- **M2.2 — Rooms interactions** (status: ☐)
63-
- Dependencies: M1.2.
64-
- Outcome: implement room detail updates, two-finger swipe navigation, and
65-
long-press sheets.
66-
- Considerations: validate gestures on hardware for reliability.
67-
- **M2.3 — Security carousel** (status: ☐)
93+
- Outcome: move the static room descriptors and `INITIAL_STATE` out of
94+
`ui_page_rooms.c` into a provider so `ui_page_rooms_set_state` consumes data
95+
supplied by `custom/integration/`.
96+
- Current state: not started; the page seeds its own mock entities and ignores
97+
external updates.
98+
- Considerations: surface toggle events via a shared bus so integrations can
99+
publish commands.
100+
- **M2.2 — CCTV event model** (status: ☐)
68101
- Dependencies: M1.2.
69-
- Outcome: build the camera carousel and event chips backed by mock Frigate
70-
data.
71-
- Considerations: respect the HLS → MJPEG → snapshot fallback described in
72-
the AI guide.
102+
- Outcome: define data structures for camera rotation and timeline chips,
103+
exposing setters on `ui_page_cctv.*` so integrations can drive the view.
104+
- Current state: not started; toolbar labels and chips are hard-coded.
105+
- Considerations: plan for Frigate clip metadata and snapshot fallbacks.
106+
- **M2.3 — Weather and climate adapter** (status: ☐)
107+
- Dependencies: M1.3.
108+
- Outcome: add an adapter layer that formats indoor, outdoor, and forecast
109+
data for `ui_page_weather.*`, including unit conversions and icon mapping.
110+
- Current state: not started; the page renders placeholder Fahrenheit/Celsius
111+
values without conversion helpers.
112+
- Considerations: reuse formatting helpers across Settings where applicable.
113+
- **M2.4 — Media control hooks** (status: ☐)
114+
- Dependencies: M1.4.
115+
- Outcome: attach LVGL callbacks in `ui_page_media.*` that emit play/pause,
116+
skip, volume, and quick-scene events to a media controller in
117+
`custom/integration/`.
118+
- Current state: not started; controls are visual only.
119+
- Considerations: coordinate icon/text updates when playback state changes.
120+
- **M2.5 — Settings telemetry bridge** (status: ☐⚙)
121+
- Dependencies: M1.5.
122+
- Outcome: finish threading connection test results, OTA progress, and theme
123+
persistence through `custom/integration/settings_controller.*` so UI status
124+
pills stay in sync.
125+
- Current state: partially implemented; `SettingsController` posts events but
126+
lacks coverage for every action and has stubbed fallback messages when
127+
platform services are unavailable.
128+
- Considerations: audit async callbacks to ensure they survive suspend/resume
129+
of the worker thread.
73130

74131
### Milestone 3 — Home Assistant integration
75132

76-
- **M3.1 — MQTT for Home and Rooms** (status: ☐)
77-
- Dependencies: M2.1 and M2.2.
78-
- Outcome: replace mock providers with real MQTT subscriptions and publish
79-
helpers.
80-
- Considerations: extend `docs/mqtt_contract.md` with payload schemas.
81-
- **M3.2 — Frigate live view** (status: ☐)
82-
- Dependencies: M2.3.
83-
- Outcome: stream live video with fallback handling and update the event
84-
timeline from Frigate.
85-
- Considerations: measure frame times against `docs/PERFORMANCE.md`.
86-
- **M3.3 — Control center commands** (status: ☐)
133+
- **M3.1 — MQTT bindings for Rooms** (status: ☐)
87134
- Dependencies: M2.1.
88-
- Outcome: publish brightness, volume, and toggle commands with rollback
89-
timers.
90-
- Considerations: log failures for debugging and expose status to the UI.
135+
- Outcome: subscribe to room sensor and light topics defined in
136+
`docs/mqtt_contract.md`, translate them into `rooms_state_t`, and publish
137+
toggle commands emitted by `ui_page_rooms`.
138+
- Current state: not started; Rooms still relies on compile-time mocks.
139+
- Considerations: debounce slider updates so MQTT traffic stays bounded.
140+
- **M3.2 — Climate and weather ingestion** (status: ☐)
141+
- Dependencies: M2.3.
142+
- Outcome: map MQTT sensor payloads to the weather adapter and refresh indoor
143+
metrics alongside settings-managed preferences like units and themes.
144+
- Current state: not started; all weather values are placeholders.
145+
- Considerations: document required topics and units in
146+
`docs/mqtt_contract.md`.
147+
- **M3.3 — Media and Settings integration** (status: ☐)
148+
- Dependencies: M2.4 and M2.5.
149+
- Outcome: hook media control events into Assist/Home Assistant transports and
150+
persist device settings (theme, brightness, updates) through MQTT or REST as
151+
defined in `custom/integration/`.
152+
- Current state: not started; media commands are local stubs and settings
153+
persistence runs on in-memory defaults.
154+
- Considerations: record integration quirks in `docs/ARCHITECTURE.md` and
155+
expand `docs/mqtt_contract.md` when new topics are introduced.
91156

92157
### Milestone 4 — Quality and automation
93158

0 commit comments

Comments
 (0)