Skip to content

fix: serialize iOS builds + stop non-TTY log spam#121

Merged
TomKalina merged 2 commits into
mainfrom
fix/concurrent-ios-build-and-nontty-spam
Jun 12, 2026
Merged

fix: serialize iOS builds + stop non-TTY log spam#121
TomKalina merged 2 commits into
mainfrom
fix/concurrent-ios-build-and-nontty-spam

Conversation

@TomKalina

Copy link
Copy Markdown
Owner

Summary

Two issues seen running maestro-parallel (full build) on a mixed device set with concurrentBuilds: true:

  1. iOS sim build crashed in 0.7s. ios-sim and ios-usb both run expo run:ios against the same Expo/Xcode project (.expo/prebuild, ios/, Pods, DerivedData). Running them concurrently races — an atomic-rename on .expo/prebuild/cached-packages.json throws ENOENT and fails the build. Fix: run the two iOS groups in one sequential lane; android still builds in parallel.
  2. Output flooded with hundreds of duplicate device rows. In non-TTY/piped mode setTitle emitted a line on every update, so live build progress (a line per gradle task / metro %) spammed. Fix: skip title-only emits in non-TTY; state transitions + sub-items still print.

Test plan

Screen: terminal
How to get there: deno task check && deno lint && deno fmt --check && deno task test
What to check: green, 64 tests.

Screen: an Expo project with iOS sim + device + Android, concurrentBuilds: true
How to get there: maestro-parallel (full build), select all
What to check: the iOS sim build no longer crashes with the .expo/prebuild rename error; the checklist doesn't flood with repeated rows.

TomKalina and others added 2 commits June 12, 2026 20:27
ios-sim and ios-usb both run `expo run:ios` against one shared Expo/Xcode
project (.expo/prebuild, ios/, Pods, DerivedData). Running them concurrently
(concurrentBuilds: true) races on that state — e.g. an atomic-rename crash on
.expo/prebuild/cached-packages.json fails the sim build in <1s. Run the two
iOS groups in one sequential lane; android still parallelises alongside.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
In forward-only (non-TTY / piped) mode, setTitle printed a line on every
update, so live build progress (one line per gradle task / metro %) flooded
the log with hundreds of duplicate device rows. Title-only changes are
in-place TTY decoration; skip them in non-TTY — state transitions
(start/done/fail) and sub-items still emit.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@TomKalina TomKalina marked this pull request as ready for review June 12, 2026 18:27
@TomKalina TomKalina merged commit 5804863 into main Jun 12, 2026
@TomKalina TomKalina deleted the fix/concurrent-ios-build-and-nontty-spam branch June 12, 2026 18:27
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