Application de bureau
Ce que toute application Mac demande à son côté natif, typé : dossiers autorisés et surveillés, le Trousseau comme stockage du client d'application, la barre de menus native, les liens profonds et le canal de mise à jour.
A Krizaka Mac app is the web in a window (ADR-002); what a browser cannot do — read a folder the person chose, keep a
session in the Keychain, answer a deep link, show a native menu — is the Rust of
krizaka-tauri-kit and its plugin, tauri-plugin-krizaka.
@krizaka/app-desktop is the page's typed side of that plugin, with Tauri passed in, never imported.
const bridge = { invoke, listen }; // from @tauri-apps/api
const folders = createFolders(bridge);
const session = createSessionStore({ storage: keychainStorage(bridge), key: "yomizaka.session" });
await followLinks(bridge, (route) => navigate(route)); // yomizaka://app/rapports → /app/rapports
await setNativeMenu(bridge, spec, { "library.add-folder": () => void folders.grant() });- Folders. Granted with the native picker, listed, revoked and watched; every path goes through the kit's folder
scope (never the home, the system or
~/.ssh), a dropped file is readable for the session only. - Session. The Keychain is
@krizaka/app-client's storage port: the same session store and API client as the mobile apps. - Menu bar. The page sends it in its own words and with
acceleratorOfshortcuts; the native side checks it and keeps the standard ones (⌘Q, ⌘C, ⌘V…) for macOS. - Deep links. The native side turns a link into a route of the app, or drops it; the ones that opened the app are not lost.
Decision: ADR-005.