Skip to content

Debugging

29 August 2026

27 changes:

  • Two invisible columns, and a row of chips that ran off the panel
  • Reading a sent message back: what it carried, and what came of it
  • Web push: a notification on a device whose browser is closed
  • The coverage gate reported 100% on a change that added an untested package
  • Sending one account a message, on the channels it can actually receive
  • Mass messages: an audience worth choosing, and push that reaches people
  • The line the inbox shows, dark mode, and what DNS says about your mail
  • Three MCP tools for the questions that were being answered by failing
  • A log viewer in the DevPanel, at the address that used to 400
  • The mail log grows without limit, and deleting it is the wrong fix
  • The drift check's own false alarms, and the panel that had never worked
  • The email preview's findings were taking a third of the width from the message
  • Push had five parts and shipped four of them
  • Every browser restart minted a session, and none of the old ones ever ended
  • Nothing knew what kinds of mail an application sends
  • Choosing who a mass message goes to, and seeing who that is
  • The soft prompt was rendered on every page and never shown
  • Nothing recorded a sent push
  • The DevPanel had a second log viewer because of one hard-coded URL
  • The database tab could not answer a developer's question about a database
  • An unread message was something you had to go looking for
  • Two development query logs that grew until the process died
  • The database tab, again: chunks, and the half of the admin screen it still lacked
  • Twenty-five forked PHP processes, for a constant
  • The database tab, third time: copied rather than rewritten
  • An unsubscribe is two records, and the second had nowhere to go
  • The coverage gate, and the two bugs it found

14 August 2026

39 changes:

  • The server now says where its own time went
  • An API request is not a browser session
  • auth:unlock — lifting a lockout you gave yourself
  • The toolbar answers "who am I, and until when"
  • A parent class for services, and a tab that admits they exist
  • An Errors tab, for what the browser threw
  • A Client tab: what the browser thinks the world is
  • The page outranks the toolbar
  • An API playground in the toolbar — and a doubled slash it found
  • A WebSocket daemon that can read a Redis stream
  • The body of a DELETE request
  • A ? in a raw fragment now binds where it was written
  • init will not scaffold over your application
  • Debug data for an application that does not use the API layer
  • The other way to lose a page
  • The toolbar injects through the response, not an output buffer
  • Two build settings that failed quietly
  • Three dead stubs, and four corrections to older posts
  • scaffold:spa — a front end for an application that already exists
  • The MCP server says which project it is
  • Typed endpoints, generated from the document
  • Where the suite's fifteen minutes actually go
  • A shared document, seven eight-second tests, and a ? in the bar
  • A scaffolded application was set up to learn it the hard way
  • The suite was running composer update sixty-one times
  • The test database was afraid of losing data
  • TRUNCATE is slower than dropping the table
  • The comment said // product 1 = Apple
  • The same change made PostgreSQL slower
  • A suite that only passed in one order
  • The guide described an API nobody had built
  • The widget area that rendered nothing
  • maxRuntime was a range, and it read like a number
  • An empty ban list is still a ban list
  • The ingest dropped the id it had just read
  • Which rule said no
  • Four corrections from the other side of the boundary
  • "Minor variable name changes"
  • A blank page is not an error

12 August 2026

14 changes:

  • Late writes into compressed chunks no longer have to be lost
  • print replaces the pdf document type, which had not worked for years
  • MariaDB stops pretending to be MySQL
  • The toolbar now sees what a page does after it renders, and can be opened on a live server
  • Nine queries per request, most of them avoidable
  • The SPA debug panel now says it exists
  • The docs now say when you would need them
  • The toolbar's hide button now hides the toolbar
  • spa:dev / spa:build, and a service container that actually exists
  • One toolbar, delivered two ways — and the SPA panel gains every tab
  • A name for every request, and the log lines it wrote
  • The server-rendered toolbar now uses the one renderer too
  • Settings read every key one at a time on PostgreSQL, and said nothing
  • SSE events published during a reconnect are no longer lost