Prepare time-bound Setup URI integration for Commonlib release

Add Time-bound and Compatible generation to the Obsidian dialogue, browser peer check, and setup tools, with boundary and compatibility coverage. Show the fixed window end before sharing a Time-bound URI.

This review branch depends on unpublished @vrtmrz/livesync-commonlib 0.1.32-next.0. The root npm pin and Deno lockfile remain unchanged until that candidate is available; a fresh install of this commit is not yet expected to build.
This commit is contained in:
vorotamoroz committed 2026-09-28 10:22:28 +00:00
1 parent 2c2b9c90e4
commit 3a478cce3f
23 files changed
+1361 -119

No files matched your search

+15 -4
View File
@@ -1,4 +1,4 @@
import { encodeSettingsToSetupURI } from "@vrtmrz/livesync-commonlib/compat/API/processSetting";
import { encodeTimeBoundSetupURI } from "@vrtmrz/livesync-commonlib/setup-uri";
import { compatGlobal } from "@vrtmrz/livesync-commonlib/compat/common/coreEnvFunctions";
import {
P2P_DEFAULT_SETTINGS,
@@ -17,6 +17,7 @@ export type P2PCheckTarget = "desktop" | "mobile";
export interface GeneratedP2PCheckSetup {
readonly target: P2PCheckTarget;
readonly setupURI: string;
readonly setupURIUsableUntil: number;
readonly setupPassphrase: string;
readonly groupId: string;
readonly relay: string;
@@ -147,16 +148,26 @@ export async function generateP2PCheckSetup(
browserSettings.suspendParseReplicationResult = true;
const setupPassphrase = generateSetupPassphrase();
const setupURI = await encodeSettingsToSetupURI(
const { uri: setupURI, usableUntil } = await encodeTimeBoundSetupURI(
deviceSettings,
setupPassphrase,
["pluginSyncExtendedSetting", "doNotUseFixedRevisionForChunks", "P2P_DevicePeerName", "deviceAndVaultName"],
true
{
mode: "ephemeral",
removeProperties: [
"pluginSyncExtendedSetting",
"doNotUseFixedRevisionForChunks",
"P2P_DevicePeerName",
"deviceAndVaultName",
],
skipDefaultValue: true,
}
);
if (usableUntil === null) throw new Error("Ephemeral Setup URI has no time window");
return {
target,
setupURI: setupURI.trim(),
setupURIUsableUntil: usableUntil,
setupPassphrase,
groupId: credentials.groupId,
relay: deviceSettings.P2P_relays,