rnxsim 0.1.452 → 0.1.454
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/flow.ts +1 -5
- package/cli/commands/inspect/settling.ts +35 -3
- package/cli/drivers/playwright.ts +2 -4
- package/cli/ws-bridge.ts +72 -5
- package/detox/proof-frame.cjs +2 -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 +2 -4
- 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 +35 -5
- package/dist-lib/sdk.mjs +35 -5
- package/dist-lib/skills.cjs +190 -44
- 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
package/dist-lib/cloud.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.454 | (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.454 | (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.454 | (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;
|
|
@@ -159,9 +159,7 @@ var require_proof_frame = __commonJS({
|
|
|
159
159
|
throw new Error("proof content measurement needs RGBA pixels and dimensions");
|
|
160
160
|
}
|
|
161
161
|
const yStart = Math.floor(height * PROOF_CONTENT_DEFINITION.contentBandInsetFraction);
|
|
162
|
-
const yEnd = Math.ceil(
|
|
163
|
-
height * (1 - PROOF_CONTENT_DEFINITION.contentBandInsetFraction)
|
|
164
|
-
);
|
|
162
|
+
const yEnd = Math.ceil(height * (1 - PROOF_CONTENT_DEFINITION.contentBandInsetFraction));
|
|
165
163
|
const bucketCounts = new Uint32Array(32 * 32 * 32);
|
|
166
164
|
let totalPixels = 0;
|
|
167
165
|
for (let y = yStart; y < yEnd; y++) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.454 | (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.454 | (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.454 | (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.454 | (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.454 | (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.454 | (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.454 | (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.454 | (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.454 | (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.454 | (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.454 | (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.454 | (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.454 | (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.454 | (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.454 | (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.454 | (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.454 | (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.454 | (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.454 | (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.454 | (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/sdk.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.454 | (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;
|
|
@@ -1464,8 +1464,19 @@ async function waitForSootsimIdle({
|
|
|
1464
1464
|
let lastRequestTotal = -1
|
|
1465
1465
|
let stable = 0
|
|
1466
1466
|
let visuallyStillSince = 0
|
|
1467
|
+
// counts across the whole budget: a flag that is true on every poll is a
|
|
1468
|
+
// different bug from one that is true intermittently, and the two need
|
|
1469
|
+
// opposite fixes (engine vs budget).
|
|
1470
|
+
let polls = 0
|
|
1471
|
+
let dirtyPolls = 0
|
|
1472
|
+
let animatingPolls = 0
|
|
1473
|
+
let layoutChangedPolls = 0
|
|
1467
1474
|
while (Date.now() < deadline) {
|
|
1468
1475
|
const snapshot = await readSnapshot()
|
|
1476
|
+
polls++
|
|
1477
|
+
if (snapshot.layoutDirty) dirtyPolls++
|
|
1478
|
+
if (snapshot.animating) animatingPolls++
|
|
1479
|
+
if (polls > 1 && snapshot.layout !== lastLayout) layoutChangedPolls++
|
|
1469
1480
|
const strictOk =
|
|
1470
1481
|
!strict ||
|
|
1471
1482
|
(snapshot.renderStatsAvailable && !snapshot.animating && !snapshot.layoutDirty)
|
|
@@ -1486,7 +1497,7 @@ async function waitForSootsimIdle({
|
|
|
1486
1497
|
stable >= requiredStablePolls &&
|
|
1487
1498
|
(networkQuiet || Date.now() - visuallyStillSince >= networkQuietGraceMs)
|
|
1488
1499
|
) {
|
|
1489
|
-
return { settled: true, elapsed: Date.now() - start }
|
|
1500
|
+
return { settled: true, elapsed: Date.now() - start, blockedBy: '' }
|
|
1490
1501
|
}
|
|
1491
1502
|
} else {
|
|
1492
1503
|
stable = 0
|
|
@@ -1496,17 +1507,33 @@ async function waitForSootsimIdle({
|
|
|
1496
1507
|
lastRequestTotal = snapshot.requestTotal
|
|
1497
1508
|
await sleep(pollMs)
|
|
1498
1509
|
}
|
|
1499
|
-
|
|
1510
|
+
const last = await readSnapshot()
|
|
1511
|
+
const blockers = []
|
|
1512
|
+
if (strict && !last.renderStatsAvailable) blockers.push('render stats unavailable')
|
|
1513
|
+
if (last.animating) blockers.push('animations still running')
|
|
1514
|
+
if (last.layoutDirty) blockers.push('layout still dirty')
|
|
1515
|
+
if (last.pendingFetches > 0) blockers.push(last.pendingFetches + ' image fetches pending')
|
|
1516
|
+
if (last.layout !== lastLayout) blockers.push('layout still changing')
|
|
1517
|
+
if (last.requestInFlight > 0) blockers.push(last.requestInFlight + ' requests in flight')
|
|
1518
|
+
return {
|
|
1519
|
+
settled: false,
|
|
1520
|
+
elapsed: Date.now() - start,
|
|
1521
|
+
blockedBy:
|
|
1522
|
+
(blockers.length ? blockers.join(', ') : 'unknown') +
|
|
1523
|
+
' over ' + polls + ' polls (layout changed ' + layoutChangedPolls +
|
|
1524
|
+
'x, layoutDirty ' + dirtyPolls + 'x, animating ' + animatingPolls + 'x)',
|
|
1525
|
+
}
|
|
1500
1526
|
})()`
|
|
1501
1527
|
},
|
|
1502
1528
|
{
|
|
1503
1529
|
timeoutMs: maxMs + 1e3
|
|
1504
1530
|
}
|
|
1505
1531
|
);
|
|
1506
|
-
const { elapsed, settled } = result ?? {};
|
|
1532
|
+
const { elapsed, settled, blockedBy } = result ?? {};
|
|
1507
1533
|
return {
|
|
1508
1534
|
elapsed: typeof elapsed === "number" ? elapsed : maxMs,
|
|
1509
|
-
settled: settled === true
|
|
1535
|
+
settled: settled === true,
|
|
1536
|
+
blockedBy: typeof blockedBy === "string" ? blockedBy : "unknown"
|
|
1510
1537
|
};
|
|
1511
1538
|
}
|
|
1512
1539
|
|
|
@@ -2001,6 +2028,9 @@ var SimClient = class {
|
|
|
2001
2028
|
listSims() {
|
|
2002
2029
|
return this.bridge.listSims();
|
|
2003
2030
|
}
|
|
2031
|
+
resolveReloadedSim(retiredSimId) {
|
|
2032
|
+
return this.bridge.resolveReloadedSim(retiredSimId);
|
|
2033
|
+
}
|
|
2004
2034
|
focusSim(simId = this.simId) {
|
|
2005
2035
|
return this.bridge.focusSim(simId);
|
|
2006
2036
|
}
|
package/dist-lib/sdk.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! rnx v0.1.
|
|
1
|
+
/*! rnx v0.1.454 | (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);
|
|
@@ -1368,8 +1368,19 @@ async function waitForSootsimIdle({
|
|
|
1368
1368
|
let lastRequestTotal = -1
|
|
1369
1369
|
let stable = 0
|
|
1370
1370
|
let visuallyStillSince = 0
|
|
1371
|
+
// counts across the whole budget: a flag that is true on every poll is a
|
|
1372
|
+
// different bug from one that is true intermittently, and the two need
|
|
1373
|
+
// opposite fixes (engine vs budget).
|
|
1374
|
+
let polls = 0
|
|
1375
|
+
let dirtyPolls = 0
|
|
1376
|
+
let animatingPolls = 0
|
|
1377
|
+
let layoutChangedPolls = 0
|
|
1371
1378
|
while (Date.now() < deadline) {
|
|
1372
1379
|
const snapshot = await readSnapshot()
|
|
1380
|
+
polls++
|
|
1381
|
+
if (snapshot.layoutDirty) dirtyPolls++
|
|
1382
|
+
if (snapshot.animating) animatingPolls++
|
|
1383
|
+
if (polls > 1 && snapshot.layout !== lastLayout) layoutChangedPolls++
|
|
1373
1384
|
const strictOk =
|
|
1374
1385
|
!strict ||
|
|
1375
1386
|
(snapshot.renderStatsAvailable && !snapshot.animating && !snapshot.layoutDirty)
|
|
@@ -1390,7 +1401,7 @@ async function waitForSootsimIdle({
|
|
|
1390
1401
|
stable >= requiredStablePolls &&
|
|
1391
1402
|
(networkQuiet || Date.now() - visuallyStillSince >= networkQuietGraceMs)
|
|
1392
1403
|
) {
|
|
1393
|
-
return { settled: true, elapsed: Date.now() - start }
|
|
1404
|
+
return { settled: true, elapsed: Date.now() - start, blockedBy: '' }
|
|
1394
1405
|
}
|
|
1395
1406
|
} else {
|
|
1396
1407
|
stable = 0
|
|
@@ -1400,17 +1411,33 @@ async function waitForSootsimIdle({
|
|
|
1400
1411
|
lastRequestTotal = snapshot.requestTotal
|
|
1401
1412
|
await sleep(pollMs)
|
|
1402
1413
|
}
|
|
1403
|
-
|
|
1414
|
+
const last = await readSnapshot()
|
|
1415
|
+
const blockers = []
|
|
1416
|
+
if (strict && !last.renderStatsAvailable) blockers.push('render stats unavailable')
|
|
1417
|
+
if (last.animating) blockers.push('animations still running')
|
|
1418
|
+
if (last.layoutDirty) blockers.push('layout still dirty')
|
|
1419
|
+
if (last.pendingFetches > 0) blockers.push(last.pendingFetches + ' image fetches pending')
|
|
1420
|
+
if (last.layout !== lastLayout) blockers.push('layout still changing')
|
|
1421
|
+
if (last.requestInFlight > 0) blockers.push(last.requestInFlight + ' requests in flight')
|
|
1422
|
+
return {
|
|
1423
|
+
settled: false,
|
|
1424
|
+
elapsed: Date.now() - start,
|
|
1425
|
+
blockedBy:
|
|
1426
|
+
(blockers.length ? blockers.join(', ') : 'unknown') +
|
|
1427
|
+
' over ' + polls + ' polls (layout changed ' + layoutChangedPolls +
|
|
1428
|
+
'x, layoutDirty ' + dirtyPolls + 'x, animating ' + animatingPolls + 'x)',
|
|
1429
|
+
}
|
|
1404
1430
|
})()`
|
|
1405
1431
|
},
|
|
1406
1432
|
{
|
|
1407
1433
|
timeoutMs: maxMs + 1e3
|
|
1408
1434
|
}
|
|
1409
1435
|
);
|
|
1410
|
-
const { elapsed, settled } = result ?? {};
|
|
1436
|
+
const { elapsed, settled, blockedBy } = result ?? {};
|
|
1411
1437
|
return {
|
|
1412
1438
|
elapsed: typeof elapsed === "number" ? elapsed : maxMs,
|
|
1413
|
-
settled: settled === true
|
|
1439
|
+
settled: settled === true,
|
|
1440
|
+
blockedBy: typeof blockedBy === "string" ? blockedBy : "unknown"
|
|
1414
1441
|
};
|
|
1415
1442
|
}
|
|
1416
1443
|
|
|
@@ -1905,6 +1932,9 @@ var SimClient = class {
|
|
|
1905
1932
|
listSims() {
|
|
1906
1933
|
return this.bridge.listSims();
|
|
1907
1934
|
}
|
|
1935
|
+
resolveReloadedSim(retiredSimId) {
|
|
1936
|
+
return this.bridge.resolveReloadedSim(retiredSimId);
|
|
1937
|
+
}
|
|
1908
1938
|
focusSim(simId = this.simId) {
|
|
1909
1939
|
return this.bridge.focusSim(simId);
|
|
1910
1940
|
}
|