Repository navigation
v1.0.4
Full Changelog: v1.0.3...v1.0.4
Added
- Shared
dashboardIpcTypeScript types for dashboard command payloads socommandClientstays free of circular imports withdashboardClient. readClipboardText()inuseClipboard, backed by@tauri-apps/plugin-clipboard-managerwith anavigator.clipboard.readText()fallback for paste flows (including the AI assist dialog).MoneyString(src/lib/money.ts) anddecimal.json the frontend; Rust usesrust_decimalwith amounts serialized as decimal strings over IPC.- One-time money migration (
migration:money_decimal_v1) converts legacyf64postcard snapshots to precise decimals on startup.
Changed
- Dashboard client refactored to use the shared IPC types and leaner invoke helpers.
commandClient/invokeCommandextended for dashboard payloads andapp_readylifecycle wiring inApp.vue.- All money-bearing IPC (subscriptions, expenses, dashboard, rates, notifications, AI DTOs, iOS widget snapshot) now uses decimal strings end-to-end; Zod schemas,
useCurrencyFormat, and dashboard / form components updated accordingly. - Frontend secrets now use
tauri-plugin-keyring-store-apionly; legacysecure_storage_*Tauri commands were removed from Rust while keeping the same logical key prefix, so existing keychain entries remain valid. tauri-plugin-keyring-store0.2 —keyring_storemapsKeychainLockedtokeyring_locked; iOS background sync credential reads use the plugin’s background-safe API when the keychain is unavailable.- Cloud sync — global
tokio::sync::MutexserializesCheckRemote,PullRemote,PushLocal,SyncNow, andFlushBeforeExit; the background scheduler usestry_lockand skips a tick while sync is already running (replacesredb_write_flagpolling). - AI extraction — balanced-brace JSON parser prefers the last valid object/array; OpenAI-compatible providers request
response_format: json_objectwith automatic fallback when unsupported; vision shares the same chat-completions path. - Catalog delete — removing a category, currency, payment method, household member, or tag reassigns or blocks defaults safely and emits
app:data-changedso open screens refresh. - AI Smart dialog, subscriptions / expenses pages,
aiClient,aiConfigStore, andSubscriptionFormupdated for the new IPC and clipboard behavior. - Tauri capabilities updated where clipboard read is required; iOS and widget
Info.plistmetadata aligned with the current app build. - Locale files refreshed for new or adjusted copy across all supported languages.
pnpm-lock.yamlandCargo.lockupdated with dependency refreshes tied to the release.
Fixed
- iOS widget —
upcoming.jsonis written atomically (.tmp+rename) so the extension never reads a truncated file. - Calendar — when the calendar day rolls over while the app stays open, stores refetch so
daysLeft, overdue flags, and payment dates stay correct without leaving the page.
Removed
src-tauri/src/commands/secure_storage.rs— redundant now that the UI talks to the keyring plugin directly.src-tauri/src/commands/sync/redb_write_flag.rs— superseded by the global sync mutex.