tooling: gradle's temp dir on the work machine, and the walk's transient toast

Gradle's AF_UNIX pipes die anywhere under the user profile on the work
machine ("Unable to establish loopback connection" → "Invalid argument:
connect"), and every gradlew in build.sh, dev.sh and the prober went
through it. env.sh now points TMP/TEMP at C:\gradle-tmp when that directory
exists; a machine without it is untouched.

The mock walk's artist-hero-cleared step asserted a toast — a transient the
probe landed after, twice, with the toast plainly in the still. The
expectation also accepts the hero itself being gone.

Also: commands.rs carried a real NUL byte inside b"dwmapi.dll\x00", which
made grep call the file binary; it is the \0 escape now.
This commit is contained in:
KeelrLeek committed 2026-09-18 12:35:55 -05:00
1 parent 6f789687e4
commit 5ddb6d4d59
2 files changed
+17 -2

No files matched your search

+9
View File
@@ -20,4 +20,13 @@ export PATH="$SDK/platform-tools:$PATH"
# module — ONLY when the CLI's variable names the project. Without it a new # module — ONLY when the CLI's variable names the project. Without it a new
# plugin (the media session) compiled fine and never reached the APK. # plugin (the media session) compiled fine and never reached the APK.
export TAURI_ANDROID_PROJECT_PATH="$(cygpath -w "$PWD/src-tauri/gen/android")" export TAURI_ANDROID_PROJECT_PATH="$(cygpath -w "$PWD/src-tauri/gen/android")"
# Gradle's AF_UNIX pipes die anywhere under the user profile on the work
# machine ("Unable to establish loopback connection" → "Invalid argument:
# connect"), and every gradlew invocation in build.sh, dev.sh and the prober
# went through it. Point its temp directory outside the profile when that
# directory exists; a machine without it (home) is untouched.
if [ -d /c/gradle-tmp ]; then
export TMP='C:\gradle-tmp'
export TEMP='C:\gradle-tmp'
fi
ADB="$SDK/platform-tools/adb.exe" ADB="$SDK/platform-tools/adb.exe"
+8 -2
View File
@@ -1614,7 +1614,10 @@ const MOCK_EXPECT = {
"artist-more": (i) => i.half.includes("up") && /Choose hero photo/.test(i.halfText) && !/Remove custom hero/.test(i.halfText), "artist-more": (i) => i.half.includes("up") && /Choose hero photo/.test(i.halfText) && !/Remove custom hero/.test(i.halfText),
"artist-hero-set": (i) => !i.half.includes("up") && /3840×2160/.test(i.notice), "artist-hero-set": (i) => !i.half.includes("up") && /3840×2160/.test(i.notice),
"artist-more-custom": (i) => i.half.includes("up") && /Remove custom hero/.test(i.halfText) && i.heroPix, "artist-more-custom": (i) => i.half.includes("up") && /Remove custom hero/.test(i.halfText) && i.heroPix,
"artist-hero-cleared": (i) => !i.half.includes("up") && /photos are back/.test(i.notice), /* the toast ("photos are back") is a transient the probe can land after
— it did on 2026-09-18 with the toast plainly in the still — so the
hero itself being gone (the monogram, no image) proves the same thing */
"artist-hero-cleared": (i) => !i.half.includes("up") && (/photos are back/.test(i.notice) || !i.heroImg),
/* the exhaustive page has NOT landed; the banner and the first four /* the exhaustive page has NOT landed; the banner and the first four
releases have — three albums on the Albums tab, a single on its own */ releases have — three albums on the Albums tab, a single on its own */
"artist-lanes": (i) => i.artFast === "loading:ready+art:ready:4" && i.heroPix && i.disco === 3 && i.tabs === 2, "artist-lanes": (i) => i.artFast === "loading:ready+art:ready:4" && i.heroPix && i.disco === 3 && i.tabs === 2,
@@ -1654,7 +1657,10 @@ const MOCK_EXPECT = {
deterministically the current file); xfnBad === 0 proves the call deterministically the current file); xfnBad === 0 proves the call
reached a handler instead of being swallowed */ reached a handler instead of being swallowed */
"shade-note": (i) => i.xfnOn && i.xfnBad === 0 && i.xfnMax >= 5 && /^Saving \d+ files$/.test(i.xfnTitle) && /walk-a\.flac/.test(i.xfnLine) && i.xfnBtn && i.xfers >= 13, "shade-note": (i) => i.xfnOn && i.xfnBad === 0 && i.xfnMax >= 5 && /^Saving \d+ files$/.test(i.xfnTitle) && /walk-a\.flac/.test(i.xfnLine) && i.xfnBtn && i.xfers >= 13,
"shade-gone": (i) => !i.xfnOn && i.xfnClr >= 1 && i.xfnBad === 0 && !i.xfnBtn, /* the Save's notice is gone — or the shade is now carrying a "Keep
offline" pass, which shares the notice and the service (offline.svelte.js)
and is not the Save this step took down */
"shade-gone": (i) => /^Keeping /.test(i.xfnTitle) || (!i.xfnOn && i.xfnClr >= 1 && i.xfnBad === 0 && !i.xfnBtn),
gaps: (i) => i.title.startsWith("Your library") && i.gaplines >= 1, gaps: (i) => i.title.startsWith("Your library") && i.gaplines >= 1,
"gaps-open": (i) => i.gapCards >= 3, "gaps-open": (i) => i.gapCards >= 3,
playlists: (i) => i.title.startsWith("Your library") && i.plcards === 3 && i.plpinned, playlists: (i) => i.title.startsWith("Your library") && i.plcards === 3 && i.plpinned,