Context
Every transfer row shows a circular progress ring. While a run is in flight, a square patch of a slightly different colour appears behind each ring, roughly the size of the ring's box. It is visible on the actively downloading rows and it does not belong to the design.
Reported from real use in the WebView2 GUI. Screenshot in the report shows it on eight simultaneous downloading rows.
Where to look
Two suspects, both in web/styles.css, and they interact.
1. The drop-shadow filter on the ring (L598-606):
.ring .ring-fg {
stroke: var(--c);
...
filter: drop-shadow(0 0 4px color-mix(in srgb, var(--c) 80%, transparent));
transition: stroke-dasharray .3s linear;
}
A CSS filter promotes the element to its own compositing layer. In Chromium-based engines that layer is rasterised against the element's bounding box, which is a rectangle — and a rectangle is exactly what is showing.
2. content-visibility on the row (L564-577):
.frow {
...
content-visibility: auto;
contain-intrinsic-size: 3.4rem;
}
content-visibility: auto applies containment to the row. Containment plus a filtered descendant plus the spin animation on some states (L613-614) is a known source of repaint artifacts in Chromium.
The same drop-shadow pattern also exists on .spark circle (L514) — worth checking whether the sparkline shows a milder version of the same thing.
What to do
Bisect before fixing. In DevTools, on a row that shows the artifact:
- Disable
filter on .ring .ring-fg — does the square disappear?
- Re-enable it, disable
content-visibility on .frow — does it disappear?
- Report which one it was, or that it needs both.
Then fix the one that is responsible, keeping the glow if you can. Options worth trying, in order of preference:
- Move the filter to a wrapper that has no containment applied to it
- Replace
drop-shadow with an SVG <filter> with an explicit oversized filter region
- Give the row
contain-intrinsic-size room so the filter's bounds are not clipped
- Last resort: drop the glow on the ring. It is decoration; a square artifact is worse than no glow
Do not remove content-visibility outright without measuring — it is there for scroll performance with long transfer lists, and trading a visual glitch for a janky list is not an improvement. If you conclude it has to go, say so in the PR with what you observed.
Acceptance criteria
Notes for the contributor
This one needs Windows and the WebView2 GUI. It cannot be verified from Linux or macOS, and it cannot be verified from the code alone — which is why the issue asks you to bisect in DevTools rather than guess. Most of the open work here does not need Windows; this one does.
python moon_bridge.py starts the GUI. python render_gui.py out/ renders the interface headlessly in Chromium and may or may not reproduce it — if it does, that is a much faster loop, and worth reporting either way.
Comment here before you start, and say whether you have a Windows machine.
Context
Every transfer row shows a circular progress ring. While a run is in flight, a square patch of a slightly different colour appears behind each ring, roughly the size of the ring's box. It is visible on the actively downloading rows and it does not belong to the design.
Reported from real use in the WebView2 GUI. Screenshot in the report shows it on eight simultaneous
downloadingrows.Where to look
Two suspects, both in
web/styles.css, and they interact.1. The drop-shadow filter on the ring (L598-606):
A CSS
filterpromotes the element to its own compositing layer. In Chromium-based engines that layer is rasterised against the element's bounding box, which is a rectangle — and a rectangle is exactly what is showing.2.
content-visibilityon the row (L564-577):content-visibility: autoapplies containment to the row. Containment plus a filtered descendant plus thespinanimation on some states (L613-614) is a known source of repaint artifacts in Chromium.The same
drop-shadowpattern also exists on.spark circle(L514) — worth checking whether the sparkline shows a milder version of the same thing.What to do
Bisect before fixing. In DevTools, on a row that shows the artifact:
filteron.ring .ring-fg— does the square disappear?content-visibilityon.frow— does it disappear?Then fix the one that is responsible, keeping the glow if you can. Options worth trying, in order of preference:
drop-shadowwith an SVG<filter>with an explicit oversized filter regioncontain-intrinsic-sizeroom so the filter's bounds are not clippedDo not remove
content-visibilityoutright without measuring — it is there for scroll performance with long transfer lists, and trading a visual glitch for a janky list is not an improvement. If you conclude it has to go, say so in the PR with what you observed.Acceptance criteria
queue,extract,download,ok,fail,kill)web/styles.cssand, if genuinely needed,web/index.htmlare touchedNotes for the contributor
This one needs Windows and the WebView2 GUI. It cannot be verified from Linux or macOS, and it cannot be verified from the code alone — which is why the issue asks you to bisect in DevTools rather than guess. Most of the open work here does not need Windows; this one does.
python moon_bridge.pystarts the GUI.python render_gui.py out/renders the interface headlessly in Chromium and may or may not reproduce it — if it does, that is a much faster loop, and worth reporting either way.Comment here before you start, and say whether you have a Windows machine.