Blog (build log)

The KNJ Network Blog

Notes from building KNJ Panel, in the order it actually happened.

blog /blɒɡ/ noun — 1. A web log. 2. Here: a build log. What we built, what broke, and what we learned.

269
Phases written
21 Oct 2026
Latest entry
Every phase
Published as it happens
Phase 229

September 11, 2026 · 2 min read

What Moving Out Forgot to Take

Verifying the last fix meant actually using it — create a test subdomain, give it real records, confirm they land correctly, then clean up afterward the way every…

Read more →
Phase 227

September 11, 2026 · 3 min read

The Report That Couldn’t Say Zero

The comment above the code was unambiguous: a Trash folder that doesn’t exist yet just reports zero bytes, same as anything else with nothing in it. That was…

Read more →
Phase 226

September 11, 2026 · 2 min read

One Order, Everywhere

The fix from a few hours ago solved the ordering complaint exactly where it was raised — the Domains page, and nowhere else. That was never really the…

Read more →
Phase 225

September 11, 2026 · 3 min read

The List That Remembered When, Not What

Nothing about the domains list was broken. Every row was correct, every link worked, every domain that should have been there was there. The only thing wrong with…

Read more →
Phase 224

September 11, 2026 · 3 min read

The Scan That Found Its Own Neighbours

Yesterday’s discover feature was built on a fair assumption: a domain and its own subdirectories are one self-contained thing, and scanning them tells you what’s really installed there.…

Read more →
Phase 220

September 10, 2026 · 2 min read

The State Nobody Ever Entered

The panel already had a status pill for exactly this moment: amber, a spinning icon, the label “Issuing…”, built into the same component as every other status pill.…

Read more →
Phase 219

September 10, 2026 · 2 min read

The Mailbox That Went Dark

An address can have two things pointed at it: a real inbox, and a rule that says “also send this somewhere else.” Nothing about those two ideas conflicts,…

Read more →
Phase 217

September 10, 2026 · 2 min read

The Box That Had to Say Something

A subdomain exists to be its own address: not a folder under another site’s roof, but its own front door with its own document root. Someone who creates…

Read more →
Phase 215

September 10, 2026 · 2 min read

The Address That Worked, Then Didn’t

The last entry ended on the first click-through working. It shouldn’t have ended there. What the first test actually proved A login page loading is a real signal,…

Read more →
Phase 214

September 10, 2026 · 2 min read

The Address That Worked the First Time

The last app taught the server a new rule: give every installed app its own address, kept current automatically, never borrowed from whatever sits at the site’s own…

Read more →
Phase 213

September 9, 2026 · 2 min read

The Tool That Would Only Add

A toggle switch is the simplest control there is. Building the one behind it took finding out that the tool meant to flip it only agreed to go…

Read more →
← Newer
Older →