Skip to content
← Back to Blog
sharingexploreremix

The Public Page Is a Share Id

Sharing stores an id on the prompt. The link, Explore, and the homepage all read that one column.

Marc-Aurele Besner··6 min read

A field of small gray circles on the left, and on the right a large coral circle with a tiny chartreuse circle and a shrinking trail of violet circles.

Sharing writes an id onto the prompt you already saved. The public link, Explore, the homepage, and the sitemap all look that id up. The runs stay in history. A second copy of the cards is never made.

The button is on the results, once the run has returned a prompt id, and on each row in history. History already knows whether the column is set. A fresh result starts as Share.

Eight bytes, then the link

Turning it on sends your prompt id and enabled: true. The route requires a session. No session is a 401. A body missing the prompt id, or with enabled set to something other than a boolean, is a 400. The prompt has to be yours. A missing row, including someone else's, is a 404.

When the column is empty, the route draws eight random bytes and stores them as base64url. That string is eleven characters, and the column is unique. The button copies the site origin, /share/, and that id. Anyone with the link can read the drift, and the same row is eligible for Explore.

If the column already holds an id, the same request returns it. The results button forgets the id when you leave the page, because it does not read the column back. Clicking Share again still sends enabled: true, and the route hands back the id already stored. A second click does not mint a second link.

The prompt text, the runs, and the probabilities stay where they were. The id is the only new field.

A vertical stack of gray circles on the left, and on the right a large coral circle with a tiny chartreuse circle beside it, among scattered gray and violet circles.

The page is a lookup

/share/<id> loads the prompt by that column. There is no login. The page prints the prompt, your display name and avatar when either is set, the date the prompt was created, and the cards.

Two response models are left off the cards: facet-generation and image-prompt-generation. The first is the angle list from a facet run, stored at probability 1.0. The facet post is where that list comes from. The second is the prompt list an image run stores the same way. What remains is sorted by probability, highest first. The drift meter draws that list. The tier cuts are the ones in how Verbalized Sampling works. 0.30 and above is conventional. From 0.10 up to that line is creative. Under 0.10 is wild.

The k and τ next to the model badges come from the first run whose model is not one of those two names. The runs are loaded with no order. On a standard sample every run stored the same k and τ, so the label matches the box you used. On a facet sample the angle pass stored your k and τ, under the model you listed first, and each answer pass stored a k of 1 and a τ of 1. The label is whichever of those rows comes back first. The run that holds the angles is not named facet-generation. The responses on it are.

The title in the tab counts every response on the prompt, including the ones the page hides. A facet share can announce more answers than it shows.

An unknown id is a 404.

The same row is JSON at /api/drift/share/<id>. No session on that route either. The body is the prompt text, the settings saved with it, your name and avatar, and every run with its responses. The two synthetic models stay in that JSON. The query reads name and image from the account, and no other field on the user.

Explore keeps the newest forty

Explore loads the 40 newest prompts that still have a share id, ordered by when the prompt was created. Sharing an older prompt today leaves it where that clock puts it. The time on the row is the sample.

A prompt with nothing left after the two synthetic names are removed is dropped. The number under the heading counts what survived. The homepage asks the same function for three and caches them for five minutes under the tag public-drifts. Turning sharing on or off revalidates that tag and /explore. Turning it off also revalidates the share path. Left alone, Explore may sit for five minutes, and a share page for sixty seconds.

Each row shows your name and avatar, the prompt, the short model names, and the count of remaining responses. The highest probability is labeled Most likely. The lowest is labeled Wildest, when it is a different card. When those two probabilities differ, the gap is printed in whole percentage points. The homepage cards quote the wild card, and they show at most two model names.

Two coral circles and two violet circles, each with a small chartreuse circle beside it, and clusters of gray circles in the corners.

Every prompt that still has a share id is a URL in the sitemap, with the prompt's creation time as the last modified date. robots leaves /share/ allowed and disallows /api/. The page is what a crawler is pointed at. The JSON route still answers anyone who has the id.

Remix fills the box with the prompt

Remix on the share page and on an Explore row is a link to /app. The query string carries the original prompt, cut at 4000 characters, up to four model ids joined by commas, and k and τ when those values are numbers. The model list is taken from the runs. Those runs were saved under the model you picked, so the synthetic names, which live on responses, are not in the link.

The form reads the query once, on mount. The prompt replaces the box. k is applied when it is an integer from 1 to 10. τ is applied when it sits between 0.01 and 1, then rounded to two decimals. Opening the link writes nothing to your history. The sample starts when you run it.

The next prompt is a card puts one card's text in the box. Remix puts back the prompt that produced the cards, along with the k and τ the share page read off that first run.

A large coral circle with two violet circles and a tiny chartreuse circle, a dotted line of gray circles, and a smaller coral, violet, and chartreuse group on the right.

Clear the column and the id is gone

The unlink icon sends enabled: false. The column becomes null. The old path is revalidated, and the next lookup is a 404. Explore and the homepage stop listing the prompt, because both queries require the column to be set. History still has the runs. Export still downloads them. A collection that points at those runs still opens. The collection post is the other id: a shelf stores run ids, and sharing stores this one on the prompt.

Turning sharing back on draws eight new bytes. The previous string is not kept. A link someone already copied resolves only if it matches the id in the column now.

History loads the column with the row, so the copy-link control is there when you come back. The button on a live result only knows an id it received during that visit, or the one the route just returned.

An open ring of gray circles on the left, and on the right a violet circle with a small chartreuse circle and a smaller coral circle.