From ce0cc5a3a0e7ecc497649fd28d7a0865a065c808 Mon Sep 17 00:00:00 2001 From: "Ryan Johnson (ntninja)" Date: Mon, 31 Aug 2026 19:54:59 -0500 Subject: [PATCH 1/2] =?UTF-8?q?ci(release-builds):=20print=20the=20tree=20?= =?UTF-8?q?state=20around=20the=20build=20=E2=80=94=20the=20stamp's=20dirt?= =?UTF-8?q?y=20diagnosis=20(#513)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A -dirty stamp is only debuggable if the log says WHAT was dirty. Before/after `git status --porcelain` around the Tauri build names the mutation (the stale lock re-lock was found by archaeology, #515; the Windows leg's residue gets named by this pair). Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01VdCtnsbcVyBLmc5xo5dHEX --- .github/workflows/release-builds.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/release-builds.yml b/.github/workflows/release-builds.yml index 8ac38ed..5856808 100644 --- a/.github/workflows/release-builds.yml +++ b/.github/workflows/release-builds.yml @@ -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 @@ -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: From f2a4b8ba135610e08c3d86698e3d8413249610d6 Mon Sep 17 00:00:00 2001 From: "Ryan Johnson (ntninja)" Date: Mon, 31 Aug 2026 20:02:40 -0500 Subject: [PATCH 2/2] fix(build): normalize src-tauri/Cargo.toml EOL so the Windows tauri-cli rewrite isn't "dirt" (#513) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The probe run's tree-state step named the Windows leg's residue: ` M src-tauri/Cargo.toml`. The Tauri CLI re-serializes the manifest during `tauri build` — byte-identical on Linux/macOS, CRLF on Windows — and the EOL-only rewrite read as a tracked modification, stamping the Windows portable -dirty while the other two legs came out clean. `text eol=lf` makes git normalize when comparing, so only a MATERIAL manifest rewrite counts as dirt, which is the distinction the stamp wants. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01VdCtnsbcVyBLmc5xo5dHEX --- .gitattributes | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..64bdb01 --- /dev/null +++ b/.gitattributes @@ -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