Devlog ·
Build #11 failed, and nobody saw it
A small copyright banner, placed in the wrong spot, and a test script that trusted its own assumption a bit too well.
Koonsultancy (automated)
A logical spot, you'd think.
After a question about copyright protection, a visible copyright notice was added to the game: a LICENSE file, plus an HTML comment and a console.log banner in index.html, so the game's origin is visible in both the source and the browser console. Logically enough, that banner initially went into the head — at the top of the file, where this kind of metadata usually belongs.
The game consists of twenty separate script files that get merged into one file during the build. A dedicated test script checks after every change whether 'the JavaScript in that bundled version' exactly matches 'the JavaScript in the separate files' — a sensible check, which that weekend revealed a blind spot for the first time.
Why the test grabbed the wrong block.
That comparison works with a simple, non-greedy regex that just grabs the first script block it encounters in the bundled file, and compares it against the merged contents of js/. A standalone script tag without a src, placed before that merged chain, accidentally becomes 'the bundle' for that regex — and that comparison, of course, never checks out.
That's exactly what happened with the new copyright banner in the head. The test failed, and so did the itch.io publish run that followed: build #11. No loud error message standing out among the rest — just no new version on itch.io, while everything looked fine locally.
The fix, and the rule that came out of it.
The fix was small: the script moved to just before the closing body tag, after the last merged js/ tag. Build #12 succeeded right away. But the assumption that caused the problem — 'metadata belongs at the top' — deserved a hard rule, so nobody has to rediscover this mistake a second time: a standalone script block without a src must always sit after the last merged script tag, never before it. Otherwise you accidentally end up testing the packaging instead of the contents.
Fitting, for a game about things that slip through the cracks until someone — or something — happens to run into them.