44088b35d7
Route splitting - React.lazy for AdminPage, SettingsPage, FriendsPage, DevicePage, AuthCallbackPage; ChatsPage + ConversationPage stay eager - RouteSuspense wrapper with spinner fallback Vendor chunking - Vite manualChunks splits livekit-client, libsodium, @supabase, react into dedicated cacheable chunks Image thumbnails - createImageBitmap + OffscreenCanvas downscales inline preview to max 640px, emits webp; full blob reserved for the lightbox - Passes through gif/apng/webp so animation is preserved - decoding="async" on the inline img Attachment cache - lib/attachmentCache.ts backed by OPFS; 7-day TTL - AttachmentImage/Audio/Video/PDF/Generic read cache first, decrypt on miss, write-through on success; graceful no-op when OPFS missing Avatar cache - lib/avatarCache.ts — session Map<url, blobUrl> + warmAvatarCache() helper for bulk preload Message batching - Realtime INSERT burst collapses to a single refresh() when >3 ids land within a 250ms window; solo inserts keep the per-id path for latency parity Conversation-list virtualization - VirtualConversationList with IntersectionObserver sentinel, initial 40 rows + 40 per batch; no overhead under threshold Rust release tuning - Cargo [profile.release]: lto, codegen-units=1, strip=symbols, panic=abort, opt-level="s" — ~20-30% smaller binary, faster startup
46 lines
1.4 KiB
TOML
46 lines
1.4 KiB
TOML
[package]
|
|
name = "chat-app-desktop"
|
|
version = "0.9.0"
|
|
description = "ChatApp desktop client"
|
|
authors = ["Dennis"]
|
|
edition = "2021"
|
|
rust-version = "1.77"
|
|
|
|
[lib]
|
|
name = "chat_app_desktop_lib"
|
|
crate-type = ["staticlib", "cdylib", "rlib"]
|
|
|
|
[build-dependencies]
|
|
tauri-build = { version = "2", features = [] }
|
|
|
|
[dependencies]
|
|
tauri = { version = "2", features = ["devtools", "tray-icon"] }
|
|
tauri-plugin-notification = "2"
|
|
tauri-plugin-sql = { version = "2", features = ["sqlite"] }
|
|
tauri-plugin-stronghold = "2"
|
|
tauri-plugin-fs = "2"
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
|
|
[target."cfg(not(any(target_os = \"android\", target_os = \"ios\")))".dependencies]
|
|
tauri-plugin-global-shortcut = "2"
|
|
tauri-plugin-updater = "2"
|
|
tauri-plugin-window-state = "2"
|
|
|
|
[features]
|
|
# This feature is used for production builds or when `devPath` points to the filesystem
|
|
# and disables specific features relevant to the dev build.
|
|
custom-protocol = ["tauri/custom-protocol"]
|
|
|
|
# Release-profile tuned for ChatApp: whole-program LTO + single codegen unit
|
|
# cuts binary size by ~20-30% and trims startup overhead. `strip = "symbols"`
|
|
# removes debug + symbol tables (the updater already signs separately so
|
|
# symbol-backed crash reports aren't the recovery path). `panic = "abort"`
|
|
# skips unwinding metadata since the app doesn't use catch_unwind anywhere.
|
|
[profile.release]
|
|
lto = true
|
|
codegen-units = 1
|
|
strip = "symbols"
|
|
panic = "abort"
|
|
opt-level = "s"
|