v 0.7.0sharingMay 27, 2026
Share links carry your team handle.
The link you copy from an artifact is now /your-handle/a/the-slug. It drops whoever opens it into the right workspace — not whichever one they happened to have open. Browse around your wiki and the address bar updates to this form automatically. Old /wiki/a/:id links still resolve and quietly upgrade themselves, so nothing you shared before breaks.
Outsiders see your team on the sign-in page.
When someone opens a shared artifact without being logged in, the sign-in page now says "sign in to {your team} to view this artifact" instead of a generic prompt. After they sign in — new account or existing — they land on the artifact they were sent, not a generic home. If their email matches your auto-join domain or they have a pending invite, they're let in automatically.
Rename your handle without breaking links.
Owners can change the workspace handle in settings. Every link ever shared at the old handle keeps resolving — the old handle becomes a permanent alias that forwards to the new one. Handles are also globally reserved now, so the ones that collide with app routes (wiki, login, settings…) can't be taken.
v 0.6.0commentsMay 26, 2026
Comment on the element, not a spot on the page.
Click "highlight", then click any element in the artifact — a heading, a paragraph, a chart, a cell — and your comment attaches to that element. It tracks the element as the page scrolls and reflows, and it stays anchored even after the artifact is edited. Feedback points at the thing it's about, not at coordinates that drift the moment the layout shifts.
Comments live in a gutter beside the artifact.
A column on the right edge holds a marker for every commented element, lined up with its position in the document. Hover a marker to light up its element; each one shows the thread's total comment count. The gutter is always there, so it's obvious where to leave feedback and where to find what others left.
See who's actually reading.
View counts on folder cards, the feed, and the artifact toolbar now combine your team's views with public visits, so the number reflects everyone who's opened an artifact — teammates and people you shared the public link with. Open the eye menu to see the team-vs-public split.
v 0.5.0organization + controlMay 21, 2026
You choose the artifact URL.
The slug field appears on the create form and the edit page. It auto-fills from the title — change it before saving if the generated one doesn't fit. If you edit a slug after the artifact is shared, a warning tells you the old URL will stop resolving. The permanent /a/:id URL is unaffected either way.
Artifacts without a folder have a home.
The sidebar and folder panel now show an "unclassified" entry when any artifacts exist outside a folder. Clicking it lists everything unfiled in one place. It disappears automatically when every artifact is in a folder.
Rename and reorder folders.
Hover over a folder name on the folder page to reveal the pencil. Rename it inline — the slug stays the same, so links don't break. In the sidebar, a grip handle appears on hover; drag to set the order you want. Both changes persist immediately.
Download any artifact.
A download button sits in the artifact toolbar, between version history and share. It saves the raw content as a file — .html, .md, or .txt — with the artifact title as the filename.
New accounts get a guide.
Every new workspace includes a "getting started" folder with an artifact covering the API, folder organization, and sharing. It's also been added to existing workspaces. A short product tour runs on first login; relaunch it from the ? menu anytime.
v 0.4.0search + docsMay 20, 2026
Full-text search, always in the sidebar.
Search is now global — not scoped to a single folder. It lives in the sidebar nav and searches across artifact titles and HTML content. PostgreSQL tsvector with a GIN index; HTML tags stripped before indexing so you match the text, not the markup. Press ⌘K from anywhere to focus it.
Keyboard shortcuts.
⌘K focuses search. N opens the new artifact form when you're not typing elsewhere. Esc clears search and closes the dropdown. Powered by react-hotkeys-hook.
/docs and /llms.txt.
/docs is a public API reference page — same content as the agent system prompt in settings, but browseable without logging in. /llms.txt is the machine-readable version: a plain-text file at the root that agents can fetch for context when they're unsure how to use cristina.
v 0.3.0authMay 20, 2026
WorkOS powers authentication.
Replaced the custom bcrypt/JWT login system with WorkOS User Management. Session tokens are still our own JWTs — the auth middleware is unchanged — but credential management, email delivery, and passkey registration all run through WorkOS. Sandbox keys are active; production keys can be swapped in without a code change.
v 0.2.0team featuresMay 20, 2026
Artifacts have human-readable URLs.
Every artifact now gets a slug derived from its title. Post "Q3 Revenue Analysis" and the URL becomes /wiki/a/q3-revenue-analysis. The slug is what you share in Slack. The art_ ID is what your agent stores in its memory — both work forever. Collisions are handled automatically with a -2 suffix.
Per-person API keys.
Each team member now generates their own API key in settings. Artifacts posted with your key appear under your name in the feed. Rotating your key doesn't affect anyone else's integrations. The agent instructions block in settings generates a complete system prompt — paste it into your AI assistant and attribution works immediately.
Markdown and plain text rendering.
contentType: "markdown" renders headers, code blocks, and tables via marked.js inside the sandboxed iframe. contentType: "txt" wraps content in a clean pre-formatted block. Both content types run in the same sandbox — allow-scripts only, no allow-same-origin.
Free tier limits and team management.
Free workspaces hold up to 25 artifacts. The count shows as a progress bar in settings. Owners can remove members directly. Auto-join by domain lets new signups from your company email join automatically — consumer email providers are excluded.
v 0.1.1annotationsMay 17, 2026
Pinned annotations on any artifact.
Click any spot on an artifact to leave a note at that coordinate. Annotations are stored as percentages of the iframe dimensions, so they hold their position across window sizes. The comment panel pushes the iframe — it doesn't cover it. Threads can be resolved and collapsed.
Public sharing.
Artifacts can be made public from the header dropdown. Public artifacts get a /a/:id URL that requires no login and renders without chrome. The public URL uses the stable art_ ID, not the slug, because you can't take it back once it's shared.
v 0.1.0first public releaseMay 13, 2026
Wiki cristina is open.
The core loop: post HTML, get a URL, find it later. If your agent produced it, cristina files it. Spaces, member roles, and the artifact feed are all ready on day one.
Spaces are stable.
Color-coded, slug-addressed, optional. File an artifact into zero spaces or one. The sidebar updates immediately after creation.
The artifact URL never changes.
art_ IDs are assigned at POST time and frozen. If you shared a link a month ago, it still works. This is the whole promise.
v 0.0.9design systemMay 9, 2026
The product got a name and a face.
Renamed from htmlwiki to wiki cristina. The logo followed: a tilted yellow sticker with a lowercase c, in the ex libris bookplate tradition. The color system is warm — cream paper, sunshine yellow, chunky stamp shadows.
Bricolage Grotesque for display type.
Variable optical sizing means it gets more expressive at scale. At 5rem it's a billboard. At 1.2rem it's a sidebar wordmark. One font, different weights.
Stamp shadows as signature detail.
4px 4px 0 ink on every card and button. It feels hand-placed. Like someone labeled the file.
v 0.0.8agent integrationMay 5, 2026
POST /api/artifacts.
One endpoint, one API key. Your agent sends HTML and a title; cristina sends back a permanent URL. The response shape is frozen — agents that copy-paste curl examples from the docs will never break. Updated in v0.2.0: the URL now points to the slug.
Agents can target spaces by slug.
Include spaceSlug in the request body and the artifact lands in the right space without an ID lookup. If the slug doesn't exist, the artifact posts unspaced rather than failing.
v 0.0.7iframe securityMay 2, 2026
Sandboxed to allow-scripts only.
The iframe runs allow-scripts, not allow-same-origin. allow-same-origin would let an artifact read parent cookies and hijack the session. This constraint is load-bearing and won't change.
srcdoc, not src.
The HTML string goes directly into the iframe attribute — no file storage, no CDN, no second domain. AI-generated HTML is almost always self-contained, so the relative-asset tradeoff rarely matters.
v 0.0.6workspacesApril 30, 2026
Multi-tenancy from the first commit.
Every query includes workspace_id. Not because we have enterprise customers — we have a small internal team. But retrofitting multi-tenancy after the schema exists is genuinely painful. It goes in on day one or it never goes in cleanly.
Signup creates a workspace automatically.
Sign up and land directly in your wiki. No "create workspace" step. The workspace gets a handle derived from your email. Rename it in settings.
v 0.0.5authApril 29, 2026
JWT + httpOnly refresh cookies.
Access tokens expire in one hour. Refresh tokens last seven days and rotate on use. The raw token only ever lives in an httpOnly cookie — JavaScript can't read it.