A new Schedules tab lists every schedule across projects with its
interval, prompt, next/last run, and role/model badges; the operator
can create one (project, name prefix, interval, role, model backend,
prompt), pause/resume with a switch, and delete with confirmation.
Mirrors the web dashboard's Schedules page, including the model picker
added there. New clock/brain icons join the Lucide subset and the tab
bar grows to four tabs.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01731mKtVzsfeT4Vi3TvkR48
Wire the mobile app to the real Handler API instead of the transcribed
prototype data:
- src/api/client.ts: typed client ported from frontend/lib/api.ts (bearer
auth, AuthError/ApiError, base URL param, allow401 for admin-only resume)
- src/api/format.ts: relative-time + status label/tone/color helpers
- src/state/ServerConfig.tsx: endpoint+token persisted to AsyncStorage
- src/screens/ConnectScreen.tsx: first-open config, validated via
/health then /projects
- src/state/AppState.tsx: data-driven store polling projects -> agents ->
checkmarks -> logs every 10s with per-item failure isolation; derives
fleet counts, waiting list, recent checkmarks, merged log; answer+resume,
spawn, kill mutations; 401 routes back to ConnectScreen
- screens render live data; detail meta is Started/Status/Tests/Build;
Pause removed (no endpoint); Kill confirms; log filters are per-project
- delete src/data/mock.ts
tsc clean; Hermes bundle builds (200).
Build the committed 2a interactive prototype from Handler Mobile.dc.html as
a real Expo app: six wired screens (Fleet, Agent detail, Answer, Spawn, Log,
Settings) with the exact state logic ported from the design's renderVals().
- Port Leeworks tokens (colors light/dark, typography, spacing, radii,
shadows) to typed RN values in src/theme.
- Reimplement the design-system components used by the screens (Button,
Badge, Icon, Switch, Select, TextField, segmented control, chip, tab bar).
- Shared store mirrors the prototype's single-screen navigation and the
Waiting -> Running flip when agt-7a1d is answered.
- Real OS status bar / home indicator (safe-area insets) replace the mock
phone chrome; dark mode follows system appearance.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PdF2hHVQ4UUBFPtpeMQ81o