Repository navigation
feat(limrun): change iOS settings on Limrun instances through simctl - #3209
Conversation
…e a local simulator
…cal clear-app-state and missing-app errors
|
Thanks for the Limrun iOS settings work. The settings flow looks right, but 4f43457 fails the Coverage eager-closure gate, and two more changes are needed before merge. The settings vocabulary now loads eagerly. The simctl settings plan now has two owners. Would that simplification also delete the five-member Not blocking, and you can take or leave these. The PR body mentions live Limrun iOS runs, but I could not find artifacts for them. After the restructure, please run these through the daemon CLI on a Limrun iOS instance and attach the output:
Please also run one local-simulator Coverage fails because of this PR: the gate names the |
…ded on demand platform-apple's simctl-settings now owns the appearance, permission and location plan for any simctl runner, including the refusal mapping. The local simulator passes runSimctlForDevice and the device id; Limrun passes its instance simctl and 'booted'. The Limrun settings body moves to ios-settings.ts behind an await import, and the composition root loads the Apple plan from the new platform-apple/simctl-settings subpath on first use, so neither the simctl facade nor the Limrun provider entry grows.
… from its subpath
|
Finished the review items at fa74c1d, as four commits on top of yours. Nothing was rewritten.
Live run on Limrun iOS and a local simulatorMinor points the independent review left open, for you to decide:
|
|
Reviewed at fa74c1d: the three findings from the 4f43457 review are fixed. There is now one owner for the settings plan, the eager-closure growth is gone (the Coverage gate passes), and the posted Limrun log covers the live path. All checks pass and there are no conflicts. Not blocking: |
Summary
Limrun iOS sessions refused every
settingschange. This servesappearance,permission,location, andclear-app-stateon both attached and created instances. Each sends the local simulator'ssimctlargv through the instance'ssimctlcall, withbootedfor the UDID, and a service the runtime refuses reportsUNSUPPORTED_OPERATIONas it does locally.clear-app-stateuses Limrun'ssoftReset(bundleId, { strategy: 'data' }), then terminates the app, because the local version edits the data container on the host. Limrun's reset relaunches the app once before that stop.Limrun only allows some
simctlcommands.keychainisn't one of them, soreset-keychainstays unsupported withwifi,airplane,faceid,touchid, andtext-size. Reading settings back stays unavailable.The
simctlsettings parsing moved toplatform-apple/simctl-settings.ts, and the composition root hands it to the Limrun runtime (ADR 0019). 17 files, mostly test fakes gaining the new dependency.Validation
Tested commit
4f43457:pnpm check:affected --run: 2043 tests pass. The new tests assert literal argv, call order, exact missing-app messages, and typed failures. Each fails under its mutation.app.clearState,device.setPermission,device.setAppearance, anddevice.setLocationpass. On main, all four fail with "settings is not supported".dark/toggle(read back), permission grant/deny/reset,all, photoslimited/full, location set/on/off, and clear-app-state pass;notificationsandreset-keychainrefuse as unsupported.