{
  "$type": "site.standard.document",
  "coverImage": {
    "$type": "blob",
    "ref": {
      "$link": "bafkreig2kdc3ir2dr3tb6m2iudqqefkicbc5gzzbix4ctcbzn6ljzpm35a"
    },
    "mimeType": "image/png",
    "size": 56303
  },
  "description": "Better Townie system prompt, std/oauth, migrating from Clerk to BetterAuth, Deno 2.7.5, and more",
  "path": "/changelog-04022026",
  "publishedAt": "2026-04-02T00:00:00.000Z",
  "site": "at://did:plc:a2rdzfdxkjwerrfrpbwcipb2/site.standard.publication/3jd443afc2222",
  "textContent": "In this changelog: improving Townie and the Val Town MCP server; a \nlibrary for wrapping vals with authentication; migrating auth providers from\nClerk to BetterAuth; upgrading to Deno 2.7.5; and much more.\n\nEditor's note: We've been deconstructing the old Newsletter into discrete\nparts: this changelog (new), the Talk of the Town\nseries highlighting community vals, Steve's public\ninvestor updates, and perhaps a public roadmap soon. The\nNewsletter itself is a periodical rounding up the\nbest of what we've written each month.\n\n<iframe\n  src=\"https://www.youtube.com/embed/xtqa8pbLVbg?si=3dtX-MLP4dWwVZW\"\n  width=\"100%\"\n  height=\"450\"\n  title=\"YouTube video player\"\n  frameborder=\"0\"\n  allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n  referrerPolicy=\"strict-origin-when-cross-origin\"\n  allowFullscreen\n></iframe>\n\nMaking Val Town delightful for both you and your LLM\n\nVal Town exists foremost for you the developer, which for many increasingly\nmeans for your agent. Much of our energy of late has been spent improving\nTownie and our MCP server to improve DX both in the browser and wherever you get\nyour LLMs.\n\nWe've appreciated all the positive feedback on Townie and our MCP server, but\nmore importantly please continue to send us bug reports and friction points so\nthat we can\nimprove AX while preserving great DX so you can improve UX.\n\nBetter Townie system prompt\n\nWe've updated Townie's\nsystem prompt with more platform\nguidance and opinionated patterns on building vals, like:\n\n- Wrapping vals in  for authentication\n- Runtime constraints/gotchas\n- Preferring incremental progress over one-shot implementation\n- Testing vals to validate generated code\n- When to use different frontend app architectures\n- How to integrate external services (Slack, Google, Stripe, etc.)\n\nThe system prompt doubles as a dense but high-yield guide you can read to learn\nhow the Val Town platform works. Thanks to Michael\nfrom Sourcebot for the nudge here!\n\nPreventing Claude Code hallucinations with the Val Town MCP server\n\nClaude Code has been recommending Val Town to some users as a handy place to\ndeploy the code it spits out (we're not doing any fancy AEO, in case you're\nwondering). But when using our MCP server with Claude, it's been hallucinating\nhow to work with Val Town. We updated instructions in the Val Town\nMCP server with more\nplatform/runtime context that MCP clients previously had to explicitly request.\n\nBringing Val Town to OpenAI Codex\n\nLike Claude Code, Codex + Val Town MCP is an increasingly popular workflow for\ndevelopers on Val Town. We updated our\ndocs instructions\nfor getting set up. Thanks Ash,\nArti, and David M. for feedback on making the Codex\nauth flow smoother.\n\nFullscreen Townie\n\nTownie now has two modes:\n\n1. Sidebar (status quo)\n2. Fullscreen (new)\n\nFullscreen UX is more like Claude Code or Codex where you're not necessarily\nkeeping a close eye on the code itself, and sidebar Townie is more like Copilot\nor Cursor chat where you're reviewing code changes. (Why do all the AI coding\ntools start with C?)\n\nExplicit context in Townie conversations\n\nPreviously, Townie knew which val you were currently viewing, but that wasn't\nobvious as a user. You were on the same page without knowing it. Now you can see\nand explicitly choose which vals to attach to Townie's context window.\n\n\n\nTownie can read blob content\n\nTownie could previously only read blob storage metadata: key, size in bytes, and\nlast modified timestamp. Now Townie (and any MCP client) can also read blob\ncontent via an updated MCP tool.\n\nTownie onboarding for new users\n\nOnboarding for new users now routes to a Townie prompt box, which can be skipped\nto instead create a val manually (like the legacy onboarding flow).\n\nImproving Townie reliability\n\nWe fixed a few corner cases in Townie where (1) responses manually stopped in\nprogress by the user would disappear from the chat, (2) duplicate messages would\nappear, and (3) you could still approve tool calls after stopping a response in\nprogress.\n\nCLI improvements\n\nThe  CLI is a third way to use LLMs with Val Town (we recommend Townie, then\nMCP, then CLI—in that order). Thanks to JP from\nDatasketch and Halah from\nSwayable for bringing a couple\n frictions to our attention.\n\nAdd a secure authentication layer to your vals\n\nWrap any val with the std/oauth middleware\nfrom the Val Town standard library. This will authorize users based on their\nmembership in your Val Town org (i.e. your teammates) or by their username or\nuser ID. Or just add a gate that someone must have a Val Town account to access\nyour val, to keep out spammers. It's sort of like Google OAuth meets Cloudflare\nZero Trust, but for Val Town.\n\n\n\nThis is a major unlock for internal tools that need to be secured behind an\nauthentication wall. Thanks to Cole Lawrence\nwho pushed for this feature!\n\nMigrating auth providers: from Clerk to BetterAuth\n\nAfter experiencing a few too many stability issues with\nClerk, we're migrating to\nBetterAuth. We are optimistic about the greater\ncontrol and stability we'll have with BetterAuth.\n\nIf the transition goes smoothly, you should hardly notice (if at all). You may\nhave to mark login email links as not spam or re-approve GitHub OAuth. Please\nemail support@val.town if you run into bugs. Thanks\nin advance for your help with the transition.\n\nOpt in to receive Error notification email\n\nThe default notification setting for val errors is now website-only, instead of\nwebsite + email. You can opt back into error email in\nval.town/settings/notifications.\nNotifications can trigger on the first occurrence of an error or every error,\ndepending on your preference.\n\nWe had trouble with other email (e.g. login links) going to spam, possibly\ncaused by sender reputation harm inflicted by error notifications. Error emails\nare often low-information and come from abandoned vals, anyway. Email sender\nreputation is a Hard Problem that Tom is working hard to improve.\n\nDashboard redesign\n\nThe logged-in val.town dashboard now includes a switcher to toggle between orgs,\nnamely your personal account and Teams org. This is table stakes for more and\nmore and more of you who are using Val Town both personally and at work.\n\nAccess email headers in email trigger vals\n\nEmail-triggered vals can now access\n (like ) in the email object passed to the val as input.\nWith  from an inbound email, you can set  on your reply\nso that strict-threading clients like Outlook will properly group the messages.\nThanks to dt for requesting this!\n\nDB Pro Now Supports Val Town\n\nDB Pro, a database desktop client, now\nsupports Val Town SQLite\nas a database provider. This is a powerful query UI for SQLite power users in\nVal Town, if you graduate out of the built-in SQLite admin panel in a val's\nsidebar.\n\nUpgraded to Deno 2.7.5\n\nVal Town code runs on Deno. Before\nupgrading to , we were on version .\n\nAlternatives page\n\nWe wrote an Alternatives page to help\nprospective customers evaluate Val Town against similar services. As Steve wrote\nabout in his February investor update, Val Town is still finding\ntrue product-market fit, which can be tricky for such a broad tool. The\nalternatives page is part of the effort to publicly reason about where Val Town\nfits in the devtools ecosystem. Thanks to Justin Duke\nat Buttondown for modeling what a\nthoughtful alternatives page looks like.",
  "title": "Changelog — Apr 2, 2026"
}