Two repairs an operator can see from across the room, and one they can only see in a query plan.
The light theme stops painting dark-tuned colour
Warning, success and danger text, the query editor's Explain control and the monitoring status rings were all drawn in colours chosen against a dark ground and reused unchanged on the light one. The worst of them measured 1.457:1 against the surface behind it, which is not a shade of hard to read, it is text the size of its own background.
Every accent is now a token, resolved per theme, and each one is measured on every ground it can actually land on: the five studio surfaces, its own tinted fills, and the brand tile. Light clears a floor of 4.79:1 and dark 4.97:1, with no token below AA on either.
The measurement is the part that lasts. Contrast in this repository used to be a ratio written into a comment beside the colour, which is a claim rather than a check. It is now a test that reads the Tailwind palette out of node_modules and re-derives every ratio on every run, so a palette change that restyles a step fails the suite instead of shipping.
Engine identity colours came with it. Sixteen hues that label a thing rather than a state, chosen for perceptual separation in Oklab rather than by eye, and held to the separation the shipped dark set already had.
Query plans are asked for in the grammar the server accepts
The Explain panel sent one MySQL form to every relative of MySQL and one PostgreSQL form to every relative of PostgreSQL. Neither wire family shares its parent's EXPLAIN grammar, so seven engines answered a parse error that surfaced as the panel's own "no execution plan" empty state: a broken panel read as a query with nothing to show.
Both providers now probe the grammar on the connection they already hold, when it opens, and declare what the server accepted. Materialize, CockroachDB, TiDB, StarRocks, SingleStore, Apache Doris and Databend each render their own plan. Nothing branches on a product name to do it; the probe reads success or failure, never an error code.
The Overview and Health panels answer on more of the MySQL wire family
SHOW STATUS LIKE '<name>' is a parse error on Apache Doris, for a filter the statement never needed. Those panels now send one bare SHOW STATUS and pick the rows they want out of the answer, which is also one round trip fewer than before.
The fabricated fallbacks went with it. The status lists genuinely differ across the family, and a variable an engine does not publish now reads as absent rather than as MySQL's compiled-in default reported as if it had been measured.
Also in this release
LOG_LEVEL is documented in .env.example, with a test that fails when an environment variable the app reads is left undocumented. A Spanish README. Three documentation sweeps replacing stale line-number citations with named ones. The AWS Marketplace AMI package, which builds nothing until the listing is live.
Contributors
Named for what they did, in the order their work appears above.
- kaya-abdullah reported both Doris failures, and reported them as one shape rather than two bugs: a capability being treated as a per-provider constant. That reading is what turned the fix into a grammar probe on both wire families instead of two special cases.
- dchaudhari7177 documented
LOG_LEVELand wrote the guard that fails when the next environment variable goes undocumented, and replaced the stale line-number citations in the MySQL provider doc with named ones. - yusuf-gundogdu built the AWS Marketplace AMI package.
- NormanSMA added the Spanish README.
- be-student replaced the stale top-level code citations.
- sonalisrisivani brought the API documentation's type blocks back into agreement with the interfaces they describe.
Helm chart: 0.1.60
appVersion 0.14.1 and the default image tag follow the app. No template, value or default moves in this chart version: everything above lands in the image.
Full changelog: 0.14.0...0.14.1