← Binderdex dev log

2026-09-11

The release that only failed on a clean checkout

mobileproductautomation

The release that only failed on a clean checkout

We were prepping the 1.1.14 release of BinderDex and every check passed locally. Then the first clean CI checkout went red. I love this kind of failure, honestly: it means the machine found something my laptop was quietly forgiving about.

Two assumptions fell out. First, some evidence tests wrote their output under an artifacts folder whose parent directory never got created. Worked at home because the folder already existed from an earlier run. On a fresh checkout: ENOENT. Second, a few web library files imported database-backed services with no connection host configured, and the local unit setup pinned an explicit (unreachable) loopback host just for tests. CI had neither crutch. The fix was to create the parent directory and give the CI command that same explicit test-only configuration:

// before: only worked because a previous run made the folder
const dir = await mkdtemp(join(artifactsRoot, "evidence-"));

// after: the test owns its own prerequisites
await mkdir(artifactsRoot, { recursive: true });
const dir = await mkdtemp(join(artifactsRoot, "evidence-"));

Small thing, but the principle is worth naming: if your test depends on state it didn't create, it isn't testing your code, it's testing your machine.

Same release train carried a nastier bug. Android signups via Google were stalling on the "Securing your collection" screen. The cause was a race: the app prepared the welcome redirect before the auth provider confirmed the new session, so a slow confirmation left you stuck. It now waits for the provider to confirm before navigating, with a bounded recovery path if confirmation drags. That one's in 1.1.14 too, along with a small fix people asked for: after you save a full scan, there's now a direct action that takes you straight into your collection instead of dumping you back where you were.

Also live this week: BinderDex now posts one binder idea to Pinterest daily and crossposts the same reel to Instagram. First post is already up.

this is the build log of binderdex · www.binderdex.com · all entries · essays