Skip to content

Phone: Calculator, Clock, Notes, Reminders and Weather ship in Home - #329

Merged
ymote merged 2 commits into
mainfrom
feat/phone-makepad-apps
Oct 4, 2026
Merged

ymote merged 2 commits into
mainfrom
feat/phone-makepad-apps

Conversation

@ymote

@ymote ymote commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

The five Makepad apps that became native apps in #309 were desktop only. They now ship in the phone shell by default too, like Rinx and App Hub: in-process modules, each with its own agent, and their read tools for the system agent.

Commits

  1. Shell: a style:<android|ios> test action. It switches the desk to that phone shell before the other test actions, so a later launch-<app id> opens the app at a phone's size on a desktop: an app's phone layout, checked over --remote without a device. shade: and page: switched style only as a side effect.
  2. Phone: the five apps ship in Home. native-apps.json sets shells.phone to "default" for them. tools/native_apps.py adds their features to Home's default and mobile-apps feature sets. The READMEs (phone and desktop, EN/zh-CN) name the apps on the phone.

A Calculator fix, carried as a runtime patch

On the phone, Calculator's keypad overflowed: three rows showed, and the operator column was cut off. Calculator had computed the compact layout for exactly the phone's size (392.7 × 791.3 points, measured on the device). Then the phone shell's style reapply after the module's first frame wrote the DSL's 85-point keys back. Calculator skipped re-laying out, because it had cached its last layout.

makepad #99 (open) makes it lay out again after every apply. Until the next makepad move it's a stacked runtime patch: tools/runtime-patches/makepad-calculator-restyle.patch, combined tree 47a8b47d. The tree was computed by applying the stack in a throwaway index; the same method reproduces the previous tree 7e7a9c13.

Checks

  • On a Redmi Note 12 (Android 15, HyperOS 2): a test build under its own package (dev.makepad.octosense.nativeapps, the installed Home untouched). Each app was launched with APP_CONFIG test_actions and screenshotted:
    • All five open in-process and open their agent link.
    • Clock, Notes and Reminders show their first-use agent sheet.
    • Calculator's full keypad fits with the patch.
    • Weather shows live conditions and the 10-day forecast.
  • Not checked on the device: tool calls to these apps. The system agent's path is the same code as on the desktop, where Makepad's apps as native apps: Calculator, Clock, Notes, Reminders and Weather with their own agents; Task as a process app #309 checked it. Android has no remote instrument to drive it.
  • python3 tools/native_apps.py --check and python3 tools/setup.py --check --cargo: pass. Tools tests: OK.
  • cargo test --locked -p octosense-shell: 802 passed. From phone/, cargo test --locked --features mobile-apps -p octosense-shell: 869 passed.
  • Local CI on the exact head runs before merging.

🤖 Generated with Claude Code

ymote and others added 2 commits October 4, 2026 16:23
Switches the desk to that phone shell before the other test actions,
so a later launch-<app id> opens an app at a phone's size on a
desktop: an app's phone layout, checked over --remote (/g, /snap)
without a device. shade: and page: switched style as a side effect of
something else; this one only switches.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The five Makepad apps that became native apps in #309 were desktop
only. Their native-apps.json entries now link them into the phone shell
by default as well (shells.phone "default"), like Rinx and App Hub:
in-process modules, each with its own agent and its read tools for the
system agent.

On a Redmi Note 12 (Android 15), Calculator laid its keypad out for the
phone and then lost it: the phone shell's style reapply after a hosted
module's first frame wrote the DSL's key sizes back, and Calculator
skipped the layout it thought it had applied. makepad #99 makes it lay
out again after every apply; until the next makepad move it is a
stacked runtime patch (makepad-calculator-restyle, tree 47a8b47d).

The phone and desktop READMEs name the apps on the phone.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ymote

ymote commented Oct 4, 2026

Copy link
Copy Markdown
Contributor Author

Local CI passed on 2af498e (tools/ci-local.sh --only desktop,phone,apps --linux-host, 19m56s, Darwin arm64; the ubuntu jobs on the Linux build host, Linux x86_64).

GitHub would run for this PR: desktop.yml, phone.yml, apps.yml. Merged on this local pass (macOS runner queue); GitHub CI runs on the merge commit on main.

Job Step Result Time
ci-local / drift The local mapping fits the workflows PASS -
desktop.yml / desktop Prepare the pinned framework sources PASS 1s
desktop.yml / desktop Compile the desktop with the shared runtime PASS 2m50s
desktop.yml / desktop One copy of every shell source PASS -
desktop.yml / desktop Desktop tools and scripts PASS 24s
desktop.yml / desktop One Makepad, App Hub, octos and Rinx in the locked graph PASS 3s
desktop.yml / desktop The native apps' generated places match native-apps.json PASS 0s
phone.yml / home Prepare pinned sources and the reviewed runtime patch PASS 0s
phone.yml / home Validate launcher icons and Apple asset catalogs PASS 10s
phone.yml / home Compile Home and its bundled modules PASS 1m49s
phone.yml / home Verify the single runtime graph PASS 2s
phone.yml / home The native apps' generated places match native-apps.json PASS 0s
phone.yml / home The pinned octos revision PASS 0s
phone.yml / home Build octos (unless cached) PASS -
phone.yml / home Build Home, App Hub admission and runtime policy tests PASS 2m20s
phone.yml / home Test Home, App Hub admission and runtime policy PASS 7m32s
phone.yml / home Two-lane scenario (real kernel, scripted model) PASS 41s
apps.yml / services (linux) python3 tools/setup.py PASS 0s
apps.yml / services (linux) Kernel service PASS 10s
apps.yml / services (linux) App peers PASS 23s
apps.yml / services (linux) AI providers config PASS 3s
apps.yml / services (linux) L0 in-card chat (sys.chat, host side) PASS 8s
apps.yml / services (linux) System toolbox (workflow templates) PASS 1m28s
apps.yml / kernel-security (linux) python3 tools/setup.py PASS 0s
apps.yml / kernel-security (linux) The pinned octos revision PASS -
apps.yml / kernel-security (linux) Build octos (unless cached) PASS -
apps.yml / kernel-security (linux) Real-kernel tests PASS 30s
apps.yml / apps python3 tools/setup.py PASS 8s
apps.yml / apps Host services (Mail, AI providers, News) PASS 1m15s
apps.yml / apps Shell AI services (crates/ai-host) PASS 1m52s
apps.yml / apps AppCard runtime setup safeguards PASS 0s
apps.yml / apps AppCard clippy (own crates; shared runtime compiles) PASS 31s
apps.yml / apps AppCard transport and store PASS 14s
apps.yml / apps One Makepad, App Hub, octos and Rinx in the locked graph PASS 3s
linux-host / sandbox (linux) python3 tools/setup.py PASS 0s
linux-host / sandbox (linux) Process sandbox on Linux (Landlock, seccomp) PASS 1m19s

Notes:

  • GitHub runs Python 3.12; this run used Python 3.9.6
  • GitHub runs Python 3.12; the Linux host used Python 3.14.4

@ymote
ymote merged commit 0afaed3 into main Oct 4, 2026
5 checks passed
ymote added a commit that referenced this pull request Oct 5, 2026
Five reviewers audited every file under docs/ against the code at
89e6c42. Each finding was confirmed in the code, git log or gh before
it was applied. A final review of this diff found 11 more problems,
which are fixed.

- Native agents (#309, #329, #330): ai-services, architecture and the
  walkthrough now describe:
  - the five Makepad apps' agents, through OctosPeer and serve_tools
    with no workspace, and their system_tools;
  - the Terminal's own_tools;
  - native peers living with the open window.
  They no longer say that Rinx is the only native agent or that
  nothing uses the peer link.
- terminal.run exists only while the Terminal runs as its own
  sandboxed process. Release packages ship no process-app binary, so
  there the Terminal runs in-process and Task is absent. Task is
  named as a process app.
- Admitted AGENT.md and skill text go with every turn. Mail has eight
  tools and an incoming-mail trigger. agents.provision and
  agents.status accept only os.mail.
- Smaller fixes: keys on Windows, the window-manager override path,
  phone glance cards, unsandboxed catalog apps, octos_peer frame
  names, TurnFrom (Person), the default build's octos-core, the
  packaged kernel, the octos child's runtime, and local-ci's merge
  scope, clone lock and rom.yml paths.
- ADRs get dated notes: 0002 is partly implemented; 0004 has three
  plan items open and notes on Task, the Terminal's agent, host tools
  and #238; 0005 has notes on app-contract 1.1.0; Home 0001 and 0002
  get notes. The ADR index statuses are updated, and the Photos and
  icons plans are marked done.
- Chinese parity: mail-agent-events regains its sequence diagram.
  ai-services, architecture, the walkthrough and the mail-events
  report regain their missing rows and details.
- <app> written outside code is escaped (GitHub stripped it).
  ai-services-processes.png and ai-services-cross-app-call.png show
  the shipped peer link and peer/input as solid, and mark the
  mail.send hop as planned.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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