Repository navigation
feat(website): user-benefit copy with (i) detail tooltips - #842
Conversation
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 detectedLatest commit: f47e8bb The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
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 |
[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
|
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.
|
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.
Ferryx349
left a comment
There was a problem hiding this comment.
Overall it looks great to me, just a single non-blocking comment.
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.
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.
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.'
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().
|
🧹 Site preview for this PR was deleted (PR closed). |
|
Greptile's post-fix caveat is addressed in 014506c: the |
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.
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.
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):
Mechanics
InfoTip.astro: a small inline (i) button with a CSS-only tooltip bubble (no JS dependency;role=tooltip,aria-labelcarries the context, focus-visible shows the bubble for keyboard users).Pillars.astro), every audience bullet (Audience.astro) and every console caption (Console.astro) — 20 tooltips on the homepage.Verification
pnpm run build: 14 pages, complete.index.html: 20info-dot/tip-bubblepairs; 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 insidedata-tipattributes (screen-reader-accessible tooltip content).nostream-website: patch).Site changes only.