stim 1.17.0 → 1.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{android--GorydsK.mjs → android-B6rDWrTm.mjs} +15 -15
- package/dist/{budget-DM984mnd.mjs → budget-CUDz870h.mjs} +30 -9
- package/dist/{build-plan-CmQCoyT-.mjs → build-plan-BJSXzsCL.mjs} +14 -14
- package/dist/{idle-B2m-Ovod.mjs → build-progress-D0WkjCPd.mjs} +56 -183
- package/dist/{cli-Daxug5-K.mjs → cli-BLQqDGlX.mjs} +13 -13
- package/dist/cli.mjs +1 -1
- package/dist/{machines-C2XiNwh9.mjs → client-CxNotugx.mjs} +314 -303
- package/dist/{deps-DNWaQs4V.mjs → deps-CVxlsRFn.mjs} +1 -1
- package/dist/{device-capacity-D0GWHnTM.mjs → device-capacity-ZC4XSZ4R.mjs} +2 -2
- package/dist/device-host-worker.mjs +3 -3
- package/dist/{device-ios-Bc7vbGwl.mjs → device-ios-C2Um-XUR.mjs} +1 -1
- package/dist/{doctor-Cnk9d7Hm.mjs → doctor-BF_435OC.mjs} +14 -13
- package/dist/{gc-DxCL2A46.mjs → gc-BsWKa_-d.mjs} +9 -8
- package/dist/{gradle-D7-L2Th3.mjs → gradle-bsBRy6i9.mjs} +1 -1
- package/dist/{guide-DjrTQGik.mjs → guide-DC3n6-NH.mjs} +134 -110
- package/dist/{hosted-android-DwLS4Mse.mjs → hosted-android-DgU31wY3.mjs} +3 -3
- package/dist/{hosted-client-wk1W_CNW.mjs → hosted-client-CdSoH-G6.mjs} +4 -4
- package/dist/{hosted-ios-aMo7Cljf.mjs → hosted-ios-BTaVj4Jb.mjs} +1 -1
- package/dist/{hosted-logs-DqYmWtXc.mjs → hosted-logs-SxfBvSvc.mjs} +2 -2
- package/dist/{hosted-macos-dlHXEeF5.mjs → hosted-macos-CT9E3meL.mjs} +2 -2
- package/dist/{hosted-native-C9xJ9rpA.mjs → hosted-native-CZLOrMrN.mjs} +3 -3
- package/dist/idle-BXG__1BA.mjs +176 -0
- package/dist/{idle-shutdown-_3oOV1V_.mjs → idle-shutdown-IGyNV8Cr.mjs} +1 -1
- package/dist/{ios-DE6duQoz.mjs → ios-C7JuT1bI.mjs} +18 -18
- package/dist/{logs-DUoKlDoS.mjs → logs-DNxKcok9.mjs} +3 -3
- package/dist/{macos-32po3kUq.mjs → macos-BEs8cwKx.mjs} +66 -25
- package/dist/maintenance-run.mjs +2 -2
- package/dist/{metro-gateway-DmslUM30.mjs → metro-gateway-CHqK0p-a.mjs} +1 -1
- package/dist/{native-runtime-DhJI3IVQ.mjs → native-runtime-YhaSxP4v.mjs} +1 -1
- package/dist/offload-worker.mjs +5 -5
- package/dist/{preview-CxPRIEht.mjs → preview-C_JjkEy4.mjs} +1 -1
- package/dist/{reload-qZei6iWn.mjs → reload-byOjE3P4.mjs} +2 -2
- package/dist/settings.schema.json +84 -66
- package/dist/{start-BopZcr4n.mjs → start-BEP-XmEA.mjs} +1 -1
- package/dist/{start-uee1wWjY.mjs → start-BHIersSm.mjs} +1 -1
- package/dist/{status-dXX2JX1C.mjs → status-CqeWbIWW.mjs} +8 -8
- package/dist/{stop-BjizrQwv.mjs → stop-Cj01je8D.mjs} +3 -3
- package/dist/{stop-Cr1d8DSE.mjs → stop-D03prQnW.mjs} +1 -1
- package/dist/{stop-BCwvvs7F.mjs → stop-DOxwkH4j.mjs} +1 -1
- package/dist/supervisor-run.mjs +4 -4
- package/dist/{support-BJPgYCu-.mjs → support-BE-tbOP9.mjs} +4 -4
- package/dist/{support-F9-sr0Oi.mjs → support-WvD__tSV.mjs} +2 -2
- package/dist/{toolchain-CNIBTIOv.mjs → toolchain-CdrxgUeA.mjs} +1 -1
- package/dist/{web-exQtGkoc.mjs → web-DddUdJzr.mjs} +2 -2
- package/dist/{worktree-ZpZR3S1k.mjs → worktree-AK_m-d_m.mjs} +6 -6
- package/dist/{worktree-Dc98cE6_.mjs → worktree-CsAjSmEo.mjs} +1 -1
- package/package.json +5 -5
|
@@ -136,12 +136,12 @@ To learn whether the next build is a cache hit and how long it should take,
|
|
|
136
136
|
without building, run stim ios --plan (or stim android --plan); see stim guide
|
|
137
137
|
lifecycle builds.
|
|
138
138
|
|
|
139
|
-
Agents never set STIM_ACCESS_TICKET, run stim-server setup, edit
|
|
140
|
-
or hosting.* for the user, or approve requests. Read stim guide settings for
|
|
139
|
+
Agents never set STIM_ACCESS_TICKET, run stim-server setup, edit remote.*,
|
|
140
|
+
server.* or hosting.* for the user, or approve requests. Read stim guide settings for
|
|
141
141
|
Desktop access tickets and person-owned approval.
|
|
142
|
-
Read stim guide settings to select a
|
|
142
|
+
Read stim guide settings to select a remote Mac. Keep a requested named
|
|
143
143
|
placement when recovering STIM_OFFLOAD_REFUSED: report its reason and remedy.
|
|
144
|
-
When the user mentions slow builds, a busy Mac or wanting updates away from the desk, tell them about Stim Desktop > Settings >
|
|
144
|
+
When the user mentions slow builds, a busy Mac or wanting updates away from the desk, tell them about Stim Desktop > Settings > Remote Macs > Add or Phones > Pair a Phone; see stim guide settings.
|
|
145
145
|
|
|
146
146
|
Read stim guide lifecycle concurrency when a build waits on another workspace
|
|
147
147
|
or a build call times out. A native build can outlive a shell timeout; if the
|
|
@@ -661,8 +661,8 @@ leased until <time>" for each one.`,
|
|
|
661
661
|
looked up", which is a different fact from "nothing was found"
|
|
662
662
|
buildMachine selected auto, local or machine name, including cache hits
|
|
663
663
|
builtOn here or machine name when a build ran; absent otherwise
|
|
664
|
-
offloadedTo only on an app a
|
|
665
|
-
|
|
664
|
+
offloadedTo only on an app a remote Mac compiled: its
|
|
665
|
+
remote.machines entry (see \`guide settings\`). cacheHit is
|
|
666
666
|
false for it. The Android payload carries it too
|
|
667
667
|
offloadFallback only on an app compiled here after the run considered
|
|
668
668
|
offloading it: why it built here -- one reason per
|
|
@@ -811,7 +811,7 @@ leased until <time>" for each one.`,
|
|
|
811
811
|
sets its own CMake compiler launcher, or a Gradle run whose
|
|
812
812
|
native work was all up to date. None of the three is an
|
|
813
813
|
error, and this field is separate from cacheHit. On an
|
|
814
|
-
offloaded APK it is the
|
|
814
|
+
offloaded APK it is the remote Mac's ccache
|
|
815
815
|
logs the workspace log directory
|
|
816
816
|
agentDevice { stateDir }: absolute workspace agent-device state path
|
|
817
817
|
durationMs wall time for the whole run
|
|
@@ -911,18 +911,18 @@ leased until <time>" for each one.`,
|
|
|
911
911
|
android would reclaim, in the \`reclaimed\` shape without
|
|
912
912
|
freedMb, and is empty while under budget
|
|
913
913
|
deviceHosts one { machine, state, dnsName?, deviceId?, requestedAt?, host? }
|
|
914
|
-
per
|
|
914
|
+
per remote.machines entry. state is "approved", "pending",
|
|
915
915
|
"not-asked", "revoked", "node-changed", "not-on-tailnet",
|
|
916
916
|
"tailscale-off", "unreachable", "invalid",
|
|
917
917
|
"credentials-unavailable" or "busy". Tokens stay private.
|
|
918
918
|
Only --fix asks for access or forgets removed names.
|
|
919
|
-
|
|
920
|
-
|
|
919
|
+
A remote Mac approved for device hosting does not imply
|
|
920
|
+
build approval; see \`guide settings\`.
|
|
921
921
|
host is { name, screenRecording, accessibility }, present
|
|
922
922
|
only for approved machines whose worker reports it.
|
|
923
|
-
|
|
923
|
+
remoteMachines one { machine, state, dnsName?, deviceId?, requestedAt?,
|
|
924
924
|
offloadable?, reasons?, problems?, capacity?, host? } per
|
|
925
|
-
|
|
925
|
+
remote.machines entry, for its build approval; state is "approved", "pending", "not-asked",
|
|
926
926
|
"revoked" (revoked, or the request lapsed), "node-changed",
|
|
927
927
|
"not-on-tailnet", "tailscale-off", "unreachable" or
|
|
928
928
|
"invalid". host has the same shape and presence rule as in
|
|
@@ -945,7 +945,7 @@ leased until <time>" for each one.`,
|
|
|
945
945
|
optional fields
|
|
946
946
|
findings the diagnostic findings; a lower resolved Stim is a
|
|
947
947
|
costs-time finding with a PATH or installation remedy
|
|
948
|
-
offload-candidate is a note after 3+ successful local cold builds in 7 days average over 3 min, with no
|
|
948
|
+
offload-candidate is a note after 3+ successful local cold builds in 7 days average over 3 min, with no remote.machines and an online tailnet Mac; open Stim Desktop Settings > Remote Macs > Add
|
|
949
949
|
|
|
950
950
|
ON FAILURE
|
|
951
951
|
\`start\`, \`ios\`, \`android\` and \`web\` all print the error contract instead,
|
|
@@ -1658,8 +1658,8 @@ RULES
|
|
|
1658
1658
|
finished request, status "ok" or "failed", durationMs from the
|
|
1659
1659
|
request to the end of the response
|
|
1660
1660
|
|
|
1661
|
-
Each entry of environments also carries build: null, or the ios or
|
|
1662
|
-
run that holds this workspace's native-run.lock:
|
|
1661
|
+
Each entry of environments also carries build: null, or the ios, android or
|
|
1662
|
+
macos run that holds this workspace's native-run.lock:
|
|
1663
1663
|
|
|
1664
1664
|
build { platform, slot, state, phase, startedAt, phaseStartedAt,
|
|
1665
1665
|
outcome, outcomeKnown, cacheLookupOutcome?, expectedMs, expectedPhaseMs,
|
|
@@ -1684,6 +1684,11 @@ RULES
|
|
|
1684
1684
|
finishes during the build adds no device time. An
|
|
1685
1685
|
--eas-profile run has no cache lookup, so its outcome
|
|
1686
1686
|
stays the project's most recent one until install.
|
|
1687
|
+
A stim macos run enters only prepare, compile (SwiftPM,
|
|
1688
|
+
with detail), install (staging the bundle, or fetching
|
|
1689
|
+
it from a build machine) and launch. It has no cache
|
|
1690
|
+
lookup: outcome is null, plannedPhases is null, and
|
|
1691
|
+
builds.macos holds its finished runs and their phases.
|
|
1687
1692
|
startedAt when the run started; phaseStartedAt when its phase did
|
|
1688
1693
|
outcome "cold" after the local/provider lookups resolve a miss;
|
|
1689
1694
|
"hit" after a cached artifact is ready to reuse, including
|
|
@@ -1733,20 +1738,24 @@ RULES
|
|
|
1733
1738
|
reads: { step, unit, done, total, line, updatedAt }
|
|
1734
1739
|
step the tool's step: configure, compile, link, resources,
|
|
1735
1740
|
script, dex, package or sign; null before one is known
|
|
1736
|
-
unit "targets" for xcodebuild, "tasks" for Gradle
|
|
1741
|
+
unit "targets" for xcodebuild, "tasks" for Gradle, "steps" for
|
|
1742
|
+
SwiftPM (stim macos)
|
|
1737
1743
|
done xcodebuild: targets it finished (a target counts once
|
|
1738
1744
|
xcodebuild touches or signs its product, so an
|
|
1739
1745
|
incremental build can end below total); Gradle: tasks
|
|
1740
|
-
it reported so far
|
|
1746
|
+
it reported so far; SwiftPM: the done of its latest
|
|
1747
|
+
[done / total] line
|
|
1741
1748
|
total xcodebuild: targets in its dependency graph; Gradle: null,
|
|
1742
|
-
since its plain output gives no total
|
|
1749
|
+
since its plain output gives no total; SwiftPM: the
|
|
1750
|
+
total of its latest [done / total] line, which can grow
|
|
1751
|
+
as SwiftPM plans more of the build
|
|
1743
1752
|
line the latest compile, link or task line, paths shortened
|
|
1744
1753
|
to file names, at most 160 characters
|
|
1745
1754
|
updatedAt when the build last wrote it; the run writes it at most
|
|
1746
1755
|
every 2 seconds
|
|
1747
1756
|
placement where the build runs: "local", or while it is offloaded
|
|
1748
1757
|
{ host, phase, startedAt, phaseStartedAt }. host is the
|
|
1749
|
-
|
|
1758
|
+
remote.machines entry; phase is the step there: sync,
|
|
1750
1759
|
deps, prebuild, pods, build (xcodebuild or Gradle) or fetch;
|
|
1751
1760
|
startedAt is when the offload started and phaseStartedAt
|
|
1752
1761
|
when that step did. Meanwhile phase above follows it as
|
|
@@ -1800,7 +1809,7 @@ RULES
|
|
|
1800
1809
|
lookup, and create no lastBuild record or failed-run stats.
|
|
1801
1810
|
buildMachine selected auto, local or configured machine entry; always on new build records
|
|
1802
1811
|
builtOn here or machine name; absent when no build ran (cache/refusal)
|
|
1803
|
-
offloadedTo only on a run a
|
|
1812
|
+
offloadedTo only on a run a remote Mac compiled: its name
|
|
1804
1813
|
offloadFallback
|
|
1805
1814
|
only on a run that considered offloading and built here: one
|
|
1806
1815
|
reason per machine when none took the build, or why the
|
|
@@ -1833,7 +1842,7 @@ RULES
|
|
|
1833
1842
|
last 10 runs, newest first. Its newest entry that is not "interrupted" is
|
|
1834
1843
|
the run lastBuilds reports, once a run has recorded builds.
|
|
1835
1844
|
|
|
1836
|
-
builds { ios?, android? }, each a list of lastBuilds entries
|
|
1845
|
+
builds { ios?, android?, macos? }, each a list of lastBuilds entries
|
|
1837
1846
|
with { result, slot, configuration, cacheKey, phases }
|
|
1838
1847
|
result "succeeded", "failed", "cancelled" (Stim stopped the run
|
|
1839
1848
|
after an interrupt or \`stim stop\`) or "interrupted": its
|
|
@@ -2062,7 +2071,7 @@ RULES
|
|
|
2062
2071
|
A bucket carries runs, failed, hits, misses, coldRuns, coldRunMs, hitRuns,
|
|
2063
2072
|
hitRunMs, timeSavedMs, firstRunAt and lastRunAt, plus lastColdBuildMs and
|
|
2064
2073
|
lastPodsMs once the project has compiled or installed pods, and
|
|
2065
|
-
offloadedRuns, offloadedRunMs and lastOffloadHost once a
|
|
2074
|
+
offloadedRuns, offloadedRunMs and lastOffloadHost once a remote Mac
|
|
2066
2075
|
compiled one. An offloaded run is a miss but not a cold run, so the cold
|
|
2067
2076
|
average, time saved and build estimates stay local. Milliseconds are
|
|
2068
2077
|
integers.
|
|
@@ -2181,10 +2190,10 @@ BUILD PLACEMENT (\`offload\`)
|
|
|
2181
2190
|
decision, reason, machine?, buildMs?, slotWaitMs?, deviceSlotWaitMs?, localEstimateMs?, failed? }.
|
|
2182
2191
|
slotWaitMs and deviceSlotWaitMs are whole milliseconds waiting for build
|
|
2183
2192
|
and owned-device slots respectively, present only when positive.
|
|
2184
|
-
decision is "here", "offloaded", or "fell-back" (it tried a
|
|
2193
|
+
decision is "here", "offloaded", or "fell-back" (it tried a remote Mac
|
|
2185
2194
|
and built here). reason is why: the run's \`placement:\` reason, such as
|
|
2186
2195
|
"load 0.6/core, 1 of 3 build slots busy here" (auto keeps the build here
|
|
2187
|
-
while this Mac has room) or "
|
|
2196
|
+
while this Mac has room) or "remote.buildMode is off" (which prints no line),
|
|
2188
2197
|
or for a fallback the cause, prefixed by the machine it concerns, such as
|
|
2189
2198
|
"mini: no less loaded (load 1.2/core there, 0.6/core here)". buildMs is the compile here, or the offloaded build's
|
|
2190
2199
|
total (offer, sync, build and fetch); localEstimateMs is this project's
|
|
@@ -2996,7 +3005,7 @@ Branch on the code, never on the message.`,
|
|
|
2996
3005
|
logs prints a note on stderr and shows copied records. Update an older stim-server
|
|
2997
3006
|
on the host to enable handoff and native logs (hello features hosted-ios-data
|
|
2998
3007
|
for iOS and hosted-android-data for Android).
|
|
2999
|
-
A name outside
|
|
3008
|
+
A name outside remote.machines is STIM_BAD_ARG. Missing or pending hosting
|
|
3000
3009
|
approval keeps the doctor --fix and stim-server devices grant remedies.`
|
|
3001
3010
|
},
|
|
3002
3011
|
STIM_EAS_BUILD_MISSING: {
|
|
@@ -3295,10 +3304,10 @@ Branch on the code, never on the message.`,
|
|
|
3295
3304
|
works. See stim guide macos.`
|
|
3296
3305
|
},
|
|
3297
3306
|
STIM_OFFLOAD_REFUSED: {
|
|
3298
|
-
summary: "the selected
|
|
3307
|
+
summary: "the selected remote Mac cannot build this app",
|
|
3299
3308
|
body: () => `STIM_OFFLOAD_REFUSED
|
|
3300
3309
|
|
|
3301
|
-
A named --build
|
|
3310
|
+
A named --remote-build selection is strict. The message names the machine
|
|
3302
3311
|
and why it cannot take or finish the build: not configured or paired, approval
|
|
3303
3312
|
pending or denied, unreachable or changed pinned identity, incompatible
|
|
3304
3313
|
toolchain/runtime/CPU, low disk, busy, sync/build failure, artifact failure,
|
|
@@ -3310,12 +3319,12 @@ a build record or failed-run stats. A listed paired name with a cache hit needs
|
|
|
3310
3319
|
no build and does not contact the selected machine.
|
|
3311
3320
|
|
|
3312
3321
|
Run stim doctor --fix to ask for build access if not paired. Check
|
|
3313
|
-
stim settings get
|
|
3322
|
+
stim settings get remote.machines. A person on the worker finds the id with
|
|
3314
3323
|
stim-server devices and approves this Mac with stim-server devices grant <id> --build,
|
|
3315
3324
|
or runs stim-server setup on the worker with its node, ticket and expiry
|
|
3316
3325
|
(guide settings). Agents never run setup or approve requests.
|
|
3317
|
-
Rerun with --build
|
|
3318
|
-
--build
|
|
3326
|
+
Rerun with --remote-build auto for normal placement and local fallback, or
|
|
3327
|
+
--remote-build local to keep the build here.
|
|
3319
3328
|
`
|
|
3320
3329
|
},
|
|
3321
3330
|
STIM_WORKTREE_SERVICE: {
|
|
@@ -4799,7 +4808,7 @@ WAITING FOR A CHANGE
|
|
|
4799
4808
|
|
|
4800
4809
|
If Stim is not installed globally, replace stim with npx stim.
|
|
4801
4810
|
|
|
4802
|
-
stim settings set
|
|
4811
|
+
stim settings set remote.machines '["janics-mac-mini"]'
|
|
4803
4812
|
stim doctor --fix
|
|
4804
4813
|
stim doctor
|
|
4805
4814
|
stim android --remote janics-mac-mini --device-profile pixel_7
|
|
@@ -4821,7 +4830,7 @@ Unreadable android.host blocks only its slot; restore its recorded machine and
|
|
|
4821
4830
|
session from the host before stopping that slot.
|
|
4822
4831
|
|
|
4823
4832
|
--system-image and --device-profile select installed choices on the host.
|
|
4824
|
-
The build targets the offered ABI and --build
|
|
4833
|
+
The build targets the offered ABI and --remote-build independently selects a
|
|
4825
4834
|
compatible build worker. Stim builds before reserving, records the session as
|
|
4826
4835
|
soon as it exists, then delivers one App.apk. The emulator boots headless;
|
|
4827
4836
|
androidEmulatorApp is ignored with a note.
|
|
@@ -4941,7 +4950,7 @@ and show records already copied here.`
|
|
|
4941
4950
|
|
|
4942
4951
|
If Stim is not installed globally, replace stim with npx stim.
|
|
4943
4952
|
|
|
4944
|
-
stim settings set
|
|
4953
|
+
stim settings set remote.machines '["janics-mac-mini"]'
|
|
4945
4954
|
stim doctor --fix
|
|
4946
4955
|
# A person there approves: stim-server devices grant <id> --device-host
|
|
4947
4956
|
# Or runs stim-server setup on the worker with its client node, ticket and expiry.
|
|
@@ -4952,22 +4961,22 @@ If Stim is not installed globally, replace stim with npx stim.
|
|
|
4952
4961
|
stim stop
|
|
4953
4962
|
|
|
4954
4963
|
The same setup serves macos --remote. Approval is separate from build, read
|
|
4955
|
-
and phone control. Set ios.remote to the machine name for a
|
|
4964
|
+
and phone control. Set ios.remote to the machine name for a default (machine scope for the whole Mac);
|
|
4956
4965
|
no flag or setting runs here. eas and proxy keep their remote backend meanings.
|
|
4957
4966
|
--remote auto (or ios.remote = auto / android.remote = auto) stays here when
|
|
4958
4967
|
there is a free concurrency.maxDevices slot (0 means unlimited), no device
|
|
4959
4968
|
waiter ahead, normal host memory pressure, no budget shortfall,
|
|
4960
|
-
and 5-minute load per core below
|
|
4969
|
+
and 5-minute load per core below server.maxLoadPerCore. Without remote.machines,
|
|
4961
4970
|
auto is local. An unknown local device count also stays local; boot admission
|
|
4962
4971
|
still decides. The default without a flag or setting stays local.
|
|
4963
4972
|
|
|
4964
|
-
Otherwise Stim asks every approved
|
|
4973
|
+
Otherwise Stim asks every approved remote.machines host in parallel, with a
|
|
4965
4974
|
3-second probe timeout and this run's model/runtime or image/profile selectors.
|
|
4966
4975
|
A compatible choice, no declined reason, normal memory pressure and available
|
|
4967
4976
|
capacity are required. With a free local slot, a host must report a lower load;
|
|
4968
4977
|
with a full cap or a queue ahead, an admitted host with unknown load is allowed.
|
|
4969
|
-
Hosts rank by the build preference (flag >
|
|
4970
|
-
when it names a machine, then lowest load, most free memory and
|
|
4978
|
+
Hosts rank by the build preference (flag > STIM_REMOTE_BUILD > remote.build)
|
|
4979
|
+
when it names a machine, then lowest load, most free memory and remote.machines order. Automatic build
|
|
4971
4980
|
offload resolves later, after the device architecture is known.
|
|
4972
4981
|
|
|
4973
4982
|
When no host admits, auto runs here and may wait in the existing FIFO device
|
|
@@ -4990,7 +4999,7 @@ here or elsewhere. --device cannot use a hosting Mac, and --simulator-app
|
|
|
4990
4999
|
refuses. The host boots headless and ignores this Mac's iosSimulatorApp setting.
|
|
4991
5000
|
--slot, --device-type and --runtime select the hosted simulator; --scheme,
|
|
4992
5001
|
--configuration and --eas-profile select the app as usual. The build targets
|
|
4993
|
-
the offered simulator architecture, not this Mac's. --build
|
|
5002
|
+
the offered simulator architecture, not this Mac's. --remote-build remains
|
|
4994
5003
|
independent and selects a compatible build worker for a Debug cache miss.
|
|
4995
5004
|
|
|
4996
5005
|
The host's own owned devices count toward concurrency.maxDevices.
|
|
@@ -6307,8 +6316,8 @@ OPT-IN CONCURRENCY LIMITS (UNLIMITED BY DEFAULT)
|
|
|
6307
6316
|
summary: "every flag per command, Android variants and flavors, the per-run simulator model, runtime and system image",
|
|
6308
6317
|
body: () => `THE OPTION SURFACE, IN FULL
|
|
6309
6318
|
start --json --wait <seconds> --remote --reset-cache
|
|
6310
|
-
ios --build
|
|
6311
|
-
android --build
|
|
6319
|
+
ios --remote-build <auto|local|name> --slot <name> --json --plan --no-metro-check --no-build-cache --scheme <name> --configuration <name> --device-type <name> --runtime <version> --simulator-app <xcode|siniulator|stim-desktop> --device [udid] --wait <seconds> --no-wait --remote <eas|proxy|auto|machine>
|
|
6320
|
+
android --remote-build <auto|local|name> --slot <name> --json --plan --no-metro-check --no-build-cache --variant <name> --system-image <id> --device-profile <id> --device [serial] --wait <seconds> --no-wait --remote <proxy|eas>
|
|
6312
6321
|
ios/android --wait bounds owned-device slot waits (default 600s), or physical
|
|
6313
6322
|
leases with --device (default 60s). Remote targets do not join this local
|
|
6314
6323
|
slot queue. --no-wait refuses a full/queued owned
|
|
@@ -7186,7 +7195,10 @@ to stats.json.corrupt-<unix ms> and starts a new one.`,
|
|
|
7186
7195
|
stim gc --delete --cache archived-logs delete logs, keep records
|
|
7187
7196
|
stim gc --delete --cache archived-recordings delete recordings, keep records
|
|
7188
7197
|
stim gc --delete --cache archived-agent delete agent actions, keep records
|
|
7189
|
-
|
|
7198
|
+
stim gc --delete --cache archived-logs:<id> one kind of one archive, keep its record
|
|
7199
|
+
(archived-recordings:<id> and archived-agent:<id> likewise; they ignore --older-than;
|
|
7200
|
+
an unknown id refuses with STIM_BAD_ARG)
|
|
7201
|
+
Per-kind selectors without an id also accept --older-than, measured from removedAt.
|
|
7190
7202
|
Normal gc, --cache all, --worktrees and unscoped --older-than exclude archives.
|
|
7191
7203
|
Archive scopes report abandoned staging directories and delete only those
|
|
7192
7204
|
with no live or unresolved claim. An unresolved claim names its removal command.
|
|
@@ -7638,7 +7650,7 @@ THE ONE CASE GC WILL NOT REAP
|
|
|
7638
7650
|
check and the stop fails and must be run again, so gc re-checks the build
|
|
7639
7651
|
locks and the daemon's status right before each stop. Nothing is stopped while an Android build lock, or a build slot no
|
|
7640
7652
|
iOS build holds, is live or unresolved. stim-server stops the daemons of
|
|
7641
|
-
offloaded builds (
|
|
7653
|
+
offloaded builds (server.gradleDaemonIdleMinutes, \`guide settings\`), so
|
|
7642
7654
|
while it runs gc keeps those. A daemon whose home, distribution or status cannot be read is
|
|
7643
7655
|
kept. Gradle stops an idle daemon itself after 3 hours and Kotlin after 2
|
|
7644
7656
|
hours by default.
|
|
@@ -7900,7 +7912,7 @@ KEYS STIM READS
|
|
|
7900
7912
|
a JS-bundle swap on cache hits. The \`--configuration\`
|
|
7901
7913
|
flag overrides this per invocation. Unset means Debug.
|
|
7902
7914
|
ios.remote "proxy", "eas", or a named approved Mac from
|
|
7903
|
-
|
|
7915
|
+
remote.machines, with the same meaning as --remote.
|
|
7904
7916
|
"auto" places on an approved Mac when this Mac is full or
|
|
7905
7917
|
busy. Unset runs here. See lifecycle hosted-ios.
|
|
7906
7918
|
ios.simslimProfile a SimSlim JSON profile under the app directory,
|
|
@@ -8043,7 +8055,7 @@ ${ANDROID_AVD_CONFIG_HELP.map((line) => ` ${line}`).joi
|
|
|
8043
8055
|
bare string is used as the literal password. Unset
|
|
8044
8056
|
means the debug keystore's fixed "android".
|
|
8045
8057
|
android.remote "proxy", "eas", or a named approved Mac in
|
|
8046
|
-
|
|
8058
|
+
remote.machines; "auto" places on an approved Mac when
|
|
8047
8059
|
this Mac is full or busy. Unset runs here.
|
|
8048
8060
|
See lifecycle hosted-android.
|
|
8049
8061
|
metro.tunnel selects how a remote device reaches this workspace's
|
|
@@ -8368,31 +8380,37 @@ wants a pool says so with the variable.
|
|
|
8368
8380
|
DESKTOP ACCESS TICKETS
|
|
8369
8381
|
Stim Desktop's Add wizard sets STIM_ACCESS_TICKET for one \`doctor --fix\`
|
|
8370
8382
|
run. Agents never set it, never run \`stim-server setup\`, never edit
|
|
8371
|
-
\`
|
|
8383
|
+
\`remote.*\`, \`server.*\` or \`hosting.*\` for the user, and never approve requests.
|
|
8372
8384
|
Stim sends the ticket (43 base64url characters) only in build and device-host access
|
|
8373
8385
|
requests and stores only its SHA-256 ticketHash. With --fix, a still-pending
|
|
8374
8386
|
request is replaced when its ticketHash is missing or differs from the current
|
|
8375
8387
|
ticket; matching hashes and approved credentials are preserved.
|
|
8376
|
-
Approved doctor entries under
|
|
8388
|
+
Approved doctor entries under remoteMachines and deviceHosts include host
|
|
8377
8389
|
{ name, screenRecording, accessibility } when the worker reports it.
|
|
8378
8390
|
|
|
8379
|
-
|
|
8391
|
+
REMOTE MACS AND PHONE APP
|
|
8380
8392
|
When the user mentions slow builds, a busy Mac, a full disk or device limit, or
|
|
8381
8393
|
wanting updates away from the desk, tell them about Stim Desktop > Settings >
|
|
8382
|
-
|
|
8394
|
+
Remote Macs > Add (a Mac on the tailnet that builds or hosts simulators for
|
|
8383
8395
|
this one) or Phones > Pair a Phone (the Stim phone app). Stim Desktop also
|
|
8384
8396
|
suggests these itself, at most once a day and never during a build. Agents only
|
|
8385
|
-
tell the user: they never run \`stim-server setup\`, never edit \`
|
|
8386
|
-
\`hosting.*\` for the user, and never approve requests.
|
|
8397
|
+
tell the user: they never run \`stim-server setup\`, never edit \`remote.*\`,
|
|
8398
|
+
\`server.*\` or \`hosting.*\` for the user, and never approve requests.
|
|
8387
8399
|
|
|
8388
|
-
|
|
8389
|
-
\`
|
|
8390
|
-
by MagicDNS name with an optional serve port (default
|
|
8391
|
-
|
|
8400
|
+
REMOTE MACS ARE MACHINE-LEVEL
|
|
8401
|
+
\`remote.machines\` names the remote Macs this Mac may build on and host owned
|
|
8402
|
+
simulator sessions on, by MagicDNS name with an optional serve port (default
|
|
8403
|
+
7443). Name each node and port once:
|
|
8392
8404
|
|
|
8393
|
-
stim settings set
|
|
8405
|
+
stim settings set remote.machines '["janics-mac-mini"]'
|
|
8394
8406
|
stim doctor --fix
|
|
8395
8407
|
|
|
8408
|
+
A remote Mac is used for a capability only after it grants that approval. Build
|
|
8409
|
+
and device-host approvals are separate: a Mac in the list that never granted
|
|
8410
|
+
one is not an error, it is not used for that capability, and doctor reports
|
|
8411
|
+
it plainly.
|
|
8412
|
+
|
|
8413
|
+
DEVICE HOSTING
|
|
8396
8414
|
Only \`doctor --fix\` asks for device-host access. A person on that Mac
|
|
8397
8415
|
approves the printed id with \`stim-server devices grant <id> --device-host\`.
|
|
8398
8416
|
A person can also run \`stim-server setup\` on the worker: one node, one ticket,
|
|
@@ -8404,7 +8422,7 @@ unless every chosen capability already has a matching approval. Desktop reuse
|
|
|
8404
8422
|
requires an existing tailnet route. Ctrl-C or SIGTERM completes the journal,
|
|
8405
8423
|
releases the setup claim and exits 1; a typed N also exits 1. Hosting grants
|
|
8406
8424
|
include no read, control or build capability.
|
|
8407
|
-
On
|
|
8425
|
+
On a remote Mac that hosts, Stim Desktop > Settings > Phones > Hosted here lists the
|
|
8408
8426
|
simulators, emulators and apps approved Macs run there, below Device hosting
|
|
8409
8427
|
approvals. Stop asks for confirmation, ends the session and deletes or parks
|
|
8410
8428
|
its device on that Mac. Parked sessions remain listed without Stop. The list
|
|
@@ -8413,7 +8431,8 @@ support it.
|
|
|
8413
8431
|
$STIM_HOME/device-host-machines.json stores a private token and pinned tailnet
|
|
8414
8432
|
node. Doctor never prints the token; it reports each machine under deviceHosts
|
|
8415
8433
|
in JSON. Desktop uses placement set by config or agents, such as
|
|
8416
|
-
stim settings set ios.remote auto --scope
|
|
8434
|
+
stim settings set ios.remote auto --scope machine (or android.remote; workspace,
|
|
8435
|
+
repo and committed scopes override the machine default),
|
|
8417
8436
|
or per run stim ios --remote auto / stim ios --remote <machine>.
|
|
8418
8437
|
New Desktop runs pass no --remote flag; recorded hosted sessions keep their
|
|
8419
8438
|
machine until stim stop. Only devices outside this Mac show "on <machine>"
|
|
@@ -8422,19 +8441,19 @@ as hover text.
|
|
|
8422
8441
|
Stim sends tokens only to the pinned node's own tailnet address,
|
|
8423
8442
|
with its MagicDNS name for TLS and Host routing. A changed node refuses
|
|
8424
8443
|
access, and uncertain replies or unreadable credentials preserve the pin.
|
|
8425
|
-
|
|
8426
|
-
\`doctor --fix\` forgets entries removed from
|
|
8444
|
+
An invalid remote.machines setting reports an error and preserves every saved credential.
|
|
8445
|
+
\`doctor --fix\` forgets entries removed from remote.machines; remove a
|
|
8427
8446
|
replaced machine, run it, then re-add the name to request a new approval.
|
|
8428
8447
|
A definite revoked or lapsed request can be requested again with --fix.
|
|
8429
8448
|
An in-progress approval inspection reports busy rather than replacing its
|
|
8430
8449
|
pending token. \`stim macos --remote <machine>\` runs a macOS app on an
|
|
8431
|
-
approved
|
|
8432
|
-
place sessions on these
|
|
8450
|
+
approved remote Mac (stim guide macos); \`ios\` and \`android\` do not yet
|
|
8451
|
+
place sessions on these Macs. To view or control a hosted macOS app, a person
|
|
8433
8452
|
on that Mac approves Screen & System Audio Recording and Device Control and Data
|
|
8434
8453
|
Access (Accessibility on macOS 26 and earlier) for Stim Host, the app
|
|
8435
8454
|
\`stim-server service install\` runs the server under.
|
|
8436
8455
|
|
|
8437
|
-
On a
|
|
8456
|
+
On a remote Mac that hosts, \`hosting.agentDriver\` names the tool it starts so a
|
|
8438
8457
|
client's coding agent can drive the macOS apps, iOS simulators and Android emulators it hosts for that client.
|
|
8439
8458
|
The default, \`none\`, starts nothing. For macOS, \`agent-device\` starts its
|
|
8440
8459
|
shared daemon only when that agent-device can lease a single app (its
|
|
@@ -8448,13 +8467,11 @@ uses one daemon per emulator, pinned by its serial policy, with agent-device
|
|
|
8448
8467
|
hosted-ios. \`doctor\` on that Mac notes an installed hosted app that runs while
|
|
8449
8468
|
the setting is \`none\`.
|
|
8450
8469
|
|
|
8451
|
-
|
|
8452
|
-
\`
|
|
8453
|
-
by MagicDNS name, each optionally with the port of its \`tailscale serve\`
|
|
8454
|
-
route (default 7443):
|
|
8470
|
+
REMOTE BUILDS
|
|
8471
|
+
The same \`remote.machines\` list names the Macs that may build for this one:
|
|
8455
8472
|
|
|
8456
8473
|
{
|
|
8457
|
-
"
|
|
8474
|
+
"remote": { "machines": ["janics-mac-mini"] }
|
|
8458
8475
|
}
|
|
8459
8476
|
|
|
8460
8477
|
\`doctor --fix\`, run in any app directory, asks each named Mac for build access and pins its tailnet
|
|
@@ -8465,27 +8482,27 @@ ticket and expiry, under the approval rule above. Build never includes read
|
|
|
8465
8482
|
or control.
|
|
8466
8483
|
Stim connects to a named Mac only while its name still belongs to the pinned
|
|
8467
8484
|
node and never sends the token to another node. \`doctor\` reports each
|
|
8468
|
-
|
|
8485
|
+
remote Mac's build pairing state and, for an approved one, asks it for one build
|
|
8469
8486
|
offer and lists every reason it would not take this app's iOS build: no
|
|
8470
8487
|
answer, another Stim build, CPU, Xcode, simulator SDK or CocoaPods, no
|
|
8471
8488
|
Bundler for an app whose Gemfile.lock pins CocoaPods, no iPhone simulator on
|
|
8472
8489
|
the runtime \`stim ios\` builds for here, low disk, or busy. With Package.swift
|
|
8473
8490
|
and no platform selection on a Mac, it also checks the macOS Xcode and SDK.
|
|
8474
8491
|
|
|
8475
|
-
\`
|
|
8476
|
-
\`ios\`, \`android\` and \`macos\`. \`--build
|
|
8477
|
-
overrides
|
|
8492
|
+
\`remote.build\` (machine scope, default auto) selects placement for
|
|
8493
|
+
\`ios\`, \`android\` and \`macos\`. \`--remote-build <auto|local|name>\`
|
|
8494
|
+
overrides STIM_REMOTE_BUILD, which overrides the setting. A blank environment
|
|
8478
8495
|
value is unset. Trimmed auto/local are case-insensitive. Machine names match
|
|
8479
8496
|
configured names case-insensitively, with port 7443 when omitted; reports use
|
|
8480
8497
|
the configured entry.
|
|
8481
8498
|
|
|
8482
|
-
auto follows
|
|
8499
|
+
auto follows remote.buildMode and keeps its local fallback behavior
|
|
8483
8500
|
local builds only on this Mac for this invocation
|
|
8484
|
-
name requires a matching entry in
|
|
8485
|
-
approved; ignores
|
|
8501
|
+
name requires a matching entry in remote.machines, already paired and
|
|
8502
|
+
approved for builds; ignores remote.buildMode and this Mac's load/slot gating
|
|
8486
8503
|
|
|
8487
|
-
A name never prompts for pairing, tries another
|
|
8488
|
-
Any refusal or failure is STIM_OFFLOAD_REFUSED with the
|
|
8504
|
+
A name never prompts for pairing, tries another remote Mac or falls back here.
|
|
8505
|
+
Any refusal or failure is STIM_OFFLOAD_REFUSED with the remote Mac and reason.
|
|
8489
8506
|
Device, Release/non-Debug, --remote, Android CAS compiler builds, builds with
|
|
8490
8507
|
the build cache off, and an unknown simulator runtime cannot build there and
|
|
8491
8508
|
refuse on a cache miss. Invalid values, unlisted names and unpaired names refuse
|
|
@@ -8498,39 +8515,39 @@ starts no local xcodebuild, Gradle or SwiftPM compile.
|
|
|
8498
8515
|
Run stim doctor --fix to ask for build access if not paired. A person on the
|
|
8499
8516
|
worker finds the id with stim-server devices and approves it with
|
|
8500
8517
|
stim-server devices grant <id> --build, or runs stim-server setup there with
|
|
8501
|
-
the client node, ticket and expiry. Check stim settings get
|
|
8502
|
-
or rerun with --build
|
|
8518
|
+
the client node, ticket and expiry. Check stim settings get remote.machines,
|
|
8519
|
+
or rerun with --remote-build auto or --remote-build local. Ctrl-C cancels
|
|
8503
8520
|
the remote build without a local xcodebuild, Gradle or SwiftPM compile.
|
|
8504
8521
|
|
|
8505
8522
|
Copyable agent prompt:
|
|
8506
|
-
Run stim ios --build
|
|
8523
|
+
Run stim ios --remote-build janics-mac-mini. If it refuses, report the
|
|
8507
8524
|
STIM_OFFLOAD_REFUSED reason and remedy; do not retry with another placement.
|
|
8508
8525
|
|
|
8509
|
-
With
|
|
8526
|
+
With remote.build auto, \`remote.buildMode\` decides where an iOS simulator Debug build or an Android
|
|
8510
8527
|
emulator debug build or a stim macos SwiftPM Debug build compiles:
|
|
8511
8528
|
|
|
8512
8529
|
auto (default) here while this Mac has capacity: a free
|
|
8513
8530
|
\`concurrency.maxBuilds\` slot (always, with no build limit) and a
|
|
8514
|
-
load per core under \`
|
|
8515
|
-
|
|
8516
|
-
while every slot here is busy, any
|
|
8517
|
-
the load is high,
|
|
8518
|
-
Mac's. A
|
|
8531
|
+
load per core under \`server.maxLoadPerCore\`. Otherwise on a
|
|
8532
|
+
remote Mac that accepts the build and is expected to be faster:
|
|
8533
|
+
while every slot here is busy, any remote Mac that accepts; while only
|
|
8534
|
+
the load is high, one whose load per core is lower than this
|
|
8535
|
+
Mac's. A Mac too old to report its load counts only while every
|
|
8519
8536
|
slot here is busy.
|
|
8520
|
-
force on a
|
|
8537
|
+
force on a remote Mac whenever one accepts it
|
|
8521
8538
|
off always here
|
|
8522
8539
|
|
|
8523
8540
|
Load per core is the 5-minute load average divided by the CPU count; a Mac's
|
|
8524
8541
|
native builds are its Stim runs in prebuild, pods or compile on that Mac, not
|
|
8525
8542
|
the ones it offloaded.
|
|
8526
|
-
\`
|
|
8543
|
+
\`server.maxLoadPerCore\` (default 2) is also the busy threshold for
|
|
8527
8544
|
automatic iOS and Android device placement. It is the load per core at which a Mac
|
|
8528
|
-
counts as saturated, both here and on a
|
|
8545
|
+
counts as saturated, both here and on a remote Mac.
|
|
8529
8546
|
|
|
8530
|
-
|
|
8547
|
+
STIM_REMOTE_BUILD_MODE overrides it for one command. Device, Release and
|
|
8531
8548
|
\`--remote eas|proxy\` builds, Android builds with the Apple Clang CAS compiler cache,
|
|
8532
8549
|
and iOS/Android runs with the build cache off, always build here. Hosted iOS
|
|
8533
|
-
Debug builds can use a separate --build
|
|
8550
|
+
Debug builds can use a separate --remote-build, targeting the hosting Mac's
|
|
8534
8551
|
architecture and runtime.
|
|
8535
8552
|
macOS uses matching Xcode and macOS SDK, with a per-client SwiftPM dependency
|
|
8536
8553
|
cache on the worker. It skips JavaScript dependencies, prebuild and pods; see
|
|
@@ -8577,27 +8594,27 @@ An offloaded app lands only in this Mac's build cache, not in a remote cache
|
|
|
8577
8594
|
provider. A project whose xcodebuild changes its own fingerprinted inputs
|
|
8578
8595
|
fails the offload fingerprint check: auto builds here; a named placement refuses.
|
|
8579
8596
|
|
|
8580
|
-
On
|
|
8597
|
+
On a remote Mac that builds for others, stim-server keeps each client's checkouts, dependencies,
|
|
8581
8598
|
DerivedData, compilation cache, ccache and Gradle home under
|
|
8582
|
-
\`
|
|
8599
|
+
\`server.workerRoot\` (absolute; default $STIM_HOME/build-worker), one area
|
|
8583
8600
|
and Stim home per client and repository, and one Gradle home per client. It
|
|
8584
8601
|
runs one offloaded build at a time. It declines a build while that volume has
|
|
8585
8602
|
less than 10 GB free, while its own native builds and the offloaded one fill
|
|
8586
8603
|
its \`concurrency.maxBuilds\`, or while its load per core is at or above its
|
|
8587
|
-
\`
|
|
8604
|
+
\`server.maxLoadPerCore\`, and reports the reason in its offer. It boots and
|
|
8588
8605
|
installs nothing. While an offloaded build runs there, it holds one of that
|
|
8589
8606
|
Mac's \`concurrency.maxBuilds\` slots, so a local Stim build there waits for it
|
|
8590
8607
|
and counts it as busy; the slot is freed when the build ends, is cancelled or
|
|
8591
8608
|
its process is gone. Android builds there run on the JDK in stim-server's
|
|
8592
8609
|
JAVA_HOME (else the macOS default JDK) with the SDK in its ANDROID_HOME (else
|
|
8593
8610
|
~/Library/Android/sdk). The client's Gradle daemon stays warm there for
|
|
8594
|
-
\`
|
|
8611
|
+
\`server.gradleDaemonIdleMinutes\` (default 30; 0 stops it when each build
|
|
8595
8612
|
ends; a new value applies from the next daemon) and never holds a build
|
|
8596
8613
|
slot. While none of the client's builds runs, stim-server stops it sooner
|
|
8597
8614
|
when a build is cancelled, the client is revoked, or the machine has less
|
|
8598
8615
|
than 2 GB of memory available, and deleting the client's directory under the
|
|
8599
8616
|
worker root stops it too.
|
|
8600
|
-
\`stim-server service install [--serve]\` on the
|
|
8617
|
+
\`stim-server service install [--serve]\` on the remote Mac keeps stim-server
|
|
8601
8618
|
running as a login LaunchAgent; \`--path-prepend <dir>\` and \`--env KEY=VALUE\`
|
|
8602
8619
|
pin a PATH entry or variable such as a private CocoaPods that stim-server's
|
|
8603
8620
|
login-shell environment would otherwise replace.
|
|
@@ -9120,7 +9137,7 @@ var macos_default = {
|
|
|
9120
9137
|
|
|
9121
9138
|
If Stim is not installed globally, replace stim with npx stim.
|
|
9122
9139
|
|
|
9123
|
-
ios --remote <machine> shares
|
|
9140
|
+
ios --remote <machine> shares remote.machines and its separate device-host
|
|
9124
9141
|
approval. Read guide lifecycle hosted-ios for simulator placement and Metro.
|
|
9125
9142
|
|
|
9126
9143
|
Run from the directory containing Package.swift. This prototype builds one
|
|
@@ -9172,6 +9189,13 @@ Stim Desktop honors. An app that activates itself at launch still takes focus.
|
|
|
9172
9189
|
Hosted launches (macos --remote) do not set it.
|
|
9173
9190
|
macOS artifacts are not cached. This prototype has no --plan, --slot, or reload command.
|
|
9174
9191
|
A failed build records its error and compiler output without launching an app.
|
|
9192
|
+
While it runs, stim status --json reports it as environments[].build with
|
|
9193
|
+
platform "macos": phase prepare, compile, install, then launch, and during
|
|
9194
|
+
compile detail.unit "steps" with SwiftPM's [done / total] counts (fetching and
|
|
9195
|
+
planning are detail.step "configure"). It has no cache lookup, so outcome and
|
|
9196
|
+
plannedPhases are null; finished runs and their phase times are in
|
|
9197
|
+
environments[].builds.macos. An offloaded build reports the worker's steps the
|
|
9198
|
+
same way.
|
|
9175
9199
|
Runtime stdout and stderr become client records; build output becomes build
|
|
9176
9200
|
records, all with platform "macos". Unexpected app exits are error records.
|
|
9177
9201
|
Stim runs the app with NSUnbufferedIO=YES, so Swift print output arrives per
|
|
@@ -9179,16 +9203,16 @@ line instead of when the app exits.
|
|
|
9179
9203
|
|
|
9180
9204
|
BUILD OFFLOAD
|
|
9181
9205
|
|
|
9182
|
-
--build
|
|
9183
|
-
machine setting
|
|
9184
|
-
requires the matching configured and paired
|
|
9206
|
+
--remote-build <auto|local|name> overrides STIM_REMOTE_BUILD and the
|
|
9207
|
+
machine setting remote.build (default auto). local builds here; a name
|
|
9208
|
+
requires the matching configured and paired remote Mac, ignoring remote.buildMode
|
|
9185
9209
|
and this Mac's capacity. Any failure is STIM_OFFLOAD_REFUSED without a local xcodebuild, Gradle or
|
|
9186
9210
|
SwiftPM compile or another machine. Invalid, unlisted or unpaired selections
|
|
9187
9211
|
refuse before stopping the app or changing its build record. See stim guide errors STIM_OFFLOAD_REFUSED.
|
|
9188
9212
|
|
|
9189
|
-
With
|
|
9213
|
+
With remote.build auto, remote.buildMode places these SwiftPM Debug builds:
|
|
9190
9214
|
auto builds here while this Mac has capacity, force uses an approved build
|
|
9191
|
-
machine when one accepts, and off always builds here. Configure
|
|
9215
|
+
machine when one accepts, and off always builds here. Configure remote.machines
|
|
9192
9216
|
and approve build access as described in stim guide settings. The worker needs
|
|
9193
9217
|
matching Stim, CPU architecture, Xcode and macOS SDK, plus network access to
|
|
9194
9218
|
fetch package dependencies the first time. It keeps SwiftPM dependencies in a
|
|
@@ -9362,15 +9386,15 @@ used.
|
|
|
9362
9386
|
ON ANOTHER MAC
|
|
9363
9387
|
|
|
9364
9388
|
stim macos --remote <machine> builds the Debug app on this Mac and runs it on an
|
|
9365
|
-
approved
|
|
9366
|
-
in
|
|
9389
|
+
approved remote Mac over the tailnet, without SSH. The machine must be listed
|
|
9390
|
+
in remote.machines and approved: stim doctor --fix asks it, a person on that
|
|
9367
9391
|
Mac runs stim-server devices grant <id> --device-host or stim-server setup
|
|
9368
9392
|
with that client node, ticket and expiry (guide settings), and stim doctor then
|
|
9369
9393
|
records the approval. Stim connects only to the machine's pinned tailnet node.
|
|
9370
9394
|
A refusal or an unreachable host fails the command; it never launches here
|
|
9371
9395
|
instead.
|
|
9372
9396
|
|
|
9373
|
-
The --remote value is a
|
|
9397
|
+
The --remote value is a remote Mac name from remote.machines. macOS refuses
|
|
9374
9398
|
eas and proxy because it has neither backend. It also refuses auto until
|
|
9375
9399
|
automatic placement ships. These reserved names are case-insensitive and
|
|
9376
9400
|
trimmed; they refuse with STIM_BAD_ARG before state access or a connection.
|
|
@@ -9765,7 +9789,7 @@ const TUTORIAL_STEPS = [
|
|
|
9765
9789
|
optional: true,
|
|
9766
9790
|
prompt: TUTORIAL_PROMPTS.machine,
|
|
9767
9791
|
section: "machine",
|
|
9768
|
-
manual: ["cd \"{tour}\"", "stim ios --build
|
|
9792
|
+
manual: ["cd \"{tour}\"", "stim ios --remote-build \"{machine}\" --no-build-cache"]
|
|
9769
9793
|
},
|
|
9770
9794
|
{
|
|
9771
9795
|
id: "finish",
|
|
@@ -9963,7 +9987,7 @@ the app. The intentional button errors may still be in the error log; check
|
|
|
9963
9987
|
whether the edit introduced a new error.
|
|
9964
9988
|
|
|
9965
9989
|
PAUSE: end the turn. Point at the purple title in the device view or simulator
|
|
9966
|
-
and the title color log line. Phone viewing and an approved
|
|
9990
|
+
and the title color log line. Phone viewing and an approved remote Mac are
|
|
9967
9991
|
optional user steps; skip them if unwanted. Never pair, approve, or grant
|
|
9968
9992
|
anything. If the user names an approved machine, the next prompt is
|
|
9969
9993
|
"${TUTORIAL_PROMPTS.machine}". Otherwise give
|
|
@@ -9971,11 +9995,11 @@ anything. If the user names an approved machine, the next prompt is
|
|
|
9971
9995
|
},
|
|
9972
9996
|
machine: {
|
|
9973
9997
|
summary: "Optionally build using a machine the user names and has approved",
|
|
9974
|
-
body: () => `
|
|
9998
|
+
body: () => `REMOTE MAC (OPTIONAL)
|
|
9975
9999
|
|
|
9976
10000
|
${paths}
|
|
9977
10001
|
|
|
9978
|
-
Proceed only when the user names an approved
|
|
10002
|
+
Proceed only when the user names an approved remote Mac. Substitute that
|
|
9979
10003
|
name for {machine}. Never approve, pair, or grant anything. If none is named,
|
|
9980
10004
|
ask for the name or let the user skip this step.
|
|
9981
10005
|
|
|
@@ -9983,7 +10007,7 @@ ${commands("machine")}
|
|
|
9983
10007
|
|
|
9984
10008
|
This step bypasses the artifact cache so the build can use the named machine.
|
|
9985
10009
|
A named machine refuses without a local fallback. If it refuses, report the
|
|
9986
|
-
refusal and offer --build
|
|
10010
|
+
refusal and offer --remote-build auto or local; do not retry silently.
|
|
9987
10011
|
|
|
9988
10012
|
PAUSE: end the turn. Point at the build's machine in Desktop or its report in
|
|
9989
10013
|
stim status --json. Give the next prompt: "${TUTORIAL_PROMPTS.finish}".`
|