Changelog
Release notes and version history for the Upvault desktop app.
Added
- Workspace file box: keep any file in a workspace, sync it through your own Google Drive, and download it on another device only when you need it
- Add a file box file to AI search, or take it back out without deleting the file
- Rename files in the file box
- Save a file box file anywhere on disk, with a prompt when a file of that name already exists and open or reveal shortcuts afterwards
- Google Drive storage usage in the sidebar, with a per-folder breakdown under sync settings
- Search across conversations, so the assistant can pull context from your other chats
- Message search within a conversation
- Web search API key setup in settings
- Provider icon on the assistant avatar
Changed
- Storage format updated (schema v46). Update your other devices to this version before syncing them again, otherwise their sync will stop
- The explorer lists conversations first, then notes, then files, and shows transfer progress on the file row
- File transfers to Google Drive resume where they left off after a restart or a dropped connection
Fixed
- Documents attached with @ failed to load their contents
- CSV, XLSX and XLS originals were never uploaded to Google Drive
- Deleting several documents at once left the local files and the Drive copies behind
- A factory reset did not propagate document and custom model deletions to your other devices
- Document search results showed internal UUID filenames instead of the original ones
- Ctrl+K could not find documents by their original filename
- Document lists did not refresh after a sync finished
- The app could crash during sync while merging the vector database
- Deleted folders came back as orphans after syncing
- File size was missing for documents added before the file box
- Indexed badges in the explorer did not line up
Internal
- Local MCP server hardening: per-account isolation and transport checks (D-14 A1 Step 1 and 2)
- Screenshot automation for the landing page
Added
- Chat assistant info (model, provider, context) display
Changed
- Improved sync stability
Changed
- Automatic AI model list refresh schedule (new models from providers now show up automatically)
Internal
- CI: removed duplicate caches, scoped checks to MRs for faster pipelines
Added
- Rerank pipeline — reorders search/RAG results for higher top-hit accuracy
- New search logic with stronger hierarchy/filter combinations
Changed
- Tiptap editor design refresh + improved edit session persistence
- Final polish on large-scale design renewal (fonts, taskbar)
- PDF parser improvements
Fixed
- Deploy script: guard against tag push proceeding when main push fails
Changed
- Small stabilization release
Added
- New AI provider
Changed
- Design renewal 3 — Spine card, Explorer, Folder, Header
- Redesigned sidebar, header, toggle switches
Fixed
- Assorted Spine card / CSS issues
Changed
- Design renewal — unified font system (DM Sans / DM Serif Display / JetBrains Mono / Pretendard / Noto Serif KR / D2Coding)
Internal
- Hardened release workflow against GitLab CI main lock (v* tag push blocks main pushes with 403 during CI)
- deploy.ps1: stronger -Yes non-interactive guard
Fixed
- Better license error messages
- Chat error message display bug
- Tab scroll issue
Internal
- deploy.ps1: -Yes/-Shutdown flags for non-interactive deploys
Fixed
- License spontaneously getting released
- Toast/confirm dialog UX cleanup
Fixed
- Toast-related bugs
- Deploy script consistency
Internal
- Aligned Tauri JS API and Rust crate versions (@tauri-apps/api, plugin-dialog)
Added
- Expanded Settings features
Changed
- Rolled-up April~May improvements
Added
- Editor UI redesign Phase 1 — BubbleMenu (9 format buttons + AI submenu), Slash command placeholder, LinkEditPopover cleanup
- Remote model catalog — auto-fetches latest models from R2 with a 24-hour cache (22 models)
- Document viewer UX redesign (Phase A) — inline TXT/MD viewer, PDF/DOCX guidance dialog, 4 view modes
- Inbox feature (Phase A/B/C) — Inbox as a system workspace, dedicated action bar, manual AI classification + Undo
- Note import — bring TXT/MD text files in as notes + Import Dialog
- On-demand original document download — download originals uploaded from another device from the cloud only when needed
- Sidebar folder hover tooltip — folder content preview
- Master key inactivity timeout — auto-lock after configurable time (0/5/15/30/60 min) + Lock Now button
Changed
- Cleaned up 45 hardcoded English strings across 9 languages
Fixed
- Sidebar folder rename: Enter/Blur race condition, Escape to cancel
- Stale folder hover tooltip cache
- Google Drive token not cached after app restart
- Document cloud download failure
- Lance Pull merge failing to restore when table missing
- Embedding model install issue
Added
- CI/CD overhaul and code signing (Certificate) — signed Windows installer distribution begins
Added
- LanceDB vector orphan cleanup (M-6) — auto-delete vectors from expired conversations + periodic compaction of 3 tables
- Reconciliation utility — consistency check between deleted sources and vectors
- Multiple document/note improvements
Fixed
- Embedding model download issue
- Document cloud download failure (immutable_files switch + oplog cleanup + Drive fallback)
- CI: curl --ssl-no-revoke applied, node_modules excluded from cache
Added
- Device management & remote deactivation (EDGE-2-C) — view devices registered on your license + deactivate a specific device remotely
- Google Drive OAuth management (M-3) — Production approval, 55-minute proactive refresh, immediate stop on invalid_grant, in-app banner when re-auth needed
- LLM call stability (M-2) — exponential backoff x3 for 429/5xx in the auto-title/summary/memory pipelines
- Sync integrity improvements (SYNC-D series) — Merkle BLAKE3 hashing, resolved drive_file_id duplication, Lance Pull preserves local-only vectors (source_file-based merge), Push history tracked up to 50 entries
- Code block "language + copy" bar (L-10) — applied to both chat and note editor, supports Tab indent
Fixed
- NSIS hook duplicate define (hooks.nsh)
Added
- Sync fully redesigned (SYNC-REDESIGN) — always R/W on every device, removed WriterLocker, Union Merge, oplog.jsonl unification, 5-state UX (Synced/Syncing/Offline/Error/NotConnected)
- Full payment pipeline (D-15-D) — Lemon Squeezy license API integration, 7-day offline Grace Period, License tab UI, device status display, Standard→Premium upgrade coupon
- Plan gating Phase 2 (D-15-B) — Free 50-doc limit (single/batch/folder triple checks), UpgradePromptModal, plan badges
- Onboarding tutorial redesign (U-1) — Welcome → 4-step TutorialCarousel, enter app without an API key, inline guide card + auto-resend when API key missing
- Button design system v1+v2 — 7 variants × 7 sizes, depth layer system, ~80+ buttons unified across ~38 files
- Upload Docs item in Explorer/folder context menus
- Cross-device remote-document UX 3 layers — banner when original file missing, CloudOff badge in Explorer, upload-awareness toast
- Graceful shutdown sync UX on app close — auto-detect unpushed changes → overlay → push → exit
- Tab context menu — Close to the Left/Right, Pin protection
- bge-m3 runtime download UX (R-2) — progress display, prevents silent RAG degradation, normalized cache paths
- Landing page infrastructure — R2 static deploy, dynamic version display, checkout overlay, ToS + Refund Policy in 9 languages
- Auto Updater normalization (UPDATER-FIX) — unified R2, dynamic filename detection, tag/build version guard
- Windows icon cache refresh — SHChangeNotify call after update forces IconCache reload
- DEV-only plan switcher — instant switch between Free/Standard/Premium (not shipped in release builds)
Fixed
- 4 critical sync bugs (SYNC-HOTFIX) — block Push when Pull fails, handle fetch_remote_state parse failures, protect first sync with Pull-only
- Image sync (SYNC-IMG-FIX) — Pull miss + immutable delete protection
- Device last_seen_at not updating + "Synced" mislabel at app start
- Auto Sync running at startup when OFF
- Duplicate device instance creation bug (D-15-D-FIX2)
- Corrupted Cargo.toml / package.json recovery
- Error toast UI takeover (visibleToasts limit, fixed id for dedup)
- Landing mobile responsive breakage
Internal
- Supabase Edge Functions — dynamic Checkout API, device manager, LS webhook → subscriptions
- CI curl upload retry logic
- Checkout URL split into separate Standard/Premium UUIDs
Internal
- Pre-verification release candidate tags (CI pipeline dynamic file detection, etc.)
Added
- Agent system (2C-2) — chat integration, temperature provider relay, preset management UI, i18n cleanup
- MCP Transport abstraction + Streamable HTTP — stdio stability + HTTP server support + SQLite storage migration + Keyring auth token storage
- Sync Batch A — universal file sync layer, real-time dirty flag
- Chat feature batch — PDF attach (native for 3 providers + custom fallback), range-select memo save, image gallery
- AI hierarchy search improvements + search enhancements (trigram FTS5, 3-way RRF, 2-column preview, filter UI)
Changed
- GLASS design system applied
- UI/UX redesign S1~S6 — window manager (FloatingPanel + PanelCanvas), shadcn/ui adoption, TaskBar redesign, Explorer panel, Docked layout mode
- Phosphor Icons 1st pass replacement
- Breadcrumb / Tools popover improvements
Fixed
- Multiple QA patches for AI hierarchy search
- doc panel target_id validation, incomplete message save after cancel, workspace-active indicator, and more
Added
- Trash — soft delete + TrashView + restore, prevents CASCADE data loss
- Factory Reset — 8 categories individually selectable
Changed
- Multiple UI improvements, QA patches
Fixed
- Clippy manual_flatten, etc.
Fixed
- CI/CD release download 404 root fix — switched to GitLab Generic Packages Registry
- .nsis.zip not generated root fix — added createUpdaterArtifacts
- CI build: signing key diagnostics + updater zip verification
Fixed
- Version display, 3 deploy build issues
Security
- Improved PAT (Personal Access Token) handling
Added
- Chat image attachment — Ctrl+V / file select / drag-and-drop, per-provider multimodal routing
- Q&A pair memo save — auto-include the question, blockquote format
- Sidebar conversation/memo view switcher — segmented control
- Extended document chunk preview — Split View, similarity score, reference badge
- Advanced model management — Capabilities tags, DnD reorder, cost dashboard, 9 preset providers
- Supabase Auth (Google/GitHub) complete — PKCE + localhost callback, auto-refresh, profile UI
Changed
- RAG automation (2C-RAG-FIX) — useRag defaults true, delete-before-ingest, improved search_documents tool
- Removed "chunks" jargon in favor of intuitive terms (2C-CHUNK-UX)
- Workspace → Folder terminology unified (i18n 5 languages)
- Color system switched to cool tones + deep purple accent
- Font sizes unified to industry standard
- Sidebar/Settings layout refactor (borderless, 3-column arrangement)
- ChatHeader redesigned and merged with input-bar bottom
Fixed
- Note image pipeline root redesign (2C-IMG-FIX3) — race condition, atomicity, relative paths, delete cleanup
- OAuth state collision (PKCE now handles CSRF protection)
- 8 Clippy lint fixes
Added
- Tiptap WYSIWYG note editor
- Cross-device sync (Phase 2B) — Google Drive backend, SQLite Union Merge, Sync UX
- Persistent context (2B-3/4) — auto conversation summary, auto memory extraction, forget_note, semantic search
- Semantic conversation search (2B-5) — FTS5 + LanceDB hybrid, redesigned search modal
- Dynamic model registry (2C-1) — register custom providers, auto-fetch /v1/models
- "Soft Depth" theme — CSS variable system (--v-*), color palette, sidebar tree
- Tab bar — temporary/pinned tabs, sidebar expansion state moved to Zustand
- Manual update feature
Changed
- Chat UI cleanup — gradient borders, welcome card, code blocks
- Folder collapse, new-workspace conversation, note panel, Sync terminology
Fixed
- Clippy type_complexity warning
- CI cache pollution prevention
Added
- Workspace hierarchy (3 levels)
- Memo CRUD + AES-256-GCM encryption
- @mention context selection — directly reference documents/memos from the input
- Conversation → memo conversion (📌 save)
- AI built-in tools (search, document lookup, etc.)
- Real-time token/cost display (BYOK differentiation)
- Conversation persistence (SQLite) + auto title + FTS5 search + real sidebar data + Ctrl+K search modal
- OOBE onboarding + API key trust UI
- GitLab CI/CD + NSIS installer + Auto Updater
Added
- First alpha release — MVP (Phase 1) complete
- Multi-model chat (BYOK) — Claude, GPT streaming (Gemini code complete)
- Local vector DB — LanceDB-based conversation/document vectorization and search
- Local embedding — bge-m3 CPU execution, multilingual support (30~86ms/chunk)
- Basic RAG — TXT/MD/HTML/PDF/DOCX upload → chunking → embedding → search → response
- MCP basic integration — stdio server, Tool Use orchestration for 3 providers (Claude/GPT/Gemini), filesystem server (14 tools) live-tested
- 3-pane layout + chat core (streaming + Markdown + ToolCall) + Settings/MCP/RAG UI + ModelSelector