Skip to content

release: v1.4.2 - #18

Merged
Gyanano merged 5 commits into
mainfrom
release/1.4.2
Sep 3, 2026
Merged

release: v1.4.2#18
Gyanano merged 5 commits into
mainfrom
release/1.4.2

Conversation

@Gyanano

@Gyanano Gyanano commented Sep 3, 2026

Copy link
Copy Markdown
Owner

Release v1.4.2

Patch 发版,两项均已实测验证:

四件套已对齐 1.4.2。


Note

Medium Risk
macOS in-place updates perform filesystem bundle swaps and shell execution; failures fall back to the manual DMG flow, but a bad edge case could still affect the installed app.

Overview
v1.4.2 bumps version metadata across the frontend, Tauri crate, tauri.conf.json, and version.json.

Release notes in settings no longer use a target="_blank" link (which the webview ignores). View release notes calls a new Tauri open_url command that opens http/https URLs via the OS browser (open / xdg-open / rundll32), with scheme validation and unit tests.

macOS updates change launch_installer_and_exit: when the app runs from a real .app bundle, it mounts the downloaded DMG, writes a detached trampoline shell script, exits, and the script waits for the process, stages the new bundle with ditto, atomically swaps .app folders with rollback, detaches the volume, and relaunches. If in-place prep fails (dev build, mount errors, etc.), behavior falls back to opening the DMG for manual install. Windows/Linux install launching is unchanged aside from routing through launch_inner.

Reviewed by Cursor Bugbot for commit 6a060c5. Bugbot is set up for automated code reviews on this repo. Configure here.

Gyanano and others added 5 commits September 2, 2026 10:06
Plain <a target="_blank"> is a no-op inside the Tauri webview, so the
"view release notes" button in Settings did nothing. Add a small
open_url command that hands http(s) URLs to the OS opener (macOS open /
Windows rundll32 / Linux xdg-open) — the same mechanism the installer
launcher already uses — and wire the button through it.
fix(ui): 「查看日志」按钮无法跳转 Release 页面
Previously macOS updates ended by opening the downloaded dmg, leaving
the user to drag the .app into /Applications and confirm Finder's
replace prompt. Now, when running from a real .app bundle, the updater
mounts the dmg read-only and spawns a trampoline shell script before
exiting. The trampoline waits for the process to die, stages the new
bundle next to the target with ditto, swaps with atomic mv (rolling
back if the second move fails), detaches, and relaunches — zero
prompts. Any failure (dev binary outside a bundle, hdiutil errors,
unwritable install dir) falls back to the old open-the-dmg flow.

Pure helpers (bundle-path detection, hdiutil mount-point parsing,
shell quoting, script rendering) are unit-tested cross-platform; the
hdiutil/ditto execution is cfg(macos)-gated. Swap mechanics validated
end-to-end against the signed V1.4.1 dmg in a sandboxed target, and
the full GUI flow verified on hardware: check -> download -> install
-> automatic relaunch into the official signed build.
feat(updater): macOS 原地升级 —— 去掉 Finder 替换确认弹窗
@cursor

cursor Bot commented Sep 3, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_27efd9bf-604f-4a77-aca1-07b7957ff433)

@Gyanano
Gyanano merged commit 4eb6171 into main Sep 3, 2026
3 checks passed
@Gyanano
Gyanano deleted the release/1.4.2 branch September 3, 2026 15:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant