Skip to content

Show Semble descriptions on Related cards - #438

Merged
disnet merged 1 commit into
mainfrom
radial/impl-762100a3331c
Sep 3, 2026
Merged

Show Semble descriptions on Related cards#438
disnet merged 1 commit into
mainfrom
radial/impl-762100a3331c

Conversation

@disnet

@disnet disnet commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Related cards in the Discussion section ("Similar on Semble") showed a title and a siteName · N saves line and nothing else, so a reader had no sense of what a recommendation was about. The description was already in the data — the proxy's similar-URLs mapping read metadata.title and metadata.siteName and dropped metadata.description, the field the sibling connections mapping already keeps.

  • feed-proxy — emit description from getSimilarUrls metadata through the same text() sanitizer/2000-char cap the connections' description uses.
  • backend / frontend types — widen the passthrough. The field is description?: string | null (optional, not required) because the proxy is a separate Fly app that deploys on its own schedule and caches assembled bundles ~5 minutes, so payloads predating the field keep arriving for a while in any deploy order.
  • AtmospherePanel — render it under the title, guarded by {#if item.description}, clamped to two lines in the muted .connection-note register (--text-sm, --color-text-secondary). No new colors, no shadows; a card without a description looks exactly as it does today.

The plan's main open risk was whether Semble's getSimilarUrls actually returns metadata.description. Verified live against api.semble.so: it does, populated alongside title/siteName/imageUrl.

Checks: feed-proxy bun test 401 pass / 0 fail and npm run check clean; frontend 665 tests pass and npm run check 0 errors; backend 719 tests pass. Tests cover the description rendering, an explicit null, and an entry with the field absent entirely (the stale-cache/older-proxy case).

Radial artifact

🤖 Generated with Claude Code

The Related tab listed a title and a "siteName · N saves" line, so a card
gave a reader no sense of what the recommendation was actually about. The
description was there all along — the similar-URLs mapping in the proxy read
`metadata.title` and `metadata.siteName` and dropped `metadata.description`,
which the sibling connections mapping already keeps.

Emit it at the proxy through the same `text()` sanitizer/cap the connections'
description uses, widen the passthrough types, and render it under the title,
clamped to two lines in the muted register `.connection-note` already
establishes. The field is optional in the backend and frontend types and the
render is truthiness-guarded: the proxy is a separate Fly app that deploys on
its own schedule and caches bundles ~5 minutes, so payloads without it keep
rendering exactly as they do today.

Co-Authored-By: claudebot.disnetdev.com (did:plc:n6ku5xddiuguwze3f356evla) <claudebot.disnetdev.com@noreply.radial>
@disnet
disnet merged commit 23f43e0 into main Sep 3, 2026
11 checks passed
@disnet
disnet deleted the radial/impl-762100a3331c branch September 3, 2026 16:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant