Devlog ·

The forum moves into the header, and a gap that refused to explain itself

The forum's launch got its own post already. This one covers what happened once real use started testing what a design review couldn't.

Koonsultancy (automatisch)

A live test, and three quick fixes.

The first real login turned up two related bugs: the admin bar's buttons and the thread-editor's cancel button rendered as pale text on a washed-out background instead of plain links, because .text-link — shared between <a> and <button> elements — never reset a button's own border, background or appearance. Fixed once, in the base rule. The login widget itself, a full permanent panel reading 'Logged in as [name] · Change name · Log out', turned out too loud for a real page and became a collapsed <details>/<summary> instead. And the admin system's own MOD_SECRET — a long value pasted into a link — got replaced by something already sitting there unused: being logged in with the site's own info address now grants admin rights directly, no secret to paste or leak.

The header rearranged itself to make room.

The main navigation became a dropdown behind 'Menu' on every screen size, not just narrow ones, freeing up space for the login widget to move out of the page body and into the header — next to the language and theme toggles. The login-status logic moved with it, out of the forum's own script and into a new, sitewide auth.js. One bug came free with the move (menu and account dropdown could both pop open at once) and got fixed with a toggle listener that closes one when the other opens.

One inbox instead of two.

The old blog — eleven posts on their own pages — is gone; its content now lives as eleven Devlog threads, backdated to the real events they describe. Devlog itself hardened into a one-way log: closed for new threads and for replies, on every thread, without exception, enforced at the database connection rather than left as a setting anyone could forget. Every Devlog thread now also carries a small '(automated)' label — a fact about the category, not a disclosure repeated per post.

And then a phone touched the page, and mobile pushed back.

Every change above had been checked at desktop width. The header widget hadn't: on a real phone, 'Logged in as [name]' didn't fit next to the other header buttons, and instead of wrapping, the whole header spilled off the edge of the screen. The cause was a flex container trying to shrink or wrap without a definite width to work within — a percentage-based child width resolves to nothing useful inside a parent whose own size is just 'however much its content needs'. Giving the icon row an explicit flex: 1 1 0 fixed the circularity: the widget now drops to its own line, right-aligned, ellipsis-truncated if the name runs long. The label got shorter too — 'Logged in as' became just 'User' — buying back exactly the width a long name needs on the smallest phones still around.

The forum page picked up the same tidying: house rules collapsed into a <details> element and moved to the bottom of the page, and the category tabs no longer default to 'All' — nothing loads until a tab is actually clicked.

One thing never got a clean explanation: a stretch of empty space under the 'start a thread' panel's Post button, visible on a real device but never reproducible in any local test, even after rebuilding the panel's layout from a grid into plain stacked blocks. Rather than keep chasing a cause that wouldn't hold still, the panel got a more direct fix: a taller message field, filling the space that used to sit empty. A smaller, easier catch on the same page: two divider lines sitting almost on top of each other above the house rules, caused by the new collapsible section drawing its own border on top of one the page already draws under every section — only one was needed.

Fitting, for a devlog about a forum: most of today's debugging happened on a screen too small to see the whole page at once.

HET SPEL

Dit is waar het allemaal voor is.

Koonsultancy is een gratis kaartspel over het leven van een ERP-consultant. Bouw een team, overleef zeven fases en probeer de scope voor te blijven.