Skip to content

Prebuild only the apps that open as a process - #553

Merged
ymote merged 1 commit into
mainfrom
feat/prebuild-only-process-apps
Oct 21, 2026
Merged

ymote merged 1 commit into
mainfrom
feat/prebuild-only-process-apps

Conversation

@ymote

@ymote ymote commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

The checkout prebuild (#549) now builds only the apps that open as a process. It skips the linked modules the shell hosts in-process.

Why

The prebuild planned a release build for every listed catalog app. On macOS that includes Calculator, Clock, Notes, Reminders and Weather, which are linked modules: a launch opens them in-process (wm: launched clock as client 1 (in-process, clock)), so their process build never runs.

That made five wasted builds on a fresh checkout, or after a main update changes Makepad. They ran one at a time at background priority before the apps people open as processes got their turn. On 19 Oct, calculator alone took 3.8 min cold. The prebuild log listed 15 apps where 10 can use the build.

What changes

  • prebuild::start and prebuild::plan take an in_process predicate and leave out every app it accepts. The WM passes the rule launch_app_with_args uses to open an app in-process: apps.hosting(id) == Hosting::Module and a linked module for it.
  • An app switched to process hosting in Settings later in the session simply builds on its first open, as before the prebuild existed.
  • Docs: the prebuild.rs module docs.

Testing

  • macOS, from phone/: cargo test --locked --features mobile-apps -p octosense-shell --lib -- prebuild::tests clients::tests: 50 passed. The new test is an_app_hosted_in_process_is_not_prebuilt.
  • cargo check --locked -p octosense.
  • End to end on macOS, run with this branch merged with main 1663636 (Open a built app without waiting for cargo #552's prebuild.rs changes included): a hidden shell on a scratch profile logs prebuild: 10 catalog apps build in the background: reference, browser, files, terminal, task, sheets, finance, route, image, pdf. Before, it listed 15 apps, including calculator, clock, notes, reminders and weather; the same run logs those as linked modules. The merged tree also passed cargo test --locked --features mobile-apps -p octosense-shell --lib -- prebuild::tests clients::tests octosense::catalog::tests (56 passed) and cargo build --locked -p octosense.

It touches prebuild.rs in places #552 doesn't; whichever lands second merges main in.

🤖 Generated with Claude Code

The checkout prebuild planned a release build for every listed catalog
app, including the linked modules this shell opens in-process
(Calculator, Clock, Notes, Reminders and Weather on macOS): five builds
no launch would ever start, run before the apps people open as a
process got their turn on a fresh checkout. The plan now leaves out
every app a launch would host in-process, by the rule launch_app_with_args
applies (hosting Module and a linked module).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ymote
ymote merged commit 5f30ec2 into main Oct 21, 2026
6 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