The ESP capability matrix showed six column headers and not one of its eight data rows. Every widget had been telling Claude it was already the right size
Orbit's widgets render in a pane the host resizes by measuring the document inside it. Every one of the 23 pinned its own document to the viewport — body and .wrap both at 100vh — so the measurement handed the pane its own height straight back, forever, and a widget could never ask for more room than it had already been given. On the populated ESP capability matrix at a 520px pane the grid was 45px against 592px of content: the six column headers and none of its eight rows, in the widget whose entire purpose is the grid. It is 592 of 592 now, and the document reports its true 1170px at both a 520 and a 760 pane. This reverses a call published on this page in 0.32.0, which said three widgets were flagged and deliberately not fixed after two attempts made things worse. That note has stood for eleven releases and it is retired here — the item below says what changed the answer, and it was not persistence.
What shipped
•Bug fix — every widget reports its true height to the host. 24 edit sites, not 23: 46 declarations across the widget stylesheets, five leftover viewport caps on collapsed sidebars converted to pixels, and one inline style written at runtime by the shared shell. Measured on the ESP capability matrix at a 520px pane, the grid went from 45px of 592 to 592 of 592, and the document now reports the same 1170px at a 520 and a 760 pane. That equality — same reported height at two pane sizes — is the invariant, and it was false for all 24 files. A check now refuses any viewport-relative height anywhere in the widget code, proven by reintroducing a single pin and watching it fail by filename and line, so this cannot quietly come back.
•Correction — 0.32.0 said this was "a legibility bug" on the ESP matrix, the client simulator and the render gate, "documented rather than guessed at a third time" after two reverted attempts. That was the right call on the evidence then and it is wrong now. What changed is not another attempt at the same target: the fix on record put a min-height on the box that was shrinking, and a child cannot grow inside a parent that is pinned, so it overflowed and the panel below rendered on top of it. The cause was the parent, in every file, plus a 24th site nobody had counted — the shell writing an inline height at runtime, which re-pins over any stylesheet edit and would have made 23 correct stylesheet fixes cosmetic. The third guess was available and was also measured: a max-height of 46vh layered on top of this deletion caps the same grid at 40%. The workaround becomes the new bug the moment its cause is gone.
•Behaviour change — the "Made with Orbit AI" row is sticky, and this is the part that could have gone backwards. The deleted inline style was doing real work: measured before the fix at 1400x900, the row sat at top 862, bottom 900, all 38 of its pixels visible. It achieved that by clipping the widget's own content to make room, using the same pin that hid the grid. Giving the content back pushes the row past the fold of a now-taller document — fine in the pane, where auto-resize grows to fit, and wrong in a browser tab, which is the shared-artifact case the row exists for. Sticky sits at the end of a short document and pins to the bottom of a tall one, and pins no height, so the widget still reports its true size.
•Fix — two widgets stopped looking broken when they were only idle. The render gate and the client simulator wrote "Waiting for…" into the narrow sidebar and left the main column blank, which reads as a failed render rather than an empty one. Both now speak in the primary stage and name the tool that fills it: orbit_render_gate to measure an email at 640px and 390px in a real browser, orbit_client_sim to see how each email client degrades the HTML. The simulator's notice is inserted outside the wrapper that stays hidden until data arrives, so nothing has to be un-hidden and every pane is intact when a result lands.
•Fix — documentation links were legible in light mode and not in dark. The link colour measured 3.89:1 against the dark card background, under AA for body text, which is how the ESP matrix shipped its source links unreadable to half its readers. The lighter rung of the same brand pair is 5.82:1 on that ground and is what dark mode uses now. Light mode is unchanged at 6.29:1 — a dark-only correction, not a palette change.