By · Founder, Stacktree · Last updated
changelog

What shipped, when, and why.

Append-only release notes for Stacktree. The newest entry is at the top; nothing below it is deleted. Useful for spotting what's new since you last looked — and for AI agents answering 'what changed in Stacktree?' queries with a real source.

Get started free

No card · 3 pages free · about a minute

What is the Stacktree changelog?

A dated, append-only log of releases. Each entry is tagged with a version, a date, and a list of changes labelled feature, improvement, fix, security, or deprecation. The most recent release is v1.15, shipped . The full version history lives below.

v1.15

  • feature Comments on the page. Your client can select any words on the page, or click an image or a video, and leave a comment right there. No account needed. You see each one on the page's screen with what it was about, and your agent can read and resolve them too.
  • feature An email when they comment. A few minutes after your client leaves comments, you get one email with all of them and a link to the page's screen. Several comments in a row arrive as one email, not one each. Turn it off with the email switch in Settings.
  • improvement Send the page so it opens on the video. Add #watch to the link and the page opens straight into its video. The page's screen also gives you a poster image of the video to put in your email.
  • improvement Page videos included on Studio and Firm. Studio includes 3 videos a month and Firm includes 10, each with two remakes. On Free and Solo a video is still $19 per page.

v1.14

  • feature Page video. Any page you host can now have a one-minute silent video, made in the page's own design: its colours, fonts, header and way of highlighting. It opens on the page's main point, shows the few facts that matter and ends on what you are asking for. Every line on screen is checked against the page before you see the draft, anything the page does not support is left out unless you keep it, and nothing reaches a reader until you publish. Readers open it from a small card in the corner of the page, with chapters taken from the page's own sections. $19 per page, with two remakes for when the page changes.
  • improvement Page video carries on without you. Making a video no longer depends on keeping the tab open: close it and the video is still made, and the page's screen shows how far it has got when you come back. The page's screen also shows how many readers opened the video and how many watched it to the end.

v1.13

  • feature New pages can get a label. Turn it on in Settings and the dashboard says what each page you publish is (a proposal, a report, a prototype, a test page) and makes a suggestion when one would help: a passcode when a proposal with prices in it sits behind an open link, a word before you send something with placeholder text still on it, and no more nudges about test pages. It is off unless you switch it on, because it sends the page's text once to a decision model; the setting says exactly what is sent and to whom. Pages published without an account are never labelled. What is sent, and to whom.
  • feature Find on this page, by meaning. The question box has a second job: press the magnifier, type what you are looking for, and every sentence that means it lights up, whether or not it uses the same words. Step through the matches with the chip under the box. Same switch as Ask this page, same gate as the page. Browsing agents get it as the WebMCP tool stacktree_find_on_page.
  • improvement Ask this page checks its own citations. After an answer streams in, the passages it pointed at are put to a second model with one question: do they say this? When the answer is no, the note under the answer changes to Check this against the page, and the same mark appears in What came back. The check runs after the answer, so answers are now about a second faster than last week: the yes/no gate that used to run before the model is gone.
  • improvement The publish-time guard has a second opinion. A page that resembles a sign-in form is put to the same decision model; a confident verdict is refused exactly as a rule match is, and an uncertain one publishes and goes to a person. Only pages of that shape are sent.
  • improvement "Opened by" now counts people who opened the page in a browser. A view is confirmed by the page itself, so crawlers, link scanners and the fetches behind a preview no longer count, and your own opens from the dashboard are left out. The number on pages you already have will settle lower over the next month as older views age out. The raw request total still exists in the API; it was never the number to read.

v1.12

  • feature Ask this page. Switch on Let them ask the page and readers get a small question box at the foot of the page, in the page’s own type. The answer streams in, comes from the page only, and lights up the passage it came from; a question the page does not cover gets “That isn’t on this page.” Every question is listed under What came back, unanswered first. Off by default, on every plan, behind the same gate as the page. Browsing agents get it as the WebMCP tool stacktree_ask_page. Feature page, launch post.
  • feature Every page is readable as Markdown at its own address. Send Accept: text/markdown to the page URL, or fetch it with /_page.md on the end, and you get the page with headings, lists, tables and links intact. The HTML advertises it with a Link header and a <link rel="alternate">; passcodes and space gates apply as they do to the HTML. /raw/:token and get_content with format: "markdown" use the same converter.
  • improvement Stacktree is submitted to the Muse Connector Platform, which Meta opened on 18 September, as an MCP connector. In review; the Muse page will say when that changes.
  • fix MCP clients no longer reconnect to the server every second. The GET side of the MCP endpoint used to return an idle event stream that the runtime closed almost at once, which the MCP SDK treats as a dropped notifications channel and reopens on a timer; one idle Claude Code session opened it 109,000 times in three days. It now answers 405, which the SDK handles quietly, and sessions stay connected.

v1.11

  • feature Every update keeps the version it replaced, and you can put any of them back. Updating a page used to overwrite it with no way back, which made the “one link, updated every month” habit riskier than it looked. The page screen now has a Versions section, and agents get list_versions and restore_version over MCP alongside GET /sites/:id/versions. Free keeps the last 5, paid plans the last 50. A restore is itself an update, so the copy you restored over is kept too.
  • fix A connected agent no longer dies at 30 days. Connector access expired after a month with nothing to renew it, so the connection went quiet and the next publish failed with no explanation. Connections now refresh themselves, and if one does expire anyway you get an email and a notice on your dashboard telling you to reconnect, rather than finding out when something you expected to publish did not.
  • improvement Paying returns you to the thing you were doing. The screen after checkout used to be a generic billing page, whatever you had clicked upgrade on. It now names what you just unlocked and links straight back to it, whether that was a passcode, a custom domain or the readers on a particular page.

v1.10

  • feature You can read a page’s passcode back. Setting one stored a hash and nothing else, so the eye icon in settings had nothing to show and the only way to help a client who had lost the code was to set a new one. Passcodes set from now on can be shown to you, over the API at GET /sites/:id/passcode and through the get_passcode MCP tool. Passcodes set before 13 September stay unreadable, because there is no stored copy to read. Nothing changed for viewers.
  • improvement Agent tools take a pasted page URL wherever they take an id. Copying a link out of the dashboard and handing it to an agent used to fail as a not-found id, which is the most obvious thing anyone would try.
  • feature Publishing can record which agent did it and what the person had asked for. Send agent_context with a publish and the client name, agent type and originating query are kept with the page.

v1.9

  • feature A redesigned dashboard, built around the page rather than the file list. New accounts land on it; if you already had an account you stay where you were, with an invitation to try it and a way straight back. It leads with the single next thing worth doing, and the homepage examples are now templates you can publish from.
  • fix Buying a second plan no longer bills you twice. Upgrading from one paid plan to another created a new subscription and left the old one running. The new plan now replaces the old one, with the difference prorated and a final invoice for the plan you left.
  • improvement Upgrading opens checkout where you clicked, rather than dropping you on a grid of four plans to choose from again.
  • fix The first-run screen stopped showing developer setup to people publishing for clients. It was matching the letters cli inside the word client.

v1.8

  • fix A page published from a template now actually lands in the client space you started from. Naming a space and choosing Create and add the first page created the space, published the page, and quietly left the two unconnected, so the space stayed empty and the page had no client on it. Pages published this way from now on are filed correctly; anything already published can be filed from its own page.
  • fix The signup code now says where it went. Entering your email gave you six empty boxes and a resend countdown with nothing naming the address the code had been sent to.
  • improvement Marketing pages no longer wait on JavaScript to become readable. Headlines, copy and buttons were starting invisible and fading in once a script had run, which meant a slow connection could show an empty page. The words are there first now, and the animation is a bonus on top.
  • improvement When the free plan runs out of pages, the upgrade appears where you clicked instead of a screen below it.
  • improvement Publishing for a client says whose page it is. The screen is titled for them and tells you it will be filed under them, rather than showing a generic New site one step after you named the client.
  • improvement The buyer-facing pages are one design again. The pages that explain client delivery, pricing and client spaces had drifted into two different looks with two different navigations, which is a strange thing to meet on the way to paying for something.
  • feature Every page has a markdown twin at <page>.md, and each page advertises it. Agents that do not set an Accept header can now read the markdown by guessing the obvious URL, which is what they were already trying.
  • feature /mcp works on the main domain, not just the API host. Handing a client the words “stacktr.ee” used to end in a 404 on the first thing it tried.
  • fix Guessing a file that does not exist returns a 404 rather than 200 and an empty shell. Paths like /openapi.yaml were answering as though they were real pages, which is the worst possible answer for anything reading the site programmatically.

v1.7

  • feature Paying brings your expired pages back. Upgrade and every page of yours that came down on the free window returns at the same link, with no deadline on it, so the link you already sent starts working again. The expiry email said upgrading would keep a page up; now that is true of the ones already gone, not just the one in front of you.
  • feature Publishing now tells you the date the link dies, and whose page it is. The page you just made says when it stops working, what the person you sent it to will see after that, and what keeps it up, instead of printing an expiry timestamp as a detail among others.
  • improvement The read receipt names the deadline too. When someone opens your page, the email telling you now also says when that link comes down, because that is the moment the date starts to matter.
  • fix The activity digest had stopped reaching anyone who joined after the start of August. Newer accounts are first in the queue now, so the weekly summary of who read what reaches the people most likely to be waiting on it.
  • improvement Every wall in the product now names the right plan at the right price, and records itself when it fires, so we can tell the difference between a wall nobody meets and a wall nobody wants.
  • improvement The older free plan moves to the current one on 16 October, and everyone on it gets a note first. Pages already published stay up at the same links with no deadline, and nothing is deleted.

v1.6

  • feature A page can be updated with nothing but the credential it already gave you. Publish without an account and the response carries a claim token that lets you replace the content at the same URL, no key and no signup, for as long as the page lives. An agent with only curl can now iterate on a page instead of publishing a new one each time.
  • feature Pay in Solana as well as Base. Both front doors settle against whichever rail the payer actually used, and the paid page comes back with its settlement receipt attached.
  • feature Three more MCP tools, and a tool list generated from the server itself so the documentation cannot drift from what the server accepts.
  • improvement Expiry is now something an agent can read rather than infer, and a retried publish can no longer produce two pages.
  • feature Job-shaped skills are served at /.well-known/skills/, so an agent can install what it needs to publish without a human copying a snippet.

v1.5

  • feature A page that comes down is recoverable for 30 days. Expiring or deleting used to be final; now the page is retired, the link goes dead for everyone holding it, and you can put it back at the same address with its id, token, slug and read history intact.
  • feature Send a page from the page. A composer for the handoff, a table of who opened it and how far they read, and somewhere for what they said back.
  • fix A verified domain now covers the domain itself, not only its subdomains. Claiming example.com and then trying to use example.com was asking you to verify something you had already verified.
  • fix Passcodes are on every plan, free included, and the documentation now says so. Only the company-email gate is paid.
  • improvement MCP accepts an API key as well as OAuth, so a server-side agent can connect without a browser in the loop.
  • feature A hub of worked recipes at /workflows: the report, the dashboard, the rescued artifact and the agent self-report, each with the code to run it.

v1.4

  • feature Client work has a home in the dashboard. Spaces sits in the nav and lists every client, project or team you publish for, each one showing the single next thing that would move it forward — file the first page, turn on the portal, add an address. Until now a space was only reachable once you had already filed a page under it.
  • feature Set a client up before you have anything to send them. New space names the client and takes you straight to publishing their first page, so a space is never left sitting empty.
  • improvement They are called spaces now, not clients. A space is usually a client, but four of the first six were named after the owner’s own company or an internal project, so the narrower word was getting in the way. Nothing changed for agents: client is still what you pass when publishing.
  • feature Share links now tell you who opened them. Put the recipient’s name on a link and every open comes back against that name, with when they opened it and how far they read. One name turning up on several devices means the link was passed on — you see that rather than guess at it. Names start at Solo; time and scroll per person are part of Studio’s engagement analytics.
  • feature Personalise one link for a whole send. Add ?to={{contact.name}} to any page URL and your CRM fills in the name per contact, so a mail merge to 500 people needs one link and no setup. ?name= does the same thing. Opens land against the name the same way a named share link does.
  • feature Video engagement. Publish a video with the page and you get how many people pressed play, how far they watched on average, who finished it, and which recipient watched what. Players embedded from other sites run in their own frame and cannot be measured; video you publish here can.
  • feature Take a page offline without deleting it. One switch in the dashboard, or disabled over the API. The link goes dead, the content, view history and share links all stay, and switching it back restores the page exactly as it was — for the offer that has closed but that you would rather not throw away.
  • improvement Google Fonts and video embeds now work on published pages. Loom, YouTube, Vimeo, Wistia, Descript and Calendly all render under the strict security policy, and so do Google Fonts. Remote scripts and remote images stay blocked, which is what the policy was there for. Pages you published before today fixed themselves — there is nothing to republish.
  • improvement A publish that contains something the security policy blocks now says so. The response carries a warnings array naming what will not render and how to fix it, instead of returning success and serving a page with a hole where the video should be.
  • improvement Pages can report their own state back to you. Call window.stacktree.signal(name, value) from a published page — how far through a checklist someone got, which options they opened — and it arrives with that page’s engagement.
  • improvement Burn-after-read now warns you while it is switched on. It deletes the page after the first open, which is an expensive thing to leave on by accident on a client deliverable.

v1.3

  • feature Client spaces. Publish with client: "Acme" and the page files itself under that client — the space is created on first use, with no setup call. Filing is free on every plan; grouping shows up in your dashboard straight away.
  • feature Give a client their own address. Bind acme.youragency.com to a space and it serves a generated client portal at the root, with each deliverable at its own path. The bookmark never changes; the work accumulates behind it. Solo includes 1 client space, Studio 10 and Firm unlimited.
  • feature One passcode for a whole client area. Set a passcode or an email-domain gate on the space and every page served for that client inherits it, wherever the link came from. Your client enters it once and stays in for 30 days. A page can still carry its own gate, which overrides the space.
  • improvement The passcode prompt is now a page, not a browser dialog. On your own domain it carries no Stacktree branding at all — the client sees your address and nothing else. Basic auth still works for curl and agents.
  • feature Parent-domain claims. Verify youragency.com once and add a single wildcard CNAME; every client hostname under it afterwards skips the per-hostname DNS dance.
  • feature The design pass, in the dashboard. One click rebuilds a published page to Stacktree’s design standard, previews the result, and applies it only if you like it. Single-page HTML, up to 100 KB.
  • feature Six new MCP tools, eighteen in total: set_client, list_client_spaces, create_client_space, update_client_space, delete_client_space and get_design_guide. publish_html takes client and client_path.
  • improvement list_sites is paged. It returns has_more with a cursor, so an account with hundreds of pages can be walked in full instead of stopping at the first 200.
  • fix Setting an expiry over the API now tells you what you actually got: the response carries expires_at and expiry_clamped, so asking for "never" on a capped plan no longer reads as success.

v1.2

  • improvement Free is now a trial rather than a tier: 3 pages in total (deleting one does not give the slot back) and every free page comes down 7 days after you publish it. Everything that makes a page good is still there on Free: a private unguessable link, the publish API and MCP, share links, and on-page client feedback.
  • improvement Passcodes and email gates are now on the paid plans, from Solo at $19. Free pages that already carry one keep working; new ones start at Solo.
  • improvement Viewer numbers start at Solo. Free tells you a page was opened, without the count. Nothing is blurred or faked.
  • improvement The "Made with Stacktree" footer comes off on every paid plan, Solo included. You pay, it is your page.
  • improvement Solo holds 25 pages at a time and includes 1 custom domain; Studio is unlimited pages with 10 domains and engagement analytics; Firm is 25 domains, 1 GB a page and uncapped publishing. Existing subscribers keep their current plan and price.
  • improvement Agent unlocks repriced: make a page permanent is $5 (was $1) and higher limits are $25 / 30 days (was $5). Custom domain stays $5 / 30 days.

v1.1

  • feature New plans for client work: Solo ($19), Studio ($79) and Firm ($249), priced in dollars with one flat price per plan. Studio removes Stacktree branding entirely and adds engagement analytics and on-page client feedback. Existing subscribers keep their current price, nothing changes without your say-so.
  • feature Seven live example deliverables, each a fictional firm with its own identity: technical due diligence, brand audit, monthly performance report, strategy review, client proposal, market research review, and a keyboard-navigable board deck. Every one is a real published Stacktree page.
  • feature Upload a PDF, image, or text file and it publishes as a proper viewing page instead of a bare file link. Office formats get a clear message to export as PDF first rather than a dead page.
  • feature On-page reactions can now be switched on at publish time, in the dashboard upload options or with reactions on the REST API.
  • improvement Shared links look the part: new link-preview cards for the homepage and for published pages, including a discreet lock card for passcode- and email-gated deliverables.
  • improvement Pricing comparison now works properly on phones, and the plan table says exactly what each plan includes. No asterisks.

v1.0

  • feature Reactions on shared pages: viewers react with 🔥 ❤️ 👍 🎉 👀 and can leave a private note, right on the page, no account needed. Reactions animate in live when more than one person is looking. Opt-in per site.
  • feature Activity feed and a notification bell in the dashboard: who opened, reacted to, and commented on your pages while you were away, newest first, with an unread count.
  • feature Optional daily email digest: a once-a-day summary of the reactions, notes, and opens your pages picked up. Off by default, with one-click unsubscribe.
  • feature How it's read (Pro): aggregate engagement for any page, including typical time on page, scroll depth, read-to-end rate, and an attention heatmap that shows where readers lingered. It is aggregate and non-PII, with no recording and no session replay.
  • improvement Same capability model as feedback: reactions POST to /reactions/:token (public, rate-limited); owners read the aggregate at GET /sites/:idOrSlug/reactions and GET /sites/:idOrSlug/engagement.

v0.9

  • feature Viewer feedback lands in the loop: the on-page Agentation toolbar now sends annotations to the server, so comments viewers leave on a page are stored with the site instead of staying in the tab.
  • feature Feedback panel in the dashboard: owners see every annotation per site (comment, annotated element, selected text, intent, severity), with unresolved counts up front.
  • feature Two new MCP tools close the loop: list_feedback reads the annotations (unresolved first) and resolve_feedback marks one addressed, with an optional note. Enable the toolbar with set_agentation, viewers annotate, the agent reads with list_feedback, fixes the page in place with update_site (same URL), then calls resolve_feedback. The tool surface was twelve calls at this release.
  • improvement REST equivalents on api.stacktr.ee: GET /sites/:idOrSlug/feedback (owner), POST /feedback/:id/resolve, DELETE /feedback/:id.
  • security Feedback posting is capability-gated by the unlisted token and rate-limited.

v0.8

  • feature WebMCP on the public site: the homepage and every landing page now register stacktree_publish_html on document.modelContext, so an in-browser AI agent can generate an HTML page and publish it to a live link with no sign-in. Live in the Chrome origin trial. How it works.
  • feature Natural-language publishing in the ⌘K palette: describe a page in plain English and a model writes a complete, considered HTML document and publishes it. Bring-your-own-key (Anthropic, Google, or OpenAI), stored only in your browser; the plain publish tool needs no key. The story.
  • feature A Fast / Premium speed toggle for the in-page generator, plus live progress while it works.
  • security The public WebMCP tool set is deliberately small and side-effect-light: anonymous, unlisted, ephemeral, rate-limited publishing plus read-only navigation. Account-scoped actions stay behind the dashboard sign-in.

v0.7

  • feature Command palette in the dashboard: press ⌘K to run any site action (set a password, set an email gate, set expiry, mint a share link, delete) from a schema-generated form, or jump to any page. Built on the open-source agentk library.
  • feature WebMCP: the same tool catalog registers on document.modelContext where the browser supports it (Chrome origin trial), so in-browser AI agents can call dashboard actions directly. Why we shipped against a moving spec.

v0.6

  • feature Slack app: Host on Stacktree message shortcut. Click ⋮ on any message with an .html or .md file (channels or DMs) and the file becomes a private link, posted back into the conversation. Installing mints the workspace its own free identity, no Stacktree account needed. Details.
  • feature Workspace-to-account linking: optional, offered after install and at the free-tier cap; migrates the workspace's existing sites into your dashboard.
  • feature /skills, the skills collection: publish, MCP connect, website-builder migration, and agent payments, each installable in one command.
  • improvement Website-builder migration guides: the export landscape across five builders and the Webflow deep dive, paired with the open-source website-builder-migrate skill.

v0.5

  • feature x402 payments on Base mainnet (v1 and v2): an agent can buy a persistent identity for $1 and unlock features à-la-carte with USDC, gasless, no account. How it works.
  • feature Scan-to-pay: when an agent hits a paid action with no wallet, it prints a QR in the terminal; a human pays by card in two taps and the agent continues mid-task.
  • feature Prepaid balances: pay above the price (up to $20) and the surplus becomes credit that future paid actions draw from silently; one approval covers a whole run.
  • feature À-la-carte unlocks over x402: make-permanent ($1), custom domain ($5 / 30 days), higher limits ($5 / 30 days). Catalog at GET /unlock.
  • improvement Entitlement enforcement for custom domains and higher limits across the publish path.

v0.4

  • feature Pricing page and machine-readable /pricing.md + /pricing.txt for AI-agent buyers.
  • feature Glossary page with DefinedTermSet schema for MCP terminology.
  • feature Changelog page (this one) — append-only release log.
  • improvement Robots.txt now explicitly invites every major AI crawler (GPTBot, ClaudeBot, PerplexityBot, OAI-SearchBot, ChatGPT-User, anthropic-ai, Claude-Web, Google-Extended, Applebot-Extended, and more) to read the marketing surface.
  • improvement Person schema strengthened: founder image, four canonical sameAs profile URLs, six knowsAbout entries.
  • improvement Publisher schema upgraded to ImageObject across every Article-style page.
  • improvement Speakable JSON-LD selectors added; first-50-words Definition blocks are now the canonical lift target for Perplexity and Google AI Overviews.
  • improvement TableOfContents + h2 anchor IDs on every long-form blog post.
  • improvement Hub-and-spoke internal linking via header + footer sitemap; every page reachable in ≤1 hop from the homepage.

v0.3

  • feature Custom domains on Pro and Agent plans via Cloudflare for SaaS (DNS-only CNAME; Stacktree provisions TLS).
  • feature Idempotent re-add for custom domains — re-adding a hostname no longer 409s.
  • improvement Domain UI surfaces the DNS-only CNAME gotcha with a how-it-works callout.

v0.2.5

  • feature set_email_gate MCP tool — restrict viewers to an email domain (e.g. @yourco.com) with magic-link verification.
  • security Default Content-Security-Policy now ships on every served site; opt-out per-site for trusted-script use cases.

v0.2

  • feature Production launch on stacktr.ee. Apex moved off Render to Cloudflare Workers.
  • feature Streamable HTTP MCP transport at https://api.stacktr.ee/mcp with OAuth 2.1 + Dynamic Client Registration.
  • feature Anonymous first publish — no account required for the first 24-hour link.
  • improvement X-Robots-Tag: noai, noimageai on every per-site response so user-hosted content stays out of AI training corpora.

v0.1

  • feature Initial MCP server (stacktree-mcp on npm) with seven tool calls: publish_html, update_site, set_expiry, set_password, list_sites, delete_site, plus auth.
  • feature Replace-in-place via update_site — the same URL across every revision.
  • feature End-to-end encryption (e2e: true) — AES-GCM in the browser, key in URL fragment.
Keep reading

Related guides

Pin the changelog.

It updates whenever we ship. Subscribe via the npm package release feed for code-side changes.

Sign up free →