···11-type UnlistenFn = () => void;
22-33-export async function getCurrent(): Promise<string[] | null> {
44- // In mock mode (browser), there are no deep links on cold start
55- return null;
66-}
77-88-export async function onOpenUrl(_handler: (urls: string[]) => void): Promise<UnlistenFn> {
99- // In mock mode (browser), deep links won't work - just return a no-op unlisten
1010- return () => {};
1111-}
-11
apps/desktop/src/mocks/tauri-dialog.ts
···11-interface OpenDialogOptions {
22- directory?: boolean;
33- multiple?: boolean;
44- defaultPath?: string;
55- title?: string;
66-}
77-88-export async function open(_options?: OpenDialogOptions): Promise<string | null> {
99- // In mock mode, just return a fake path
1010- return "/Users/demo/projects/tatami";
1111-}
-16
apps/desktop/src/mocks/tauri-event.ts
···11-type UnlistenFn = () => void;
22-33-interface Event<T> {
44- payload: T;
55-}
66-77-type EventCallback<T> = (event: Event<T>) => void;
88-99-export async function listen<T>(_event: string, _handler: EventCallback<T>): Promise<UnlistenFn> {
1010- // In mock mode, never emit events - just return a no-op unlisten
1111- return () => {};
1212-}
1313-1414-export async function emit(_event: string, _payload?: unknown): Promise<void> {
1515- // no-op in mock mode
1616-}
-3
apps/desktop/src/mocks/tauri-path.ts
···11-export async function homeDir(): Promise<string> {
22- return "/Users/demo";
33-}
+14
apps/desktop/src/tauri-stub.ts
···11+// This file MUST be imported before any @tauri-apps/* imports
22+// It sets up a minimal stub so Tauri modules don't crash in browser mode
33+44+const isTauri = typeof window !== "undefined" && "__TAURI_INTERNALS__" in window;
55+66+if (!isTauri && typeof window !== "undefined") {
77+ // biome-ignore lint/suspicious/noExplicitAny: Tauri internals stub
88+ (window as any).__TAURI_INTERNALS__ = {
99+ invoke: () => Promise.reject(new Error("Tauri mocks not initialized yet")),
1010+ metadata: { currentWindow: { label: "main" }, currentWebview: { label: "main" } },
1111+ };
1212+}
1313+1414+export const IS_TAURI = isTauri;