summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-13 22:15:13 +0900
committerAdam Malczewski <[email protected]>2026-06-13 22:15:13 +0900
commitf65b446cabe3da6f8afff34e127e247dd0d03e5c (patch)
treed15bb227741c5cb7f772ae9a276532f89291f757
parentfc6bd07501d8946fbd5577f9b62d6a4124ad1911 (diff)
downloadunbox-f65b446cabe3da6f8afff34e127e247dd0d03e5c.tar.gz
unbox-f65b446cabe3da6f8afff34e127e247dd0d03e5c.zip
ext-stage-dock: thumbnail fully covers the card (fix right-edge placeholder sliver)
Real-seat pixel sampling showed a ~2px vertical sliver of the slot placeholder (#2e2e32) on the card's RIGHT edge only (full height; other edges flush). A magenta diagnostic background on the thumb proved the gap was NOT a transparent texture edge (it stayed placeholder-colored, not magenta) — the thumb BOX was ~2px short on the right (RmlUi box rounding anchored top-left). The preview texture import is correct. Fix: the full-bleed thumb now overscans the slot by -2dp on all sides; the rounded overflow:hidden slot clips the overscan, so the image covers the whole rounded card with no placeholder edge on any side and corners stay rounded. RCSS-only. Verified real-seat: image reaches all four edges, zero placeholder sliver. ext-stage-dock 2/2 green on build + build-asan. Also records the transparency/ card-redesign milestone in tasks.md.
-rw-r--r--packages/ext-stage-dock/src/extension.cpp16
-rw-r--r--tasks.md7
2 files changed, 19 insertions, 4 deletions
diff --git a/packages/ext-stage-dock/src/extension.cpp b/packages/ext-stage-dock/src/extension.cpp
index bd643ba..caac456 100644
--- a/packages/ext-stage-dock/src/extension.cpp
+++ b/packages/ext-stage-dock/src/extension.cpp
@@ -235,12 +235,20 @@ div.slot {
animation: slot-enter 0.16s cubic-out 1 normal;
}
div.slot div.thumb {
+ /* OVERSCAN the slot by 2dp on every side: RmlUi resolves the inset/percent
+ box anchored top-left, leaving the thumb ~2px short on the RIGHT so the
+ #2e2e32 slot placeholder peeked through there (diagnosed real-seat: the
+ sliver sampled as the placeholder, not the thumb). A negative inset makes
+ the thumb a few dp LARGER than the slot; the slot's rounded overflow:hidden
+ clips the overscan to the rounded card, so every edge is fully covered with
+ no placeholder peek and the corners stay rounded. cover/center keeps the
+ slightly-larger box fully covered + centered. */
display: block;
position: absolute;
- left: 0;
- top: 0;
- right: 0;
- bottom: 0;
+ left: -2dp;
+ top: -2dp;
+ right: -2dp;
+ bottom: -2dp;
}
div.slot span.title {
/* Title overlay INTENTIONALLY NOT RENDERED (user decision): the card is
diff --git a/tasks.md b/tasks.md
index 1ca8383..3a532b8 100644
--- a/tasks.md
+++ b/tasks.md
@@ -40,6 +40,13 @@ real-seat feel pending):**
through; cards keep their panel), surface hugs the card stack (no full-height
input capture), and re-minimize-after-empty fixed (stale `focused_`: restore now
sets it directly since a non-defocused window's `focus()` is a seat no-op). (661166a)
+- CARD = ROUNDED THUMBNAIL (REAL-SEAT VERIFIED): the card IS the window preview,
+ rounded on all four corners — a full-bleed `image(... cover center)` decorator on
+ a child of a rounded `overflow:hidden` slot (RmlUi won't clip an element's OWN
+ decorator to its OWN radius → decorator lives on the clipped child). First use of
+ the substrate's RmlUi clipping path (scissor + stencil clip-mask); kernel verified
+ it correct + added 4 regression tests (6519ebf). Title overlay parked
+ (`display:none`, binding kept) for a later text redesign — user's call. (a743f44)
**NEXT (needs user):**
1. REAL-SEAT feel check (covers c2+d1): `~/start-unbox.sh -s foot`, Super+M minimizes