Shell Pilot 1.22.3

September 6, 2026 · Bug-fix release

The sidebar reflection now lights only the part of the sidebar level with the colour on screen. 1.22.2 introduced the per-band “tell-tale” gradient that was supposed to do exactly this, but in practice the whole sidebar washed in one colour from top to bottom: a Claude Code logo in the first few rows turned the entire column orange; a block of red errors halfway down turned the entire column red. Two user screenshots confirmed it.

The bug

The view composited two layers, and the wrong one dominated.

Underneath was the aggregate wash — a single averaged hue spanning the full sidebar height. Because the aggregate energy carries the 0.70 presence floor, it painted roughly 0.34 alpha (at the shipped 75% intensity) uniformly down the whole column whenever any colour was on screen at all.

On top sat the 12-band vertical layer, the one that actually knows where the colour is. But it was capped at 0.22 alpha and driven by raw coverage, so it peaked around 0.165 and was usually far below that.

The uniform layer was about twice the strength of the localized one, so the vertical structure never survived to the screen. The sampler and the band maths were already correct — only the composition was wrong.

The fix

The sidebar now draws the band layer and nothing else.

AmbientReflectionView gained a Rendering mode: .localized for the sidebar — bands only, falling back to the aggregate wash just for a value that carries no bands — and .uniform for session rows, which keep the aggregate glow because a 40 pt row is too short to carry vertical structure.

The band layer takes over the full 0.65 alpha ceiling, and its response to per-band coverage is now a square root rather than linear. In a typical band, one error line spanning 40% of the width is about 0.5 coverage: linearly, at the shipped intensity, that was ≈0.24 alpha — right where the sidebar’s behind-window vibrancy eats it — and it is now ≈0.34, plainly visible. A single coloured glyph (≈0.04 coverage) still comes out around 0.10 alpha and stays invisible, so a lone bullet cannot light a band. A per-band presence floor was rejected for exactly that reason: it would light a band holding one bullet as brightly as one holding a whole line.

Bands with no colour stay fully transparent and borrow their nearest coloured neighbour’s hue, so a hotspot fades softly into clear glass above and below instead of ending in a seam.

The tell-tale display-lightness moved from 0.62 to 0.70. The layer is now the primary one on the sidebar rather than an accent over a pale wash, and at up to 0.49 alpha a 0.62 red read as a stain on the glass rather than light falling on it. 0.70 stays under the 0.78 ambient lightness, so a diff red still arrives as red rather than salmon.

Verification

A signed Release build was launched against the real configuration and driven with raw terminal output.

Tests

390 tests pass across 29 suites, up from 388. The new ones are localizedRenderingDrawsBandsInsteadOfTheAggregateWash and aSingleColouredLineLightsItsOwnBandAndNothingElse, the regression test for this bug.

One tolerance was widened: the tell-tale lightness round-trip test now allows 0.05 rather than 0.001, because at 0.70 the chroma-boosted red (capped at 0.30 Oklab chroma) is outside sRGB, and the clipped red channel pulls the measured lightness to ≈0.66. The substantive assertions — that the band is darker and more saturated than the wash — are unchanged. No user-facing behaviour regresses.

Known limits