Skip to content

feat(website): user-benefit copy with (i) detail tooltips - #842

Merged
cameri merged 9 commits into
mainfrom
feat/website-copy-tooltips
Oct 16, 2026
Merged

cameri merged 9 commits into
mainfrom
feat/website-copy-tooltips

Conversation

@chappie-daemon

Copy link
Copy Markdown
Collaborator

What

The homepage led with protocol internals — NIP numbers, sliding-window rate limits, SSE, Redis fan-out, pubkey whitelists — where a visitor wants to know what the thing does for them. Following Cameri's direction (Telegram, 2026-10-16): visible copy now states the user benefit, and the technical detail moved under an (i) tooltip on hover, keyboard focus, or tap.

Example (his own):

before: "Rate limits, adaptive proof-of-work, kind and size rules. Clients get a rate-limited hint with a backoff."
after: Keeps abusive traffic out — "Throttles users with efficient methods to prevent abuse, so your relay stays fast for everyone who plays by the rules." — and the old sentence lives in the (i).

Mechanics

  • New InfoTip.astro: a small inline (i) button with a CSS-only tooltip bubble (no JS dependency; role=tooltip, aria-label carries the context, focus-visible shows the bubble for keyboard users).
  • Applied to every feature pillar (Pillars.astro), every audience bullet (Audience.astro) and every console caption (Console.astro) — 20 tooltips on the homepage.
  • Console shot titles de-jargoned too ("NIP-11 mismatch warnings" → "Honest advertising"), capabilities list simplified; commands and protocol names are one (i) away, never gone.
  • No copy claims changed — every tooltip preserves the exact technical sentence that used to be visible.

Verification

  • pnpm run build: 14 pages, complete.
  • Structural check on the built index.html: 20 info-dot/tip-bubble pairs; with tooltip bubbles excluded from the scan, none of the technical phrases (sliding-window, proof-of-work, SSE, backoff, pubkey whitelists, Prometheus, OpenTelemetry) remain in visible copy, and the NIP-42/43 mentions that remain sit inside data-tip attributes (screen-reader-accessible tooltip content).
  • Changeset included (nostream-website: patch).

Site changes only.

Homepage copy led with protocol internals — NIP numbers, sliding-window
rate limits, SSE, Redis fan-out — where visitors want the job it does.
Visible copy now states the benefit; the technical detail moved under a
new InfoTip component (hover, keyboard focus, or tap) on every pillar,
audience bullet and console caption. 'Limits that hold' becomes 'Keeps
abusive traffic out — throttles users with efficient methods to prevent
abuse', per Cameri's example.
@changeset-bot

changeset-bot Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: f47e8bb

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
nostream-website Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@cameri
cameri requested a review from Ferryx349 October 16, 2026 13:47
@greptile-apps

greptile-apps Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 4/5

[Low impact] Website copy and UI component for feature tooltips.

The PR appears safe to merge, with non-blocking improvements needed for tooltip access and readability.

Findings

  1. P2 Info buttons omit their details ▶
  2. P2 Touch cannot reliably open details ▶
  3. P2 Cards can cut off details ▶
  4. P2 Details disappear under the pointer ▶

Summary

The homepage now leads with user benefits and adds 20 info tooltips for technical details.

  • Homepage features lead with everyday benefits and keep technical details one tap away.

Reviews (1) · Last reviewed commit: "feat(website): user-benefit copy with (i..." · Reviewed by Greptile

Comment thread website/site/src/components/InfoTip.astro Outdated
Comment thread website/site/src/components/InfoTip.astro
Comment thread website/site/src/components/InfoTip.astro Outdated
Comment thread website/site/src/components/InfoTip.astro
PRs touching the site build under the /preview/<n>/ base and deploy their
own assets-only worker (nostream-web-pr-<n>, workers.dev URL); the PR gets
a comment with the preview link, and a closed-PR run deletes the worker.

The production worker becomes a router (worker/router.ts +
wrangler.router.jsonc): it serves the production assets itself via an
ASSETS binding and proxies /preview/<n>/* to the PR worker, keeping the
preview URL on ema.tnsor.network. The custom-domain cutover happens on
the next production deploy; rollback is deploying the old config again.

Preview workflow (deploy-website-preview.yml) skips with a notice when
the website-preview GitHub environment or its CLOUDFLARE_API_TOKEN is
absent, so PRs are not blocked before the one-time setup.

Base-path handling: astro.config reads SITE_BASE; hand-written root paths
(nav, media, icons) are prefixed by scripts/apply-base.mjs at build time
(Astro's base covers managed URLs only). Media refs now go through
import.meta.env.BASE_URL.
@chappie-daemon

Copy link
Copy Markdown
Collaborator Author

Also pushed 427d763 on this branch: PR preview infrastructure — previews at ema.tnsor.network/preview// (per-PR worker + production router proxy, deleted on close). It rides this PR since both changes touch the site deploy path; happy to split it out if you'd rather review them separately.

Env-scoped secrets only resolve when the job declares the environment;
without this the preview deploy would run with an empty token.
@chappie-daemon
chappie-daemon deployed to website-preview October 16, 2026 14:17 — with GitHub Actions Active

@Ferryx349 Ferryx349 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall it looks great to me, just a single non-blocking comment.

Comment thread website/site/src/components/home/Pillars.astro Outdated
Listing environment secrets needs permissions the runner's github.token
does not carry, so the secrets probe always failed and routed to the
skip branch even after the secrets were set — every preview run skipped
with 'lacks CLOUDFLARE_API_TOKEN'. Existence is the only check the
runner token can make; with the environment now in place previews run
directly from PRs.
@chappie-daemon
chappie-daemon deployed to website-preview October 16, 2026 14:45 — with GitHub Actions Active
Workers are served from <name>.<account-subdomain>.workers.dev, not
<name>.workers.dev — nostream-web-pr-842.workers.dev does not resolve.
Verified the real URL from the deploy log and against the live worker.
@chappie-daemon
chappie-daemon deployed to website-preview October 16, 2026 14:51 — with GitHub Actions Active
Greptile P2s on InfoTip.astro:
- Screen readers heard only 'Technical detail: label' with no access to
  the detail. The bubble now carries a unique id referenced by
  aria-controls (aria-describedby is awkward on a toggle; details/summary
  exposes state natively) and aria-expanded tracks open state.
- Touch: a tap does not reliably set :hover or :focus-visible on a
  button. The toggle is now a native <details><summary> — tap opens,
  outside click and Escape close (small inline script), so touch and
  keyboard both get a reliable open/close with no dependencies.
- Cards cut the bubble: Pillars .cell had overflow: hidden. Removed
  there (the .count watermark is now self-clipped instead, max-width +
  overflow on itself), so bubbles escape the card. Console's
  overflow:hidden is on the screenshot frame only, which is correct.
- Pointer path: the bubble sat across an 8px gap with pointer-events:
  none, so moving onto it closed it. The open state now accepts pointer
  events and a transparent bridge spans the (now 4px) gap; closed state
  still ignores pointers.

Ferryx's copy note: the LIM body rephrased to target spam/abusive
traffic rather than reading as throttling regular clients — 'Keeps spam
and abusive traffic from slowing the relay for everyone else, so normal
clients stay fast.'
@chappie-daemon
chappie-daemon deployed to website-preview October 16, 2026 14:57 — with GitHub Actions Active
The toggle event dispatches on the <details> element, not the summary,
so the summary-attached listener missed programmatic closes (outside
click, Escape) and aria-expanded could stay true. Listen on the
details element itself, which covers every close path including
closeAll().
@chappie-daemon
chappie-daemon deployed to website-preview October 16, 2026 15:03 — with GitHub Actions Active
@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

🧹 Site preview for this PR was deleted (PR closed).

@chappie-daemon

Copy link
Copy Markdown
Collaborator Author

Greptile's post-fix caveat is addressed in 014506c: the toggle listener moved from each <summary> to the parent <details> (the event dispatches on details), so programmatic closes via closeAll() (outside click, Escape) now sync aria-expanded too. Preview re-deployed and green on the new commit.

Repository owner deleted a comment from github-actions Bot Oct 16, 2026
Repository owner deleted a comment from github-actions Bot Oct 16, 2026
Repository owner deleted a comment from github-actions Bot Oct 16, 2026
The pipeline commented anew on every push, piling up identical preview
links. The comment is now upserted: a hidden marker identifies it, the
step flips it to a 'preview is rendering' state before the deploy and
back to the link afterwards, and the close path updates the same
comment instead of adding a cleanup note. One comment per PR, always.
Existing duplicates on #842 deleted; the survivor carries the marker.
@chappie-daemon
chappie-daemon deployed to website-preview October 16, 2026 15:40 — with GitHub Actions Active
The ema.tnsor.network/preview/<n> form only works once the router ships
with this PR's merge, but the direct
nostream-web-pr-<n>.cameri.workers.dev URL serves the build as soon as
the deploy lands — the comment now leads with the working link and
notes when the domain form activates. The rendering state points at the
direct URL too.
@chappie-daemon
chappie-daemon deployed to website-preview October 16, 2026 16:52 — with GitHub Actions Active
@cameri
cameri merged commit 72fca58 into main Oct 16, 2026
13 checks passed
@cameri
cameri deleted the feat/website-copy-tooltips branch October 16, 2026 16:56
@cameri
cameri deployed to website-preview October 16, 2026 16:56 — with GitHub Actions Active

This branch was successfully deployed

1 active deployment
website-preview — f47e8bb9 Deployed Oct 16, 2026 by cameri via preview #9
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.

3 participants