v0.3.0
Minor Changes
-
39179a9: Add a
client-side-jsskill covering how to serve client-side JavaScript modules. Val Town has no build step, so this explains the actual mechanics agents otherwise have to reverse-engineer:serveFiletranspiling.ts/.tsx/.jsxto browser-ready JS per request, loading a module with<script type="module">, how the browser resolves local imports (explicit extensions) and third-party deps (full ESM URLs), and the esm.town direct-serve alternative. Fills a gap betweenreact-ui(JSX/styling conventions) andhttp-endpoints(handler/CORS), and is framework-agnostic. -
e6d1ac8: Add a
restricted-accessskill covering app access (httpPrivacy) — the axis that controls who can call a val's HTTP endpoints, independent of theprivacysetting that controls who can read its code. Explains what agents can't infer from a failed request: access is granted to whole organizations (a viewer needs a grant and membership in the granted org, rechecked on every request), so an unauthenticated caller gets a302to a login page rather than the val's response — which surfaces asfetch_val_endpointrefusing to follow a redirect, or an API client receiving login HTML where it expected JSON, neither of which is a bug in the val's code. Also covers project-scoped bypass tokens for webhooks and other machine callers, and theX-Val-Town-User→GET /v3/val/viewerexchange for identifying a human viewer inside a restricted val.The most consequential piece is disambiguation from
std/oauth: both answer "make my app require a login," but restricted access gates at the platform edge before your code runs and admits organizations, whilestd/oauthruns inside the val and gives it its own logged-in users. Applying both to one val makes visitors authenticate twice. Theoauthskill gains a reciprocal pointer, andhttp-endpointsno longer describes an endpoint URL as unconditionally public. -
cfd550a: Adds a skill for creating new skills
-
4715341: Remove the
templatesskill. Its catalog of official starters is now served live by the Val Townfind_templatestool (which lists the public vals under thetemplatesorg), so a hand-maintained catalog in this package is no longer needed and would only drift. The remix/template guidance it carried lives in the app's system prompt and thefind_templatestool description.
Patch Changes
- d14627f: Teach the immutable asset-caching pattern (
serveImmutableFile/immutableFileUrlfromstd/utils) in theclient-side-js,http-endpoints, andreact-uiskills: the never-cached HTML shell stamps/__immutable/<version>/...URLs, served withCache-Control: immutable; publishing bumps the version, invalidating automatically (old-version URLs 404). Measured: repeat visits 665ms → 157ms with zero asset requests.