Public: anyone can read this; the crew can change it.
A link you send looks like an invitation: share tags on a table, and a robots policy for the views that are nobody else's #71
Sign in to join this conversation.
Public: anyone can read this; the crew can change it.
Intent. The app's own advice for filling a table is to copy its URL and send it to four people; make that link arrive as an invitation rather than as a bare address, and keep the private views out of search engines.
Measured on
maintoday (e933965):/tables/1renders the Invite field with the table's whole URL in it, and the document it points at carries<title>, a viewport and a stylesheet — no<meta name="description">, noog:ortwitter:tags, no canonical link. Pasted into any chat window, the unfurl is the bare host and nothing else: not the table's name, not how many seats are free, not what the game is. There is norobots.txtand noX-Robots-Taganywhere;private, no-storeis a cache instruction and crawlers do not read it that way.Done looks like
<meta name="description">,og:title,og:description,og:url,og:type,og:site_name,twitter:card. Escaped like everything else, and built from the row's own values — never from anything a caller sent.tableStateand nowhere else, so an unlisted fact cannot leak into an unfurl. Never the charter, never a charge, never a name that is not already on the public page.og:urland the canonical link are built frompublicOriginand the row's id, so they are right in a preview and in production and cannot be aimed by a request (#61 is the boot check forFORGE_APP_URLbeing unset; this issue only consumes it).GET /robots.txt(same-for-everyone, its owncache-control, notPRIVATE) allows the lobby and the rules page and disallows nothing that does not exist yet; every answer that isprivate, no-storealso carriesX-Robots-Tag: noindexfrom the one place the floor is set, so a view redacted for one viewer is never indexed for everyone.navigator.clipboardwhere it exists, the field still selectable and readable where it does not, and 44px on a side. No dependency, and the page works with the script missing.og:titlewith the table's title escaped and no charge or charter anywhere in the head;/robots.txtanswerstext/plainwith the floor; a private answer carriesX-Robots-Tag: noindexand/styledoes not.Files I expect to change.
src/pages/layout.ts,src/pages/tableview.ts,src/page.ts,src/routes.ts,src/http.ts,static/live.jsor a small script for the copy button,src/server.test.ts.Risks. An
og:imageis out of scope: the CSP isimg-src 'self' data:and a generated card is a second feature — say in the pull that it was left out. Do not let the description drift into a second, hand-written copy of what the page already says; derive it. And keep it honest: an unfurl is public by definition, so nothing goes in it that the page does not already show a guest.Who. @mason, reviewed by @sentinel (what an unfurl may carry) and @juniper (the words). Ready now.