release 1.15.1: SUMMARY severity backgrounds on mon HTML; fix section paint
Phase section() ╔═║╚ boxes are class section (no sum-header). Real SUMMARY rows keep solid OK/WARN/ERROR/INFO backgrounds on the web.
This commit is contained in:
parent
25cb8216b3
commit
66fa471d00
4 changed files with 85 additions and 48 deletions
2
VERSION
2
VERSION
|
|
@ -1 +1 @@
|
|||
1.15.0
|
||||
1.15.1
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ Git tags: `vMAJOR.FEATURE.FIX` (e.g. `v1.8.0`). File `VERSION` omits the `v` pre
|
|||
|
||||
| Tag | Date (UTC) | Notes |
|
||||
|-----|------------|--------|
|
||||
| **v1.15.1** | 2026-07-19 | **Bugfix:** mon HTML — phase `section()` boxes no longer painted as SUMMARY (were blue/green `sum-header`); only real SUMMARY rows get solid severity backgrounds (OK/WARN/ERROR/INFO). |
|
||||
| **v1.15.0** | 2026-07-19 | **Feature:** CHF **fake-incoming amount ladder** in `devtesting` (`DEVTESTING_LADDER=1`, default **23** log-spaced rungs **CHF:0.01 → CHF:50000**); synthetic geniban debit funds each rung; baseline plumbing probe kept. |
|
||||
| **v1.14.0** | 2026-07-19 | **Feature:** SUMMARY box rows are **colour-distinct** (per-severity badge + tinted background + bold counts; verdict-coloured header); HTML mon pages style `sum-ok` / `sum-warn` / `sum-err` / … panels the same way. |
|
||||
| **v1.13.13** | 2026-07-19 | **Bugfix:** progress estimate for **devtesting** / fake-franken is 8 (happy-path numbered checks), not 10 — avoids mid-run 42/48 then end snap 46/46. |
|
||||
|
|
|
|||
6
lib.sh
6
lib.sh
|
|
@ -921,9 +921,11 @@ _summary_totals_box() {
|
|||
local ROW_BLK=$'\e[1;97;48;5;53m' # bold white on dark magenta
|
||||
local ROW_TOT=$'\e[1;37;48;5;236m' # bold white on dark gray
|
||||
|
||||
printf -- '\n%s╔══════════════════════════════════════╗%s\n' "$hdr_bg" "$N"
|
||||
# Include SUMMARY on all three frame lines so HTML classify maps them to sum-header
|
||||
# (phase section() boxes use the same ╔═║╚ glyphs but must not get sum-* paint).
|
||||
printf -- '\n%s╔════════ %s ════════════════════╗%s\n' "$hdr_bg" "$_sum_lbl" "$N"
|
||||
printf -- '%s║ %-34s ║%s\n' "$hdr_bg" "$_sum_lbl" "$N"
|
||||
printf -- '%s╚══════════════════════════════════════╝%s\n' "$hdr_bg" "$N"
|
||||
printf -- '%s╚════════ %s ════════════════════╝%s\n' "$hdr_bg" "$_sum_lbl" "$N"
|
||||
|
||||
# $1=row_bg $2=badge_bg $3=tag $4=n $5=label_fg — full-width-ish row
|
||||
_sum_row() {
|
||||
|
|
|
|||
|
|
@ -277,19 +277,13 @@ def is_numbered_check_line(line: str) -> bool:
|
|||
def classify(line: str) -> str:
|
||||
u = line.upper()
|
||||
low = line.lower()
|
||||
# section / summary headers before badge matching (they contain the word ERROR)
|
||||
if re.search(r"[╔═║╚]|SUMMARY", u) and (
|
||||
"SUMMARY" in u or "═══" in line or "╔" in line or "╚" in line
|
||||
):
|
||||
if "SUMMARY" in u or ("╔" in line and "═" in line) or ("╚" in line and "═" in line):
|
||||
if "SUMMARY" in u or (not is_numbered_check_line(line) and ("╔" in line or "╚" in line or "║" in line)):
|
||||
if "SUMMARY" in u or re.match(r"^\s*[╔╚║]", line):
|
||||
# SUMMARY box header only when the word SUMMARY is present (not phase section() boxes).
|
||||
# Phase section() also uses ╔═║╚ with blue BG_SEC — those must stay class "section".
|
||||
if "SUMMARY" in u:
|
||||
return "sum-header"
|
||||
if re.match(r"^\s*[╔╚]", line) and "═" in line:
|
||||
return "sum-header"
|
||||
if re.match(r"^\s*║", line) and not is_numbered_check_line(line):
|
||||
return "sum-header"
|
||||
# Double-line box frames from section() → section (no sum-* paint)
|
||||
if re.match(r"^\s*[╔╚].*═", line) or re.match(r"^\s*║\s", line):
|
||||
return "section"
|
||||
if "--- ERRORS" in u or "ERRORS ·" in u or "ERRORS (" in u:
|
||||
return "meta"
|
||||
if "numbered checks" in low:
|
||||
|
|
@ -1883,59 +1877,99 @@ main {{ padding: 12px 14px 48px; max-width: 1200px; }}
|
|||
.line.warn {{ color: var(--warn); }}
|
||||
.line.info {{ color: var(--info); }}
|
||||
.line.blocker {{ color: var(--blocker); }}
|
||||
.line.section {{ color: var(--sec); margin-top: 8px; font-weight: 600; }}
|
||||
/* Phase section titles (╔═║╚ from section()) — light chrome, NOT sum-* paint */
|
||||
.line.section {{
|
||||
color: #9cf;
|
||||
margin-top: 10px;
|
||||
font-weight: 700;
|
||||
background: transparent;
|
||||
border-left: 3px solid #345;
|
||||
padding: 2px 0 2px 8px;
|
||||
}}
|
||||
.line.meta {{ color: var(--dim); }}
|
||||
.line.plain {{ color: var(--fg); }}
|
||||
/* v1.14.0: SUMMARY box rows — distinct bg + bold per severity */
|
||||
/* SUMMARY box — full-width solid backgrounds matching terminal ROW_* tints */
|
||||
.line.sum-header,
|
||||
.line.sum-ok,
|
||||
.line.sum-err,
|
||||
.line.sum-warn,
|
||||
.line.sum-info,
|
||||
.line.sum-block,
|
||||
.line.sum-totals,
|
||||
.line.sum-verdict-ok,
|
||||
.line.sum-verdict-warn,
|
||||
.line.sum-verdict-err {{
|
||||
display: block;
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
margin: 2px 0;
|
||||
padding: 6px 10px;
|
||||
border-radius: 3px;
|
||||
font-weight: 800;
|
||||
letter-spacing: 0.02em;
|
||||
}}
|
||||
.line.sum-header {{
|
||||
color: #fff; font-weight: 800; letter-spacing: 0.04em;
|
||||
background: linear-gradient(90deg, #1a3a1a 0%, #0a1a0a 100%);
|
||||
border-left: 4px solid var(--ok); padding: 4px 8px; margin-top: 10px;
|
||||
color: #e8ffe8;
|
||||
background: #145214; /* solid green header (not blue) */
|
||||
border: 1px solid #2a8a2a;
|
||||
border-left: 6px solid #3d3;
|
||||
margin-top: 14px;
|
||||
text-shadow: 0 1px 0 #0008;
|
||||
}}
|
||||
.line.sum-ok {{
|
||||
color: #b8f0b8; font-weight: 700;
|
||||
background: #0d1f0d; border-left: 4px solid var(--ok);
|
||||
padding: 3px 8px; margin: 2px 0;
|
||||
color: #d4ffd4;
|
||||
background: #0f3d0f;
|
||||
border: 1px solid #1a6b1a;
|
||||
border-left: 6px solid var(--ok);
|
||||
}}
|
||||
.line.sum-err {{
|
||||
color: #ffc9c9; font-weight: 700;
|
||||
background: #2a0a0a; border-left: 4px solid var(--err);
|
||||
padding: 3px 8px; margin: 2px 0;
|
||||
color: #ffe0e0;
|
||||
background: #4a1010;
|
||||
border: 1px solid #822;
|
||||
border-left: 6px solid var(--err);
|
||||
}}
|
||||
.line.sum-warn {{
|
||||
color: #1a1400; font-weight: 800;
|
||||
background: #c9a227; border-left: 4px solid #8a7010;
|
||||
padding: 3px 8px; margin: 2px 0;
|
||||
color: #1a1400;
|
||||
background: #e6c200; /* bright gold — clearly not blue */
|
||||
border: 1px solid #a68b00;
|
||||
border-left: 6px solid #8a7010;
|
||||
}}
|
||||
.line.sum-info {{
|
||||
color: #c8e7ff; font-weight: 700;
|
||||
background: #0a1520; border-left: 4px solid var(--info);
|
||||
padding: 3px 8px; margin: 2px 0;
|
||||
color: #e0f2ff;
|
||||
background: #0c2a4a; /* navy INFO row only */
|
||||
border: 1px solid #1a4a7a;
|
||||
border-left: 6px solid var(--info);
|
||||
}}
|
||||
.line.sum-block {{
|
||||
color: #f5d0ff; font-weight: 700;
|
||||
background: #1a0a1a; border-left: 4px solid var(--blocker);
|
||||
padding: 3px 8px; margin: 2px 0;
|
||||
color: #ffe0ff;
|
||||
background: #3a1040;
|
||||
border: 1px solid #6a2a70;
|
||||
border-left: 6px solid var(--blocker);
|
||||
}}
|
||||
.line.sum-totals {{
|
||||
color: #eee; font-weight: 700;
|
||||
background: #1a1a1a; border-left: 4px solid #666;
|
||||
padding: 4px 8px; margin: 4px 0 2px;
|
||||
color: #f0f0f0;
|
||||
background: #2a2a2a;
|
||||
border: 1px solid #555;
|
||||
border-left: 6px solid #888;
|
||||
margin-top: 6px;
|
||||
}}
|
||||
.line.sum-verdict-ok {{
|
||||
color: #b8f0b8; font-weight: 800;
|
||||
background: #0d1f0d; border: 1px solid #2a5a2a;
|
||||
padding: 4px 8px; margin: 4px 0 8px;
|
||||
color: #d4ffd4;
|
||||
background: #0f3d0f;
|
||||
border: 2px solid #2a8a2a;
|
||||
margin-bottom: 10px;
|
||||
}}
|
||||
.line.sum-verdict-warn {{
|
||||
color: #1a1400; font-weight: 800;
|
||||
background: #c9a227; border: 1px solid #8a7010;
|
||||
padding: 4px 8px; margin: 4px 0 8px;
|
||||
color: #1a1400;
|
||||
background: #e6c200;
|
||||
border: 2px solid #8a7010;
|
||||
margin-bottom: 10px;
|
||||
}}
|
||||
.line.sum-verdict-err {{
|
||||
color: #ffc9c9; font-weight: 800;
|
||||
background: #2a0a0a; border: 1px solid #622;
|
||||
padding: 4px 8px; margin: 4px 0 8px;
|
||||
color: #ffe0e0;
|
||||
background: #4a1010;
|
||||
border: 2px solid #a33;
|
||||
margin-bottom: 10px;
|
||||
}}
|
||||
a.jump {{ color: inherit; text-decoration: underline dotted; }}
|
||||
footer {{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue