2026-05-08: Fix tauri:dev astro command not found + release --no-push flag
Problem
Section titled “Problem”1. npm run tauri:dev fails with sh: astro: command not found
Section titled “1. npm run tauri:dev fails with sh: astro: command not found”The project is developed on two Macs (M3 Pro + M1 Max) with source synced via Google Drive offline mode.
When switching machines, Google Drive does not correctly replicate symlinks — node_modules/.bin/ entries arrive as empty/broken zero-byte symlinks on the second machine.
Root confirmation: front/node_modules/.bin/astro was a symlink pointing to "" (empty string, size 0).
Secondary issue: tauri-dev.sh had no npm install step (unlike tauri-build.sh), so it could not self-heal after a machine switch.
Also: the root package.json invoked all tauri scripts with sh scripts/tauri-*.sh, but the scripts use #!/usr/bin/env bash and bash-only features (pipefail). sh ignores the shebang.
2. No way to release without pushing
Section titled “2. No way to release without pushing”release.mjs always pushed to remote after tagging. There was no way to bump versions, commit, and tag locally without immediately pushing.
Solution
Section titled “Solution”scripts/tauri-dev.sh
Section titled “scripts/tauri-dev.sh”- Added
npm ci 2>/dev/null || npm installfor bothfront/andbackend/before building. - Added Google Drive path detection: if
REPO_ROOTcontainsGoogle Drive, a warning is printed to explain the symlink situation.
package.json (root)
Section titled “package.json (root)”- Changed
sh scripts/tauri-*.sh→bash scripts/tauri-*.shfor all four tauri scripts so the#!/usr/bin/env bashshebang andpipefailare respected.
scripts/release.mjs
Section titled “scripts/release.mjs”- Added
--no-pushflag. When set, the script bumps all 6 version files, commits, and tags locally but skips bothgit pushcalls. - Prints manual push instructions when
--no-pushis used.
docs/versioning.md
Section titled “docs/versioning.md”- Documented the new
--no-pushflag.
docs/desktopapp.md
Section titled “docs/desktopapp.md”- Added “Multi-machine development” section explaining the Google Drive / symlink behavior and that
tauri-dev.shnow auto-heals.
Files changed
Section titled “Files changed”| File | Change |
|---|---|
scripts/tauri-dev.sh | npm install before build + Google Drive warning |
package.json (root) | sh → bash for tauri scripts |
scripts/release.mjs | --no-push flag |
docs/src/content/docs/versioning.md | Document --no-push |
docs/src/content/docs/desktopapp.md | Multi-machine development section |