From 8179d3f3f9afa3f90af847cde17c1409081ab4ea Mon Sep 17 00:00:00 2001 From: autonomic-bot Date: Sun, 31 May 2026 06:23:13 +0000 Subject: [PATCH] fix(3 U2): inline-SVG sunflower + font-safe cap line for headless card render MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Headless chromium has no colour-emoji font, so 🌻/🏆/⚑ rendered as tofu boxes in the PNG card. Replace with a self-contained inline-SVG sunflower + plain-text 'capped:'/'full clean climb' markers. The U3 PR comment keeps the real 🌻 emoji (Gitea markdown renders it). Pure render change. Co-Authored-By: Claude Opus 4.8 (1M context) --- runner/harness/card.py | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/runner/harness/card.py b/runner/harness/card.py index 334c2b6..44cf4ae 100644 --- a/runner/harness/card.py +++ b/runner/harness/card.py @@ -41,6 +41,19 @@ STATUS_COLOR = { } +# Inline-SVG sunflower (🌻) for the card header. Self-contained so it renders deterministically in +# headless chromium, which has no colour-emoji font (the PR comment in U3 keeps the real 🌻 emoji — +# Gitea markdown renders it). 8 petals around a seed disc. +_PETALS = "".join( + f'' + for a in range(0, 360, 45) +) +FLOWER_SVG = ( + '' + f'{_PETALS}' +) + + def level_color(level: int) -> str: return LEVEL_COLOR.get(int(level), "#8b949e") @@ -125,7 +138,7 @@ def render_card_html(data: dict, screenshot_rel: str | None = "screenshot.png") body{{margin:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif;background:#0d1117;color:#c9d1d9}} .card{{width:900px;background:#161b22;border:1px solid #30363d;border-radius:12px;overflow:hidden}} .hd{{display:flex;align-items:center;gap:1rem;padding:1.1rem 1.3rem;border-bottom:1px solid #30363d}} -.flower{{font-size:1.8rem}} +.flower{{flex:none}} .title{{flex:1}} .title h1{{margin:0;font-size:1.4rem}} .title .ver{{color:#8b949e;font-size:.9rem}} @@ -149,11 +162,12 @@ tr.stage td{{padding-top:.5rem;border-bottom:1px solid #30363d}} .shot.noshot{{display:flex;align-items:center;justify-content:center;height:225px;color:#8b949e;font-size:.85rem}} .flags{{display:flex;gap:.6rem;padding:.6rem 1.3rem 1rem}} .flag{{border:1px solid;border-radius:6px;padding:.15rem .5rem;font-size:.78rem;color:#c9d1d9}} +.cap b{{color:#c9d1d9}}
-
🌻 +
{FLOWER_SVG}

{recipe}

{version}
{level}level
-
{("⚑ " + cap) if cap else "🏆 full clean climb (level 6)"}
+
{("capped: " + cap) if cap else "full clean climb — top level (6)"}
{rows}
{shot_html}
{"".join(flag_bits)}
"""