01 / CAMERAS P1
Make the right camera obvious
Observed: V1 shares one favourite flag across cameras. Large repeated cards limit scanning.
Fix: favourites keyed by camera; searchable names; consistent 16:9 previews with site and freshness. Distinguish periodically refreshed previews from live video.
Pass when favouriting one camera affects only that camera; Back restores the list position.
02 / LIVE P1
Video first, controls second
Observed: native portrait space is inefficient; V1 promotes several competing actions.
Fix: fixed camera identity and Live/Recordings switch; uncropped video; Photo, Sound and Controls below. Expose only supported, permitted hardware actions.
Pass when returning from background shows reconnecting/retry rather than a misleading frozen live frame. #128
03 / RECORDINGS P0
Time must be dependable
Observed: V1 date/speed choices do not apply. Three thumbnails cannot replace the native visual browser.
Fix: shared playback timestamp; visible date/timezone; real seek and speed state; explicit “Browse snapshots” entry alongside the timeline.
Pass when date, timeline, snapshot and export agree on the same instant; gaps and unavailable footage are explicit.
04 / SNAPSHOT BROWSER P1
Make each control mean one thing
Observed: the oversized date block, repeated arrows and unlabeled interval compete for attention. “Every 15 min” can be mistaken for recording frequency.
Fix: one compact date selector beside a quieter “Jump to hour” action; a separate “Preview spacing” control with timezone shown as plain context. The hour sheet explains that it scrolls previews. Keep the continuous three-column grid, readable timestamps and selected border plus check.
Pass when changing the date and spacing updates the previews; Jump to hour scrolls to that hour; selecting 09:30 opens that recording paused. Date, spacing and selected tile persist on return, with no horizontal overflow.
Implementation reference: the web mobile recording browser uses a three-column grid. This adaptation keeps rows continuous across hour boundaries.
05 / EVENTS P0
An event is a precise destination
Observed: V1 event clicks lose camera and event time.
Fix: rows carry event type, camera, site, timestamp and timezone. Open that recording directly; preserve event-list filters on return.
Pass when two events from different cameras open their own camera/time; expired footage explains why playback is unavailable.
06 / CLIPS P0
Show the export’s real status
Observed: V1 has only a placeholder. Native export announces submission before its request completes.
Fix: proper list with pending/processing/ready/failed states; duration and quality; retry where supported. Validate current limits: 1 hour HD, 12 hours SD.
Pass when rejected requests never show success; accepted jobs appear once and open only when ready.
07 / SYSTEMS P1
Maintenance belongs in reach
Observed: native Systems is buried inside Settings; V1 introduces a mode switch.
Fix: permission-scoped destination with List/Map views, search and explicit fault/status filters. Separate fleet totals from filtered-result counts.
Pass when a maintainer finds an offline system without entering Settings; both views retain the same scope. #130
08 / FILTERS P1
Selections need a clear contract
Observed: V1’s filter presentation is stronger than its initial state handling.
Fix: adapt the web’s draft selection + Apply/Reset pattern; searchable error names; visible applied chips; cancel discards drafts.
Pass when opening, cancelling, applying and resetting produce predictable results; zero matches has a clear reset action.
09 / MAP P0
Selection must drive every action
Observed: V1’s Live action can open a stale camera from previous navigation.
Fix: one selected-system sheet, synchronised marker, concise faults/energy and named camera actions. Label offline readings with freshness.
Pass when selecting a different marker updates all content and routes; the sheet leaves useful map visible. #131
10 / SYSTEM DETAILS P1
Separate diagnosis from configuration
Observed: V1 reduces details to a generic overlay.
Fix: connection and freshness first, actionable faults second, energy/cameras next. Put configuration behind a permission-aware secondary action, reusing the existing web destination.
Pass when offline values cannot be mistaken for current telemetry and unavailable controls explain their restriction.
11 / SETTINGS P1
A small page with a real job
Observed: oversized nested panels, warning styling for an ordinary time preference, technical JPEG/WebRTC labels, and an unrelated Systems shortcut. Changing stream mode can unexpectedly open the last camera.
Time displaySite time / Device time, with both labelled examples. Preserve the existing saved preference.
Live viewingSmooth video (WebRTC) / Compatibility mode (JPEG). Explain the effect; respect device support.
Updates & versionAccurate check status and version. An in-app update check does not prove the latest store binary is installed.
AccountIdentity and explicit sign out. Team/site switching remains contextual in screen headers.
Fix: compact grouped rows, neutral preference states, technical detail secondary. Keep task controls in the player and system configuration in details. No invented language, theme or storage settings. Apple Settings reference.
Pass when changing a preference keeps Settings open, survives restart and has a visible effect across relevant screens.
12 / TEAM & SITE P0
Switch data, not just the label
Observed: V1 relabels unchanged content and returns to Cameras regardless of origin.
Fix: searchable authorised choices; current selection; deliberate Apply. Fetch the selected scope, clear incompatible camera/system selections and return to the originating screen.
Pass when new scope never displays previous-site data as current; cancellation changes nothing; empty/no-access states are explicit.