rnxsim 0.1.451 → 0.1.453
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/cli/bridge-flow-runner.ts +41 -13
- package/cli/cloud-client.ts +10 -0
- package/cli/commands/control.ts +52 -7
- package/cli/commands/debug.ts +42 -11
- package/cli/commands/inspect/core.ts +33 -13
- package/cli/commands/inspect/settling.ts +35 -3
- package/cli/drivers/playwright.ts +2 -4
- package/cli/ws-bridge.ts +72 -5
- package/dist-lib/agent-daemon-client.cjs +1 -1
- package/dist-lib/agent-events.cjs +1 -1
- package/dist-lib/agent-identity.cjs +1 -1
- package/dist-lib/agent-sessions.cjs +1 -1
- package/dist-lib/attached-projects.cjs +1 -1
- package/dist-lib/auth/shared-session.cjs +1 -1
- package/dist-lib/backend-origin.cjs +1 -1
- package/dist-lib/beta.cjs +1 -1
- package/dist-lib/beta.mjs +1 -1
- package/dist-lib/bridge-constants.cjs +1 -1
- package/dist-lib/bridge-contract-input.cjs +1 -1
- package/dist-lib/bridge-contract-input.mjs +1 -1
- package/dist-lib/bridge-contract.cjs +1 -1
- package/dist-lib/bridge-contract.mjs +1 -1
- package/dist-lib/capture-contract.cjs +1 -1
- package/dist-lib/capture-contract.mjs +1 -1
- package/dist-lib/cli-constants.cjs +1 -1
- package/dist-lib/cloud-contract.cjs +1 -1
- package/dist-lib/cloud-contract.mjs +1 -1
- package/dist-lib/cloud.cjs +1 -1
- package/dist-lib/cloud.mjs +1 -1
- package/dist-lib/config.cjs +1 -1
- package/dist-lib/detox/index.cjs +1 -1
- package/dist-lib/dev-bundle-resolution.cjs +1 -1
- package/dist-lib/home-paths.cjs +1 -1
- package/dist-lib/host/bridge-host.cjs +1 -1
- package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
- package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
- package/dist-lib/host/replacement-module-handler.cjs +1 -1
- package/dist-lib/host/websocket-proxy.cjs +1 -1
- package/dist-lib/index.cjs +89 -8
- package/dist-lib/jump-to-source-babel.cjs +1 -1
- package/dist-lib/jump-to-source-native.cjs +1 -1
- package/dist-lib/menu.cjs +1 -1
- package/dist-lib/menu.mjs +1 -1
- package/dist-lib/metro-fingerprint-registry.cjs +1 -1
- package/dist-lib/metro-fingerprint-registry.mjs +1 -1
- package/dist-lib/metro-production-bundle.cjs +1 -1
- package/dist-lib/metro-production-bundle.mjs +1 -1
- package/dist-lib/metro.cjs +1 -1
- package/dist-lib/profiles.cjs +1 -1
- package/dist-lib/public-brand.cjs +1 -1
- package/dist-lib/react-native-host-modules.cjs +1 -1
- package/dist-lib/react-native-host-modules.mjs +1 -1
- package/dist-lib/render-mode.cjs +1 -1
- package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
- package/dist-lib/sdk.cjs +59 -12
- package/dist-lib/sdk.mjs +58 -12
- package/dist-lib/skills.cjs +2349 -282
- package/dist-lib/vite.cjs +1 -1
- package/package.json +1 -1
- package/src/flow-timeout-scale.ts +15 -0
- package/src/playwright-host-log.ts +16 -0
- package/src/sim-client.ts +4 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/beta.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/beta.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/cloud.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/cloud.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
4
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
package/dist-lib/config.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/detox/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/home-paths.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
|
|
3
3
|
// src/host/fetch-proxy-overrides.ts
|
|
4
4
|
var FETCH_PROXY_BROWSER_USER_AGENT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -349,6 +349,16 @@ function readCurrentTarget() {
|
|
|
349
349
|
function readCurrentSimId() {
|
|
350
350
|
return readCurrentTarget()?.simId ?? null;
|
|
351
351
|
}
|
|
352
|
+
function saveCurrentSimId(simId) {
|
|
353
|
+
const normalized = simId.trim();
|
|
354
|
+
if (!normalized) return;
|
|
355
|
+
writeSecureJsonAtomic(getCurrentSimPath(), {
|
|
356
|
+
version: CURRENT_SIM_VERSION,
|
|
357
|
+
plane: "local",
|
|
358
|
+
simId: normalized,
|
|
359
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
360
|
+
});
|
|
361
|
+
}
|
|
352
362
|
function clearCurrentSimId() {
|
|
353
363
|
(0, import_fs2.rmSync)(getCurrentSimPath(), { force: true });
|
|
354
364
|
}
|
|
@@ -752,6 +762,15 @@ function createBridge(wsPort, opts = {}) {
|
|
|
752
762
|
});
|
|
753
763
|
let warnedAboutContention = false;
|
|
754
764
|
let noticedTarget = false;
|
|
765
|
+
let pinnedHostPid = null;
|
|
766
|
+
let lineageLookupInFlight = false;
|
|
767
|
+
function pickReloadedSuccessor(sims, retiredSimId) {
|
|
768
|
+
if (pinnedHostPid === null) return null;
|
|
769
|
+
const successors = (Array.isArray(sims) ? sims : []).filter(
|
|
770
|
+
(sim) => sim.id !== retiredSimId && sim.readyState === "open" && sim.meta?.sootsimHostPid === pinnedHostPid
|
|
771
|
+
);
|
|
772
|
+
return successors.length === 1 ? successors[0].id : null;
|
|
773
|
+
}
|
|
755
774
|
function maybeNoticeTarget(cmdType, simId) {
|
|
756
775
|
if (noticedTarget) return;
|
|
757
776
|
if (process.env.SOOTSIM_QUIET_TARGET_NOTICE === "1") return;
|
|
@@ -807,7 +826,7 @@ function createBridge(wsPort, opts = {}) {
|
|
|
807
826
|
plane: "local",
|
|
808
827
|
async send(cmd, callOpts) {
|
|
809
828
|
const effectiveTimeoutMs = callOpts?.timeoutMs ?? commandTimeoutMs;
|
|
810
|
-
const sendOnce = async (defaultSimId) => {
|
|
829
|
+
const sendOnce = async (defaultSimId, cmdOverride) => {
|
|
811
830
|
await ready;
|
|
812
831
|
const id = nextId++;
|
|
813
832
|
return new Promise((resolve3, reject) => {
|
|
@@ -829,7 +848,7 @@ function createBridge(wsPort, opts = {}) {
|
|
|
829
848
|
reject(e);
|
|
830
849
|
}
|
|
831
850
|
});
|
|
832
|
-
const payload = { ...cmd, id };
|
|
851
|
+
const payload = { ...cmdOverride ?? cmd, id };
|
|
833
852
|
if (payload.simId === void 0 && defaultSimId) {
|
|
834
853
|
payload.simId = defaultSimId;
|
|
835
854
|
}
|
|
@@ -839,11 +858,36 @@ function createBridge(wsPort, opts = {}) {
|
|
|
839
858
|
};
|
|
840
859
|
const sentSimId = opts.simIdSource === "flag" ? opts.simId : readCurrentSimId() ?? opts.simId;
|
|
841
860
|
try {
|
|
842
|
-
|
|
861
|
+
const result = await sendOnce(sentSimId);
|
|
862
|
+
if (sentSimId && pinnedHostPid === null && !lineageLookupInFlight) {
|
|
863
|
+
lineageLookupInFlight = true;
|
|
864
|
+
void sendOnce(void 0, { type: "bridge:list-sims" }).then((sims) => {
|
|
865
|
+
if (!Array.isArray(sims)) return;
|
|
866
|
+
const pinned = sims.find((sim) => sim.id === sentSimId);
|
|
867
|
+
const hostPid = pinned?.meta?.sootsimHostPid;
|
|
868
|
+
if (typeof hostPid === "number") pinnedHostPid = hostPid;
|
|
869
|
+
}).catch(() => {
|
|
870
|
+
}).finally(() => {
|
|
871
|
+
lineageLookupInFlight = false;
|
|
872
|
+
});
|
|
873
|
+
}
|
|
874
|
+
return result;
|
|
843
875
|
} catch (error) {
|
|
844
876
|
const message = error instanceof Error ? error.message : String(error);
|
|
845
877
|
const missingSimMessage = `no sim connected with id ${sentSimId}`;
|
|
846
878
|
if (opts.simIdSource !== "flag" && sentSimId && cmd.simId === void 0 && (message === missingSimMessage || message.startsWith(`${missingSimMessage};`))) {
|
|
879
|
+
const successor = pickReloadedSuccessor(
|
|
880
|
+
await sendOnce(void 0, { type: "bridge:list-sims" }),
|
|
881
|
+
sentSimId
|
|
882
|
+
);
|
|
883
|
+
if (successor) {
|
|
884
|
+
saveCurrentSimId(successor);
|
|
885
|
+
process.stderr.write(
|
|
886
|
+
` note: sim ${sentSimId} reloaded and reconnected as ${successor}; following it
|
|
887
|
+
`
|
|
888
|
+
);
|
|
889
|
+
return sendOnce(successor);
|
|
890
|
+
}
|
|
847
891
|
clearCurrentSimId();
|
|
848
892
|
throw new Error(
|
|
849
893
|
`saved sim ${sentSimId} is gone${message.slice(missingSimMessage.length)}; run \`rnx list\` and \`rnx use <sim>\`, or open a fresh sim`
|
|
@@ -856,6 +900,13 @@ function createBridge(wsPort, opts = {}) {
|
|
|
856
900
|
const sims = await this.send({ type: "bridge:list-sims" });
|
|
857
901
|
return Array.isArray(sims) ? sims : [];
|
|
858
902
|
},
|
|
903
|
+
// a caller holding its own pinned sim id (a flow runner sets simId on every
|
|
904
|
+
// command, so it never reaches the pin-following path in send) asks here
|
|
905
|
+
// after a reload retires that id. null means nothing proves what replaced
|
|
906
|
+
// it, and the caller must fail rather than guess.
|
|
907
|
+
async resolveReloadedSim(retiredSimId) {
|
|
908
|
+
return pickReloadedSuccessor(await this.listSims(), retiredSimId);
|
|
909
|
+
},
|
|
859
910
|
async focusSim(simId) {
|
|
860
911
|
return this.send({ type: "focus", simId });
|
|
861
912
|
},
|
|
@@ -1694,8 +1745,19 @@ async function waitForSootsimIdle({
|
|
|
1694
1745
|
let lastRequestTotal = -1
|
|
1695
1746
|
let stable = 0
|
|
1696
1747
|
let visuallyStillSince = 0
|
|
1748
|
+
// counts across the whole budget: a flag that is true on every poll is a
|
|
1749
|
+
// different bug from one that is true intermittently, and the two need
|
|
1750
|
+
// opposite fixes (engine vs budget).
|
|
1751
|
+
let polls = 0
|
|
1752
|
+
let dirtyPolls = 0
|
|
1753
|
+
let animatingPolls = 0
|
|
1754
|
+
let layoutChangedPolls = 0
|
|
1697
1755
|
while (Date.now() < deadline) {
|
|
1698
1756
|
const snapshot = await readSnapshot()
|
|
1757
|
+
polls++
|
|
1758
|
+
if (snapshot.layoutDirty) dirtyPolls++
|
|
1759
|
+
if (snapshot.animating) animatingPolls++
|
|
1760
|
+
if (polls > 1 && snapshot.layout !== lastLayout) layoutChangedPolls++
|
|
1699
1761
|
const strictOk =
|
|
1700
1762
|
!strict ||
|
|
1701
1763
|
(snapshot.renderStatsAvailable && !snapshot.animating && !snapshot.layoutDirty)
|
|
@@ -1716,7 +1778,7 @@ async function waitForSootsimIdle({
|
|
|
1716
1778
|
stable >= requiredStablePolls &&
|
|
1717
1779
|
(networkQuiet || Date.now() - visuallyStillSince >= networkQuietGraceMs)
|
|
1718
1780
|
) {
|
|
1719
|
-
return { settled: true, elapsed: Date.now() - start }
|
|
1781
|
+
return { settled: true, elapsed: Date.now() - start, blockedBy: '' }
|
|
1720
1782
|
}
|
|
1721
1783
|
} else {
|
|
1722
1784
|
stable = 0
|
|
@@ -1726,17 +1788,33 @@ async function waitForSootsimIdle({
|
|
|
1726
1788
|
lastRequestTotal = snapshot.requestTotal
|
|
1727
1789
|
await sleep(pollMs)
|
|
1728
1790
|
}
|
|
1729
|
-
|
|
1791
|
+
const last = await readSnapshot()
|
|
1792
|
+
const blockers = []
|
|
1793
|
+
if (strict && !last.renderStatsAvailable) blockers.push('render stats unavailable')
|
|
1794
|
+
if (last.animating) blockers.push('animations still running')
|
|
1795
|
+
if (last.layoutDirty) blockers.push('layout still dirty')
|
|
1796
|
+
if (last.pendingFetches > 0) blockers.push(last.pendingFetches + ' image fetches pending')
|
|
1797
|
+
if (last.layout !== lastLayout) blockers.push('layout still changing')
|
|
1798
|
+
if (last.requestInFlight > 0) blockers.push(last.requestInFlight + ' requests in flight')
|
|
1799
|
+
return {
|
|
1800
|
+
settled: false,
|
|
1801
|
+
elapsed: Date.now() - start,
|
|
1802
|
+
blockedBy:
|
|
1803
|
+
(blockers.length ? blockers.join(', ') : 'unknown') +
|
|
1804
|
+
' over ' + polls + ' polls (layout changed ' + layoutChangedPolls +
|
|
1805
|
+
'x, layoutDirty ' + dirtyPolls + 'x, animating ' + animatingPolls + 'x)',
|
|
1806
|
+
}
|
|
1730
1807
|
})()`
|
|
1731
1808
|
},
|
|
1732
1809
|
{
|
|
1733
1810
|
timeoutMs: maxMs + 1e3
|
|
1734
1811
|
}
|
|
1735
1812
|
);
|
|
1736
|
-
const { elapsed, settled } = result ?? {};
|
|
1813
|
+
const { elapsed, settled, blockedBy } = result ?? {};
|
|
1737
1814
|
return {
|
|
1738
1815
|
elapsed: typeof elapsed === "number" ? elapsed : maxMs,
|
|
1739
|
-
settled: settled === true
|
|
1816
|
+
settled: settled === true,
|
|
1817
|
+
blockedBy: typeof blockedBy === "string" ? blockedBy : "unknown"
|
|
1740
1818
|
};
|
|
1741
1819
|
}
|
|
1742
1820
|
|
|
@@ -2231,6 +2309,9 @@ var SimClient = class {
|
|
|
2231
2309
|
listSims() {
|
|
2232
2310
|
return this.bridge.listSims();
|
|
2233
2311
|
}
|
|
2312
|
+
resolveReloadedSim(retiredSimId) {
|
|
2313
|
+
return this.bridge.resolveReloadedSim(retiredSimId);
|
|
2314
|
+
}
|
|
2234
2315
|
focusSim(simId = this.simId) {
|
|
2235
2316
|
return this.bridge.focusSim(simId);
|
|
2236
2317
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/menu.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/menu.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/metro.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
package/dist-lib/profiles.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
package/dist-lib/render-mode.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __defProp = Object.defineProperty;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.453 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
|
|
2
2
|
let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
|
|
3
3
|
"use strict";
|
|
4
4
|
var __create = Object.create;
|