228608ef2c
System tray (desktop) - tauri tray-icon feature + tray with menu (Öffnen/Ausblenden/Beenden) - Left-click toggles main window; right-click shows menu - JS emits tray-unread-update event, Rust mirrors into tooltip + macOS dock badge via set_badge_label - ConversationsContext wires totalUnread → tray Window state persistence - tauri-plugin-window-state (desktop-only target guard) - Auto-restore size/position/maximized between restarts Local SQLite message cache - tauri-plugin-sql hydration of conversation view on mount - persistMessages after each refresh, deleteCachedMessage on realtime DELETE, pruneCache keeps latest 1000 per conversation - Stores plaintext only (same trust boundary as stronghold device key; cache never leaves the device, E2EE w.r.t. server unchanged) Web Worker for decryption - workers/decrypt.worker.ts runs crypto_secretbox_open_easy + utf-8 decode off the main thread with its own libsodium instance - lib/decryptWorker.ts is a request/response wrapper with inline fallback when Worker spawn fails - shared decryptMessages accepts aeadBatchDelegate so key lookup stays on the main thread while the AEAD loop offloads Build fix - Enable tauri tray-icon feature - Import Listener + Manager traits, clone tray handle for the event listener, conditional icon attach
48 lines
1.3 KiB
JSON
48 lines
1.3 KiB
JSON
{
|
|
"$schema": "../gen/schemas/desktop-schema.json",
|
|
"identifier": "default",
|
|
"description": "Default permissions for ChatApp desktop windows.",
|
|
"windows": ["main"],
|
|
"permissions": [
|
|
"core:default",
|
|
"notification:default",
|
|
"notification:allow-notify",
|
|
"notification:allow-is-permission-granted",
|
|
"notification:allow-request-permission",
|
|
"sql:default",
|
|
"sql:allow-load",
|
|
"sql:allow-execute",
|
|
"sql:allow-select",
|
|
"sql:allow-close",
|
|
"global-shortcut:allow-register",
|
|
"global-shortcut:allow-unregister",
|
|
"global-shortcut:allow-is-registered",
|
|
"updater:allow-check",
|
|
"updater:allow-download",
|
|
"updater:allow-install",
|
|
"updater:allow-download-and-install",
|
|
"stronghold:default",
|
|
"stronghold:allow-initialize",
|
|
"stronghold:allow-load-client",
|
|
"stronghold:allow-create-client",
|
|
"stronghold:allow-save",
|
|
"stronghold:allow-get-store-record",
|
|
"stronghold:allow-save-store-record",
|
|
"stronghold:allow-remove-store-record",
|
|
"fs:default",
|
|
"fs:allow-read-file",
|
|
"fs:allow-write-file",
|
|
"fs:allow-mkdir",
|
|
"fs:allow-exists",
|
|
"fs:allow-rename",
|
|
"fs:allow-remove",
|
|
{
|
|
"identifier": "fs:scope",
|
|
"allow": [
|
|
{ "path": "$APPLOCALDATA" },
|
|
{ "path": "$APPLOCALDATA/**" }
|
|
]
|
|
}
|
|
]
|
|
}
|