Conversation
- Add check_server_update and install_server_update Tauri commands that fetch the latest huntly-server.jar from GitHub releases and install it into the app data directory; expose server_auto_update setting - Add SettingsTab UI for manual and automatic server JAR updates with version display and status alerts - Fix updater endpoint URL to use tauri-namespaced release tag - Refactor Tauri build workflow: upgrade all actions to v4, switch Windows target to x86_64, use mvnw, add embedded JRE build, dynamic updater config - Add tauri-release.yml workflow for publishing Tauri releases - Fix extension-build workflow yarn cache path to app/extension/yarn.lock - Add manual chunk splitting for MUI/React vendors in extension wxt.config - Mark shortcut prompts with includeCurrentPageContext and disable when page is not ready; add corresponding WelcomePane tests Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
🤖 Augment PR SummarySummary: This PR adds a self-update mechanism for the bundled Huntly server JAR in the Tauri desktop app and improves release/build automation. Changes:
Technical Notes: Server JAR updates use the GitHub Releases API and validate the downloaded JAR’s embedded version metadata before swapping the file in the app data directory. 🤖 Was this summary useful? React with 👍 or 👎 |
| ServerInfo { | ||
| jar_version, | ||
| java_version, | ||
| jar_path: jar_path_buf.as_ref().map(canonicalize), |
There was a problem hiding this comment.
collect_server_info maps paths through canonicalize(), which does into_string().unwrap() and can panic for non-Unicode filesystem paths (possible on Windows), and the server JAR path can now come from app_data_dir. A panic here would crash get_server_info/UI rather than returning a recoverable error.
Severity: medium
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
| std::fs::remove_file(&backup_path).map_err(|e| e.to_string())?; | ||
| } | ||
| if dest_path.exists() { | ||
| std::fs::rename(&dest_path, &backup_path).map_err(|e| e.to_string())?; |
There was a problem hiding this comment.
In install_server_update, if rename(dest_path, backup_path) fails (e.g. the JAR is still locked), the function returns immediately and leaves the freshly-downloaded temp_path on disk. That can leave large stray files behind across repeated failures.
Severity: low
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
| fn is_server_jar_asset(asset_name: &str, version: &str) -> bool { | ||
| asset_name == SERVER_JAR_FILE_NAME | ||
| || asset_name == format!("huntly-server-{}.jar", version) | ||
| || (asset_name.starts_with("huntly-server-") && asset_name.ends_with(".jar")) |
There was a problem hiding this comment.
is_server_jar_asset currently matches any huntly-server-*.jar, which can unintentionally select *-sources.jar/*-javadoc.jar if those are ever attached to a release. That would make the updater download a non-runnable JAR.
Severity: medium
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
Summary
check_server_updateandinstall_server_updateTauri commands that fetch the latesthuntly-server.jarfrom GitHub releases and atomically install it into the app data directory, with backup/rollback on failureserver_auto_updatesetting and SettingsTab UI for manual/automatic server JAR updates with version display and status alertstauri/-namespaced release tagx86_64-pc-windows-msvc, use./mvnw, add embedded JRE build step, add dynamic updater pubkey configtauri-release.ymlworkflow for publishing Tauri releasesapp/client→app/extension)wxt.config.tsincludeCurrentPageContext: trueand disable when page is not ready; add correspondingWelcomePanetestsTest plan
yarn tauri devand verify settings tab shows server JAR update sectionserver_auto_updatetoggle triggers update check on enablecd app/extension && yarn testcd app/tauri && yarn buildextension-build.ymlworkflow uses correct yarn cache path🤖 Generated with Claude Code