v1.3.0
Layout Engine Fixes
Text overflow in column-direction flex containers
determineFlexBaseSize and determineCrossSize in the flexbox engine passed the main-axis size as maxWidth to the text measure function. In column layouts (main axis = height), text received the container height as its width constraint and never wrapped. Fixed by swapping Measure() arguments when isRow is false.
Containers grow to fit content height
Containers without explicit CSS height now shrink to fit their content. Previously, computeNode() set Layout.Height from availableHeight and never updated it after children were laid out. Now recalculates from line cross sizes (row) or item main sizes (column) after layout completes.
Performance
sRGB lookup tables for gradient rendering
Replaced per-pixel math.Pow calls in gradient interpolation with precomputed lookup tables — 256-entry decode table and 4096-entry encode table (32KB, fits L1 cache). Eliminates millions of transcendental function calls per gradient render.
Docs & Site
- Updated design goals to emphasize output quality over raw benchmarks
- Added comparison tool commands to AGENTS.md
- Cache busting for example images via Astro asset pipeline
- Dark mode default, emoji card layout fixes
Full Changelog: v1.2.0...v1.3.0