Skip to content

Phone app: match the desktop again (chat source tabs, automations, runs, goals, agent screen) - #239

Merged
danielehrhardt merged 11 commits into
mainfrom
feat/mobile-desktop-parity-3
Oct 23, 2026
Merged

danielehrhardt merged 11 commits into
mainfrom
feat/mobile-desktop-parity-3

Conversation

@danielehrhardt

@danielehrhardt danielehrhardt commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Brings the phone app back in line with the desktop app.

Chats

  • Recent chats filter by who started them, like the desktop sidebar: Mine / Automations / Agents / All (Mine by default, remembered on the phone), above All / Running / Scheduled / Done with counts. Running turns amber when a chat waits for you. Source tabs get a dot for new replies or waiting questions.
  • The tabs use a segmented bar with a sliding pill (components/segmented-tabs.tsx), sized to their labels.
  • "Mark all read", unread dots and bold titles. Status lines as on the desktop ("Needs your answer · …", "Continues today at 18:00", "Paused", "Queued"). "From " on handed-over chats, "Heartbeat" chats, and a footer link to archived chats with the count of archived chats that still have work ahead.

Automations

  • Create, edit and delete scheduled and condition automations from the phone. The schedule builder has presets, custom cron, a preview and the random start window, with the same start-window limit as the core (croner).
  • New automation detail screen: trigger, next and last run, prompt, settings, Run now, recent events.
  • Follow-ups section (chats that continue on their own): run now, move, cancel.
  • App and webhook triggers stay on the computer.

Runs and spend

  • Run detail screen: status, origin, duration, cost, tokens, model, prompt, result and error. Actions: cancel, continue, open chat, dismiss failure.
  • Log viewer: steps, tool calls and results, raw JSON, copy and share.
  • Spend strip on Activity when spend tracking is on: Today / This week / This month, the monthly budget meter and the top agents.

Goals, away summary, agent screen, settings

  • Goals strip on the Tasks tab, with a sheet to add and edit goals (native date picker, quick dates, status, delete).
  • "While you were away" card on Home after two hours away, the desktop rule.
  • Agent screen: failed-run banner, recent runs, heartbeat card (Wake now), dreams card (Dream now, journal) with a read-only dream review screen, and New automation.
  • Settings: Easy / Professional interface mode, shared with the computer.

Core (phone scope)

  • mobile/scope.ts opens these endpoints to a paired phone:
    • /api/routines create, edit and delete (schedule and condition triggers only, never fillOnly), plus /api/routines/:id/events
    • /api/followups and /api/goals
    • /api/runs/:id and /api/runs/:id/log
    • /api/spend and /api/away
    • heartbeat and dreams: read, wake now, dream now (reverting a dream stays on the computer)
    • /api/conversations/read
    • the general.mode setting
  • An automation created or changed from a phone always runs fill-only (logins are filled in, raw secrets are never read), like agents created on a phone. Switching it on or off leaves that unchanged.
  • Phones never receive a webhook's secret URL or a run's local log path.
  • Dream details on a phone include only the MEMORY.md diff.
  • Tests: new phone-scope assertions, plus a test that phone-made and phone-edited automations come back fill-only.

Checks

  • apps/mobile: bun run typecheck.
  • packages/core: bun run typecheck, and bun test for mobile, automations, dreaming, artifacts, agents-routes and followups.
  • apps/desktop: typecheck.
  • Ran on the iPhone 17 simulator against a seeded test core: chats tabs and filters, creating an automation from the phone (checked on the core), Run now with its event, run detail and log, spend strip, agent screen, goals sheet, and the interface mode syncing both ways.

Not in this PR

  • Artifacts (new on main today) need a WebView in the phone app and a security review of the artifact bridge.
  • Vault, files, integrations, runners, SSH and VMs management stay on the computer by design.

@danielehrhardt
danielehrhardt merged commit fdc2145 into main Oct 23, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant