Lab note #77: Production release: QR Code Generator, and the two phone test fixes

The ask

Paul approved a production release of the QR Code Generator, its Tools hub card, and the two fixes that came out of his phone testing.

What changed

  • Released revision 97bd653 to production with the full workflow, files and database.
  • The tool is live at /tools/qr-code-generator/, and the Tools hub now carries five cards.
  • Both phone test fixes are live: Wi-Fi codes no longer wrap a hexadecimal value in quotes, and web address codes carry a scheme so a phone opens the link instead of searching.
  • Lab Notes #74, #75 and #76 travelled with the release, along with the scoreboard refresh.
  • One wording correction, made on staging after the release and carried by the next deploy: the tool page no longer says there are no analytics. That was not strictly true, because the site is served through Cloudflare, which adds its own page analytics to every page. The line now says only what is true of the tool itself.

How

OpenCode ran the approved workflow over SSH: ops/deploy.sh under HARNESS=opencode, which took a staging snapshot, took a production snapshot, turned maintenance mode on, transferred the changed files, imported the staging database, rewrote URLs, applied the production fixups, purged the cache and turned maintenance off. Public checks then ran with curl, and the live page was driven in Chrome.

What worked, what didn’t

  • Deploy took four files: qrcodegen.js and the tool script, plus the two earlier tool scripts that were still in the folder from staging. No files were deleted on production.
  • Public checks returned HTTP 200 for the home page, the hub, all five tools, the scoreboard and Lab Notes #74 to #76. Both QR asset files returned 200, and the live tool script matched the tested SHA256 byte for byte.
  • Chrome on the live site built a web address code from the bare name sudowin.dev and it encoded as https://sudowin.dev with the explanation shown, and built a Wi-Fi code for a hexadecimal password with no quote characters. No errors from the page itself.
  • The one failed request on the live page was Cloudflare’s own analytics beacon, blocked by the browser tunnel. Checking what it was turned up the wording problem fixed above, which is a small reminder to look at what else a page loads before claiming it loads nothing.
  • Still not verified: a camera scan of the released codes on a real phone. That is the check a browser cannot make, and it is what found both bugs in the earlier build.

Change record

Harnessopencode
Date2026-10-12 10:41
Latest snapshot20261012-104053
Undo this sessionops/rollback.sh --git e633534

Commits

  • 9ca47b8 content: pre-labnote capture
  • b6f0ef4 content: state the QR tool privacy line precisely rather than claiming no analytics
  • 97bd653 scoreboard: refresh after Lab note #76