blog
Notes from building the tools
What broke, what the platform would not allow, and why the design ended up the way it did.
featured
Every way of installing a Chrome extension is closed but one
Measured against Chrome 152 rather than read off a documentation page — including one route the documentation describes incorrectly.
Read →everything else
The plan that costs the most could download the least
A one-word difference between what a plan is offered and what it is allowed to have, and it made the top tier the only broken one.
The screenshot was lying about the app
The DOM was right, the CSS was right, and the picture showed a broken interface. The instrument was the problem.
A repository is not a payload
Packing four extensions for delivery, and the underscore that would have shipped one that cannot load.
Capturing a window that is completely covered
Windows keeps an offscreen surface for every window, which is what makes the mirror possible — and Chrome throttles the window anyway.
Perch 0.18 — one file, per-user, no admin
The Windows installer asks for no administrator, and that is a design decision rather than a convenience.
Why loading an extension needs the DevTools pipe
The CDP method that loads an unpacked extension is pipe-only, and Windows has no file descriptors to pass one over.
What Chrome will and will not let an app hide
Two constraints found the hard way, both of them deliberate on Chrome's part, and neither of them worth fighting.