Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# The Tauri CLI re-serializes src-tauri/Cargo.toml during `tauri build` — a semantic no-op
# that is byte-identical on Linux/macOS but written with CRLF on Windows, where it read as a
# tracked modification and stamped the Windows portable `-dirty` (#513; diagnosed by the
# release workflow's tree-state steps). Declaring the file text/LF makes git normalize line
# endings when comparing, so a pure EOL rewrite never counts as dirt — a material rewrite
# (the CLI actually changing the manifest) still would, which is exactly the distinction the
# build stamp wants.
src-tauri/Cargo.toml text eol=lf
16 changes: 16 additions & 0 deletions .github/workflows/release-builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,15 @@ jobs:
npm run build
working-directory: frontend

# The build stamp (#513) reads `git status --porcelain` at compile time, so a build step
# that mutates the tree stamps the portable `-dirty`. Print the tree state before and
# after the build so a dirty stamp is diagnosable FROM THIS LOG instead of by archaeology
# (the first stamped run re-locked a stale src-tauri/Cargo.lock — #515; a Windows leg
# stayed dirty after that fix, which is what this step exists to name).
- name: Tree state before the build (the stamp reads this)
shell: bash
run: git status --porcelain

# PORTABLE-ONLY build: `--no-bundle` compiles the gridfpv-desktop crate (with
# the embedded frontend + the Windows icon) into
# src-tauri/target/release/gridfpv-desktop[.exe] but produces NO installers
Expand All @@ -116,6 +125,13 @@ jobs:
# That catches a missing runtime library, a panic in setup, an embedded-asset failure, or an
# immediate exit. It does NOT prove the window renders or the console is usable — a human
# still has to click it once per platform.
# The after-shot of the tree-state pair above: whatever appears here and not there is
# what the BUILD wrote into the tracked tree — the exact set the stamp saw (build scripts
# run early in the compile, so strictly the stamp may have seen a prefix of it).
- name: Tree state after the build (what the build dirtied)
shell: bash
run: git status --porcelain

- name: Smoke-test the portable binary (does it start?)
shell: bash
env:
Expand Down