31 August 2026
34 changes:
- The half of OAuth discovery that was missing
- Three components that were nearly accessible
- The Model Context Protocol, over HTTP, for somebody else's assistant
- Offering an MCP capability without writing a class
- A page head that stops claiming things the page never said
- What the site tells a machine that arrives uninvited
- A keyboard can get past the navigation, and the consent screen stops phoning out
- A token outlived the client that issued it, and kept working
- An error log that was mostly not errors
- A client secret nobody had to present
- The SMTP password was readable to anyone who could read the database
- The webhook signing key and the TOTP seed, likewise
- A tenant scope that held until you asked for page 1
- A grant on one record opened the whole collection
- The session cookie lost its
secureflag behind every TLS-terminating proxy - The legacy CSRF check compared tokens with
=== - A LIMIT built by string concatenation
addslashes()as an escaping fallback, and as a PHP-literal encoder- The README described a framework this is not
- The schema promised tenant isolation nobody implements
- Joins on two columns, and aliases that survive resolution
- Permissions can now be resolved within one organisation
- Roles had two tables, a permissions screen, and no way to make one
- The client secret is hashed, and the realtime key moves out of its way
- A public client can say it is one
- The roles screen had a menu entry and no address
- A guard that read a variable that did not exist (FW-047)
- A pager that could not be told to stop counting (FW-048)
- Two components no theme could style
SchemaBuilder::hasIndex()- Tokens are encrypted at rest, and matched on a digest