






















@@ -444,4 +444,68 @@ describe("resolvePinnedClientMetadata", () => {
444444});
445445},
446446);
447+448+it.each([
449+["openclaw-ios", "iOS 26.5.0", "iOS 26.4.2", "iPhone"],
450+["openclaw-ios", "iPadOS 26.5.0", "iPadOS 26.4.2", "iPad"],
451+["openclaw-ios", "iPadOS 26.5.0", "iOS 26.4.2", "iPad"],
452+["openclaw-android", "Android 16", "Android 15", "Android"],
453+])(
454+"allows %s platform version refresh without metadata-upgrade approval",
455+(clientId, claimedPlatform, pairedPlatform, deviceFamily) => {
456+expect(
457+__testing.resolvePinnedClientMetadata({
458+ clientId,
459+clientMode: "node",
460+ claimedPlatform,
461+claimedDeviceFamily: deviceFamily,
462+ pairedPlatform,
463+pairedDeviceFamily: deviceFamily,
464+}),
465+).toEqual({
466+platformMismatch: false,
467+deviceFamilyMismatch: false,
468+pinnedPlatform: claimedPlatform,
469+pinnedDeviceFamily: deviceFamily,
470+refreshPairedPlatform: claimedPlatform,
471+});
472+},
473+);
474+475+it("still requires approval when an iOS device family changes", () => {
476+expect(
477+__testing.resolvePinnedClientMetadata({
478+clientId: "openclaw-ios",
479+clientMode: "node",
480+claimedPlatform: "iOS 26.5.0",
481+claimedDeviceFamily: "iPad",
482+pairedPlatform: "iOS 26.4.2",
483+pairedDeviceFamily: "iPhone",
484+}),
485+).toEqual({
486+platformMismatch: false,
487+deviceFamilyMismatch: true,
488+pinnedPlatform: "iOS 26.5.0",
489+pinnedDeviceFamily: "iPhone",
490+refreshPairedPlatform: "iOS 26.5.0",
491+});
492+});
493+494+it("keeps non-mobile platform version changes approval-bound", () => {
495+expect(
496+__testing.resolvePinnedClientMetadata({
497+clientId: "node-host",
498+clientMode: "node",
499+claimedPlatform: "linux 6.9",
500+claimedDeviceFamily: "Linux",
501+pairedPlatform: "linux 6.8",
502+pairedDeviceFamily: "Linux",
503+}),
504+).toEqual({
505+platformMismatch: true,
506+deviceFamilyMismatch: false,
507+pinnedPlatform: undefined,
508+pinnedDeviceFamily: "Linux",
509+});
510+});
447511});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。