yourspace 1.0.2 — scoped tokens, second instance, and the rest of the polish
Nine weeks after v1.0.1 stopped being projected and started being the shipped reality, v1.0.2 closes a set of gaps that were either load-bearing on growth or noticeable enough that customers had asked twice.
What shipped
1. Scoped tokens + per-user identity
The single-operator-key shape that carried v1.0 retires this
release. Per-user identity (DE-0003 Phase 1) lets a token be
narrowed to specific sites and specific verbs — deploy on
my-blog only, read on every site, mint-token revoked
entirely from agent-issued tokens. The dashboard mints, scopes,
revokes; the CLI's yourspace login flow drops into the same
substrate.
Multi-tenant preview opens behind it on invite. The first cohort is a few dozen accounts; a wider preview follows after we've confirmed the abuse-prevention posture holds at small numbers.
2. Second instance online
Bundle distribution + cert coordination ran on a real look-then-promote sequence between the original region and the new one. The operator playbook for adding instance three is in the docs; the substrate is genuinely two-region-ready, not single-region-with-a-failover-stub.
The "single-node service" framing retires this week. The home page keeps the small shape it's always had, but the language behind the home page is a network now.
3. Idempotent deploys
Re-uploading the same bundle produces the same version; a mid-flight retry stops minting duplicates. Pairs with the second-instance work — the substrate the multi-region story sits on. You can't run a deploy through two regions credibly without this; we held the multi-region launch until it landed.
4. Edge functions — private preview
The edge: route field has been reserved in the schema since v1.0.
This release fills it: small functions at the node level for auth
checks, redirects, and header transforms.
// edge/auth-gate.ts
export default async function handler(req, ctx) {
const cookie = req.headers.get("cookie") ?? "";
if (!cookie.includes("session=")) {
return ctx.redirect("/login");
}
return ctx.next();
}
# yourspace.yml
routes:
- path: /admin/*
edge: auth-gate
- path: /*
target: edge-nearest
CPU budget is single-digit milliseconds; outbound fetches stay out of scope for the first wave, alongside KV, queues, and durable storage. Those are the v1.2 wave.
5. MCP server
mcp.yo.urspace.net opens to preview alongside this release. Five
tools (yourspace_deploy, yourspace_list_sites,
yourspace_get_site, yourspace_delete_site,
yourspace_create_token) over the same REST endpoints; Streamable
HTTP transport; bearer-token auth via the scoped-token model the
CLI already uses.
The tool surface stays narrow on purpose — five tools is selection-reliable; twenty would not be.
6. Brotli + per-content-type negotiation
Brotli rotation lands alongside gzip and zstd; the picker negotiates per content type at the edge. HTML and JSON lean on brotli for smaller payloads on the first paint; pre-built immutable assets keep zstd where its cost-to-ratio wins.
Measured on the docs site, median HTML payload dropped 14%. Median TTFB didn't move. The shape of win we wanted: smaller bytes, same latency.
7. Language server for yourspace.yml
yourspace lsp ships alongside the v1.0.2 CLI. VS Code and
Neovim integrations cover completion, jump-to-definition, and
rename-safe edits. Hover over a target: to see the resolved
mode; jump from a redirects.from to its declared to and
back.
8. Public /status Phase 2
The public status page picks up a markdown-driven incident log alongside the live tiles. Operators write a markdown file when something happens; the page renders it with an RFC-3339 timestamp and severity tag. No probe fleet yet — that fires when customers ask about historical regional health; for v1.0.2, the existing in-memory aggregator carries the live shape.
A grant-application surface ships in the same release. The first cohort opens once the multi-tenant preview steadies; OSS maintainers and students can apply from the dashboard.
What didn't make it
Honesty about the unshipped is part of the v1.0.2 contract:
- Route-scoped KV. Holds for v1.2 — needed edge functions to land first.
- Checkpoints + rollback. Substrate work too large for the v1.0.2 horizon.
- DNSSEC for delegated zones. Needs in-house authoritative DNS first; carries past v1.0.2.
- Probe fleet. Stays gated on customer ask.
- Team accounts + billing tiers. Per-user identity is the unblock; the billing UX lands at v1.1.
Try it
go install yo.urspace.net/cli/cmd/yourspace@latest brings down
v1.0.2; yourspace --version confirms. New accounts mint a
scoped token at signup; existing accounts can rotate to a scoped
shape from the dashboard.
The full reference at /docs/cli covers every flag and the new edge-functions section under /docs/edge-functions.