What these are

These are write-ups of things that broke while I was building and shipping my tools, and how each one got fixed. Most of them took real time to track down, and I couldn’t find a good explanation anywhere else, so I wrote them down.

Each note names the real repository, and where there is one, the error message and the commit that fixed it. When a fix lives in my private configuration instead of a public repository, the note says so.

The end of each note covers what it does and doesn’t prove, and where every fact in it came from.

The notes

The ruff defaults trap: a green local check, a red tag build

A bare ruff check uses ruff's defaults and skips bugbear, so a zip() without strict= passed locally and failed the release build.

Read guide →

The silent update-check failure: urllib, HTTPS inspection, and truststore

Python's default TLS verification broke the update check on filtered networks while the browser worked. truststore, a hidden import, and a loud error message fixed it.

Read guide →

Window position that drifts: the Win32 frame rect the Qt backend hides

Saving a window's position with pywebview's Qt backend put it back on the wrong monitor and crept down the screen each launch. Saving the Win32 frame rectangle instead fixed it across five tools.

Read guide →

The browser ID that only worked on HTTPS: crypto.randomUUID and secure context

A dashboard generated a per-browser ID with crypto.randomUUID, which exists only in a secure context. Opened on a LAN IP over plain HTTP, it threw and the page failed to start.

Read guide →

The file that waited forever: a worker that retired one instant too early

A transfer worker retired itself when the queue looked empty. A file added in that same instant saw a still-live worker, so no new one started, and it never transferred. The fix makes stopping and starting share one lock.

Read guide →

The installer that ran on Windows and broke on Linux: CRLF line endings

A Windows-authored install.sh carried CRLF line endings into the repo, so it failed when run on the Linux box it was meant for. A one-line .gitattributes rule that forces LF on shell scripts fixed it.

Read guide →

The magenta halo on the splash screen: PyInstaller's color-key transparency

PyInstaller fakes a transparent splash by keying out magenta. Soft image edges blended toward magenta and left a colored outline on some machines. A fully opaque, magenta-free splash, guarded by a test, fixed it.

Read guide →

The cleanup that deleted a repository: PowerShell 5.1 ignored -Include

A command meant to delete two kinds of test cache folder deleted every folder in a repository instead, because Windows PowerShell 5.1 ignored its -Include filter without saying so.

Read guide →