diff --git a/packages/desktop/src/preload.ts b/packages/desktop/src/preload.ts index dbdd5fa4..ee48b765 100644 --- a/packages/desktop/src/preload.ts +++ b/packages/desktop/src/preload.ts @@ -51,6 +51,16 @@ contextBridge.exposeInMainWorld('backspace', { ipcRenderer.on('deep-link', (_event, url) => callback(url)); }, + // Instance-origin-aware URL routing + setConnectedOrigins: (origins: string[]) => { + ipcRenderer.send('set-connected-origins', origins); + }, + onOpenInternalRoute: (callback: (path: string) => void) => { + const handler = (_evt: Electron.IpcRendererEvent, path: string) => callback(path); + ipcRenderer.on('open-internal-route', handler); + return () => { ipcRenderer.removeListener('open-internal-route', handler); }; + }, + // Screen share picker coordination onScreenShareSources: (callback: (sources: unknown[]) => void) => { ipcRenderer.on('screen-share-sources', (_event, sources) => callback(sources)); diff --git a/packages/web/src/platform/electron.d.ts b/packages/web/src/platform/electron.d.ts index 09fdd82d..add4bca8 100644 --- a/packages/web/src/platform/electron.d.ts +++ b/packages/web/src/platform/electron.d.ts @@ -35,6 +35,10 @@ interface BackspaceElectronAPI { // Deep linking (Task 2.3) onDeepLink: (callback: (url: string) => void) => void; + // Instance-origin-aware URL routing + setConnectedOrigins: (origins: string[]) => void; + onOpenInternalRoute: (callback: (path: string) => void) => (() => void); + // Screen share picker coordination onScreenShareSources: (callback: (sources: ElectronScreenSource[]) => void) => void; selectScreenSource: (sourceId: string | null, shareAudio?: boolean) => void;