diff --git a/internal/gateway/ui/index.html b/internal/gateway/ui/index.html
index c0cc5ac..b59f1d0 100644
--- a/internal/gateway/ui/index.html
+++ b/internal/gateway/ui/index.html
@@ -966,24 +966,22 @@ function drawStatusChart(rows) {
const total = (rows||[]).reduce((a,x)=>a+x.reqs,0);
if (!total) return;
const palette = ['#3fb27f', '#4fa3d8', '#f0a45c', '#e06c6c', '#b06ce0', '#8a9bb5', '#6fbfa0', '#d0a45c'];
- const r = Math.min(rect.width, H) / 2 - 2;
+ const rOut = Math.min(rect.width, H) / 2 - 2;
+ const rIn = Math.max(rOut * 0.45, 1);
const cx = rect.width / 2, cy = H / 2;
let a0 = -Math.PI / 2;
rows.forEach((row, i) => {
const sweep = row.reqs / total * Math.PI * 2;
+ const a1 = a0 + sweep;
ctx.beginPath();
- ctx.moveTo(cx, cy);
- ctx.arc(cx, cy, r, a0, a0 + sweep);
+ // outer arc, then inner arc reversed -> true annulus slice (hollow center)
+ ctx.arc(cx, cy, rOut, a0, a1);
+ ctx.arc(cx, cy, rIn, a1, a0, true);
ctx.closePath();
ctx.fillStyle = palette[i % palette.length];
ctx.fill();
- a0 += sweep;
+ a0 = a1;
});
- // carve a clean center hole (donut) instead of a solid pie with a number
- ctx.beginPath();
- ctx.arc(cx, cy, Math.max(r * 0.45, 1), 0, Math.PI * 2);
- ctx.fillStyle = 'var(--card)';
- ctx.fill();
}
function paintKeyTable(rows, keyNames) {
const el = $('#tb-key'); if (!el) return;