Compare commits

...

8 commits

Author SHA1 Message Date
Agent
20d34209f8 Drop tile shadow instead of switching to drop-shadow-sm
drop-shadow-sm (previous commit) didn't fix the corner artifact in
testing, so revert to the simplest option instead of chasing which
rasterization path is actually at fault: video tiles just don't get
an offset shadow. Border stays.

Reverts the --drop-shadow-* token additions in base.css/clay.css/
navy.css from the previous commit since nothing else used them.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 10:34:45 -04:00
mplorentz
17cd72ee0d Merge branch 'j4k-card-style-no-video-tiles' of ssh://forgejo.lorentz.is:4201/matt/flotilla into j4k-card-style-no-video-tiles 2026-08-17 10:28:42 -04:00
Agent
e3a312afc9 Fix rounded-corner shadow artifact on video tiles in a scroller
With exactly 2 video tiles, the layout branch flex-shrinks tiles to
exactly fill the scroll container (fractional heights, bottom tile
flush against the scroller's clip edge). In that configuration
Chromium's rounded-rect box-shadow fast path misrenders at fractional
pixel offsets: the corner shows a straight diagonal wedge instead of
a rounded crescent, and the bottom tile's bottom shadow band is
clipped entirely by the scroller's overflow. With 3+ tiles the grid
branch uses natural (non-fractional) 16:9 heights, so it doesn't hit
this.

filter: drop-shadow() renders the same offset shadow through a
different rasterization path that isn't susceptible to this, and
(as a side benefit) isn't clipped by scrollable overflow the way
box-shadow's ink overflow is.

- VideoCallContent.svelte: shadow-sm -> drop-shadow-sm on video tiles.
- base.css: add --drop-shadow/-sm/-lg tokens mirroring the --shadow-*
  scale, consumed by Tailwind's drop-shadow-* utilities.
- clay.css, navy.css: matching --drop-shadow-* overrides in both
  light and dark. flat.css needs no changes; it inherits base.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 10:23:39 -04:00
Agent
19dd92c947 Remove local welshman link: overrides from pnpm-workspace.yaml
9a80d059 (Migrate to new welshman) accidentally committed
link:../welshman/packages/* pnpm overrides into pnpm-workspace.yaml,
forcing resolution to a local welshman checkout that doesn't exist in
this environment. package.json already specifies the correct upstream
range (^0.9.0-pre2), so a fresh `pnpm install` produced dangling
node_modules/@welshman/* symlinks and broke `pnpm run dev`.

Drop the overrides (keep sharp) and regenerate pnpm-lock.yaml, which
now resolves upstream @welshman/*@0.9.0-pre5.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 10:22:58 -04:00
mplorentz
45bd5ec7cb Merge branch 'j4k-card-style-no-video-tiles' of ssh://forgejo.lorentz.is:4201/matt/flotilla into j4k-card-style-no-video-tiles 2026-08-13 16:31:54 -04:00
Agent
9e73262cb7 PR-C0: remove tile.track conditional — consistent border + label on all tiles
- Remove the tile.track ternary from the name label class — use bg-backdrop/80
  consistently for all tiles (both video and no-video)
- Remove the !tile.track conditional from the border — apply border border-line
  to all tiles consistently
- Fixes shadow rendering inconsistency: with two tiles, the conditional border
  + ternary caused asymmetric shadow rendering (cropped/pointed shadows)

Per review feedback from @matt on PR #3 (forgejo).
2026-08-13 16:05:52 -04:00
mplorentz
386212bcce Remove local welshman overrides 2026-08-13 15:58:55 -04:00
Agent
928456649e PR-C0: card-style no-video tiles with border and backdrop label
- Add border (border-line) to no-video tile outer div for card contrast
  against bg-surface panel (video-on tiles unchanged)
- Use bg-backdrop/80 for name label on no-video tiles for legibility
  (video-on tiles keep bg-surface/80)

Part of flotilla-j4k / coracle/flotilla#343
2026-08-13 12:53:12 -04:00
3 changed files with 2 additions and 12 deletions

Binary file not shown.

View file

@ -16,14 +16,4 @@ minimumReleaseAgeExclude:
- '@welshman/store' - '@welshman/store'
- '@welshman/util' - '@welshman/util'
overrides: overrides:
'@welshman/app': link:../welshman/packages/app
'@welshman/content': link:../welshman/packages/content
'@welshman/domain': link:../welshman/packages/domain
'@welshman/editor': link:../welshman/packages/editor
'@welshman/feeds': link:../welshman/packages/feeds
'@welshman/lib': link:../welshman/packages/lib
'@welshman/net': link:../welshman/packages/net
'@welshman/signer': link:../welshman/packages/signer
'@welshman/store': link:../welshman/packages/store
'@welshman/util': link:../welshman/packages/util
sharp: ^0.35.3 sharp: ^0.35.3

View file

@ -221,7 +221,7 @@
{@const media = $mediaStateByIdentity(tile.liveKitIdentity)} {@const media = $mediaStateByIdentity(tile.liveKitIdentity)}
<div <div
class={cx( class={cx(
"relative isolate overflow-hidden rounded-2xl shadow-sm", "relative isolate overflow-hidden rounded-2xl border border-line",
layout === "spotlight" && "min-h-0 flex-1", layout === "spotlight" && "min-h-0 flex-1",
layout === "default" && "aspect-video w-full min-h-0", layout === "default" && "aspect-video w-full min-h-0",
layout === "strip" && "aspect-video w-44 shrink-0", layout === "strip" && "aspect-video w-44 shrink-0",
@ -248,7 +248,7 @@
</div> </div>
{/if} {/if}
<span <span
class="pointer-events-none absolute bottom-1 left-1 max-w-[calc(100%-0.5rem)] truncate rounded bg-surface/80 px-1.5 py-0.5 text-xs"> class="pointer-events-none absolute bottom-1 left-1 max-w-[calc(100%-0.5rem)] truncate rounded bg-backdrop/80 px-1.5 py-0.5 text-xs">
{labelFor(tile.liveKitIdentity, tile.source)}{tile.isLocal ? " (you)" : ""} {labelFor(tile.liveKitIdentity, tile.source)}{tile.isLocal ? " (you)" : ""}
</span> </span>
{#if videoTiles.length > 1} {#if videoTiles.length > 1}