fix(app): drop blocking version-handshake; Shutdown is fire-and-forget
The handshake ran synchronously in Bridge::connect: on a build-id mismatch it sent Cmd::Shutdown and awaited a reply that never flushes (the daemon exits first), so request() hit its 5s timeout and the reconnect-retry respawned the daemon and re-sent Shutdown — a loop that produced repeated 'spaceshd listening' lines and a multi-second launch delay. The id stamps also differed between the separately-built daemon and GUI, so it fired on normal launches. - Remove the handshake auto-restart; `make install`/`reinstall` already kill and replace the daemon reliably. health.build stays for display in Settings. - Shutdown now goes through a fire-and-forget send (no reply wait, no retry), fixing the same loop for the Settings Restart button. - Makefile: `make app-bundle` builds just the .app via `tauri build --bundles app` (no .dmg, no hdiutil) and `reinstall` uses it — faster self-update that can't hang on a mounted DMG volume. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -44,14 +44,18 @@ targets: ## add rust targets for the universal build
|
||||
|
||||
.PHONY: dmg
|
||||
dmg: targets ## build the universal (Intel + Apple Silicon) .dmg — UNSIGNED
|
||||
# Tauri's universal build compiles each arch separately and expects a sidecar
|
||||
# named with THAT arch's triple; it lipo's them into the universal bundle and
|
||||
# ships spaceshd inside spacesh.app/Contents/MacOS (else the GUI is offline).
|
||||
# Tauri's universal build needs BOTH the per-arch sidecars (resolved during each
|
||||
# arch sub-build) AND a fat spaceshd-universal-apple-darwin (copied into the final
|
||||
# bundle — Tauri does not lipo sidecars itself). spaceshd ships inside
|
||||
# spacesh.app/Contents/MacOS else the GUI is offline.
|
||||
cargo build --release -p spaceshd --target aarch64-apple-darwin
|
||||
cargo build --release -p spaceshd --target x86_64-apple-darwin
|
||||
rm -rf $(SIDECAR_DIR) && mkdir -p $(SIDECAR_DIR) # avoid stale sidecars poisoning the bundle
|
||||
cp target/aarch64-apple-darwin/release/spaceshd $(SIDECAR_DIR)/spaceshd-aarch64-apple-darwin
|
||||
cp target/x86_64-apple-darwin/release/spaceshd $(SIDECAR_DIR)/spaceshd-x86_64-apple-darwin
|
||||
lipo -create -output $(SIDECAR_DIR)/spaceshd-universal-apple-darwin \
|
||||
target/aarch64-apple-darwin/release/spaceshd \
|
||||
target/x86_64-apple-darwin/release/spaceshd
|
||||
cd $(APP_DIR) && npm run tauri build -- --target $(TAURI_TARGET) --config $(BUNDLE_CONFIG)
|
||||
@echo "→ $(DMG_DIR)" && ls -lh $(DMG_DIR)/*.dmg
|
||||
|
||||
@@ -63,6 +67,13 @@ dmg-native: ## build a .dmg for the current arch only (faster)
|
||||
cd $(APP_DIR) && npm run tauri build -- --config $(BUNDLE_CONFIG)
|
||||
@ls -lh $(NATIVE_DMG_DIR)/*.dmg
|
||||
|
||||
.PHONY: app-bundle
|
||||
app-bundle: ## build just the native .app (no .dmg/hdiutil — fast, for self-install)
|
||||
cargo build --release -p spaceshd
|
||||
rm -rf $(SIDECAR_DIR) && mkdir -p $(SIDECAR_DIR)
|
||||
cp target/release/spaceshd $(SIDECAR_DIR)/spaceshd-$(NATIVE_TRIPLE)
|
||||
cd $(APP_DIR) && npm run tauri build -- --bundles app --config $(BUNDLE_CONFIG)
|
||||
|
||||
.PHONY: dev
|
||||
dev: ## run the app in dev mode (tauri dev)
|
||||
cd $(APP_DIR) && npm run tauri dev
|
||||
@@ -90,7 +101,7 @@ install-universal: kill-daemon ## install the universal .app to /Applications
|
||||
xattr -dr com.apple.quarantine /Applications/spacesh.app
|
||||
|
||||
.PHONY: reinstall
|
||||
reinstall: dmg-native install ## native rebuild + reinstall + restart daemon (fast self-update)
|
||||
reinstall: app-bundle install ## fast self-update: build .app (no dmg), reinstall, restart daemon
|
||||
|
||||
# ---- Tests ----
|
||||
|
||||
|
||||
Reference in New Issue
Block a user