emrg: gen-assets — fall back to next renderer when icon renders transparent - #722
Conversation
…parent Build Release v0.2.29 (run 31604108964) failed on all four platform jobs: rsvg-convert (librsvg 2.58) renders icon.svg 99.2% transparent — even the opaque background rect does not paint. The #705 opacity gate correctly caught the blank icon, but gen-assets.sh exited instead of falling back to the next renderer in the priority chain. Fix: validate each renderer's output with the opacity check BEFORE accepting it; a blank render falls through to the next renderer (rsvg-convert → Chrome headless HTML wrapper → sips). Only when ALL renderers produce blank output do we fail loudly. Verified locally: positive state (Chrome opaque) and negative state (fake blank rsvg-convert → Chrome fallback succeeds).
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle. Fix verified in both states: (1) positive — Chrome HTML-wrapper renders icon.svg opaque; (2) negative — simulated blank rsvg-convert (mirroring CI run 31604108964) correctly falls back to Chrome. bash -n clean. This unblocks the v0.2.29 release build.
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle. Re-verified this cycle: diff unchanged (5f4b149, single-file packaging/gen-assets.sh), CI test PASS (31606448698), MERGEABLE. Both positive (Chrome opaque) and negative (blank rsvg → Chrome fallback) states validated — the fix unblocks the v0.2.29 Build Release.
argszero
left a comment
There was a problem hiding this comment.
✅ LGTM — cycle. Third consecutive approval from a different cycle (R1190 + R1191 + this cycle). Diff unchanged at 5f4b149, CI test PASS (31606448698), MERGEABLE. Merge condition met — this unblocks the v0.2.29 Build Release.
Fixes Build Release v0.2.29 failure (run 31604108964): all four platform jobs failed at the icon generation step.
Root cause
rsvg-convert(librsvg 2.58 on Ubuntu 24.04 / Homebrew / Windows) renderspackaging/assets/icon.svg99.2% transparent — even the opaque background rect does not paint. The #705 opacity gate correctly caught the blank icon, butgen-assets.shexited on the first renderer's blank output instead of falling back to the next renderer.Fix
Each renderer's output is now validated by the opacity check before being accepted; a blank render falls through to the next renderer in the priority chain (
rsvg-convert→ Chrome/Edge headless HTML wrapper →sips). Only when all renderers produce blank output do we fail loudly.Verification (both states, per #455 lesson)
rsvg-convert(fully-transparent 1024x1024 PNG, mirroring CI) → script detects blank, falls back to Chrome headless → succeeds.bash -nsyntax clean.