-
Notifications
You must be signed in to change notification settings - Fork 0
Add auto-updater functionality using Tauri v2 updater plugin #48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
Co-authored-by: stolinski <[email protected]>
…documentation Co-authored-by: stolinski <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds a complete auto-updater system to the Syntax Production Assistant using the Tauri v2 updater plugin, allowing users to check for and install updates through the application interface.
- Implements backend updater functionality with two new Tauri commands for checking and installing updates
- Adds a "Check for Updates" button to the main UI with loading states and user prompts
- Configures the updater to use GitHub releases endpoint with dialog mode enabled
Reviewed Changes
Copilot reviewed 6 out of 7 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| src/routes/+page.svelte | Adds update checking UI and functions with user interaction flows |
| src-tauri/src/lib.rs | Implements check_for_updates and install_update Tauri commands |
| src-tauri/tauri.conf.json | Configures updater plugin with GitHub endpoint and dialog settings |
| src-tauri/Cargo.toml | Adds tauri-plugin-updater dependency |
| package.json | Adds @tauri-apps/plugin-updater frontend dependency |
| README.md | Documents auto-updater usage and configuration instructions |
Files not reviewed (1)
- pnpm-lock.yaml: Language not supported
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
| isCheckingUpdates = true; | ||
| updateMessage = ''; | ||
| try { | ||
| const result = await invoke('check_for_updates'); |
Copilot
AI
Sep 20, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The invoke function is not imported. You need to add import { invoke } from '@tauri-apps/api/core'; at the top of the script section.
| if ((result as string).includes('Update available')) { | ||
| const shouldInstall = confirm(`${result}\n\nWould you like to install the update now?`); | ||
| if (shouldInstall) { | ||
| await installUpdate(); | ||
| } | ||
| } else { | ||
| alert(result); | ||
| } |
Copilot
AI
Sep 20, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nitpick] Using confirm() and alert() dialogs creates a poor user experience. Consider implementing custom modal components or using Tauri's dialog API for more consistent, styled prompts that match the application's design.
| match updater.check().await { | ||
| Ok(Some(update)) => { | ||
| match update.download_and_install(|_chunk_length, _content_length| { | ||
| // You can use this to show progress | ||
| }).await { |
Copilot
AI
Sep 20, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The install_update function calls updater.check().await again, which duplicates the network request that was already made in check_for_updates. Consider caching the update information or restructuring the flow to avoid redundant API calls.
| "https://github.com/syntaxfm/production-assistant/releases/latest/download/latest.json" | ||
| ], | ||
| "dialog": true, | ||
| "pubkey": "" |
Copilot
AI
Sep 20, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The public key is empty, which means updates won't be cryptographically verified. This poses a security risk as malicious updates could be installed. Either add a proper signing key for production or add a comment explaining this is for development only.
| "pubkey": "" | |
| "pubkey": "", | |
| "pubkeyComment": "Empty pubkey is for development only. Do not use in production." |
This PR implements a complete auto-updater system for the Syntax Production Assistant using the official Tauri v2 updater plugin as requested in the issue.
Changes Made
Backend (Rust)
tauri-plugin-updaterdependency toCargo.tomlcheck_for_updates: Checks for available updates and returns version informationinstall_update: Downloads and installs updates with progress feedbackFrontend (Svelte)
@tauri-apps/plugin-updaterfrontend dependencyConfiguration
tauri.conf.jsonto use GitHub releases endpointDocumentation
README.mdwith comprehensive auto-updater usage instructionsHow It Works
The implementation follows Tauri v2 best practices and provides a seamless, production-ready update mechanism that integrates naturally with the existing UI.
Screenshot
The new "Check for Updates" button is positioned alongside other action buttons in the settings area for easy access.
Fixes #23.
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.