Skip to content

docs: bring the site up to core RC.1 and announce the API freeze (merge at RC.1) - #29

Open
chrnx-dev wants to merge 8 commits into
mainfrom
docs/rc1
Open

chrnx-dev wants to merge 8 commits into
mainfrom
docs/rc1

Conversation

@chrnx-dev

Copy link
Copy Markdown
Contributor

Merge when core tags RC.1, not before. These pages document behaviour that is not in the 26.9.0-beta.2 release that documentsCoreVersion still names. Bump that value in the release commit, as verify:release requires.

An audit of the Unreleased section of core's CHANGELOG against every page in this repo found 37 problems. All of them are fixed here, and each behaviour was checked against core src/ on develop.

Freeze and stability:

  • New page /docs/stability/ with the API stability policy from core's README (D18). The marketing site's banner links to it (Gitea Green-Tea/website docs(plugins): what a plugin can touch, and how to write and list one #22).
  • The banner, the home page note and Getting started now say the API is frozen at RC.1.
  • What's new is rewritten for RC.1. The breaking changes come first, each with a Migrate: line.

Behaviour that was documented nowhere:

  • Cookies: @cookie, @cookies, setCookie, parseCookies.
  • New guide "Caching and compression": covers compression (with its Vary rules), etag, and static-file revalidation.
  • Health probes: /__live__ and /__ready__.
  • Other: reserved paths, undefined → 204, string | string[] headers, WebSocket outbound backpressure and drained(), the lazy ctx.ip, and the types that are now importable.

Statements that were wrong:

  • Plugins said a plugin could silently take over a token. A token now has exactly one producer.
  • The router was described as a linear scan with radix "on the roadmap". It is now a radix index.
  • The edge was said to ignore cf-connecting-ip. Under trustProxy it uses it.
  • Bun was said to always close with 1006. That is only true before Bun 1.4.
  • Mesh described the fixed 4,000,000-character frame cap, said a late teapot never joins, and said withdrawn routes are refused. None of that is true any more.
  • The static option was listed with the wrong type.

The build passes with 29 pages. npm audit is clean. verify:release fails until RC.1 is tagged, which is expected.

🤖 Generated with Claude Code

- Add the API stability page, which mirrors the policy in core's
  README (D18).
- Link it from the banner, the home page and Getting started.
- Rewrite What's new for RC.1: each breaking change comes with its
  migration.
- Name RC.1 where pages said 'the next release'.
- Credit the RC.1 contributor.
- Add stability and caching to the sidebar.

Signed-off-by: Diego Resendez <diego.resendez@zero-oneit.com>
- createApp: the option table now matches AppOptions, adding etag,
  compression and health and fixing the static object form. Add an
  Importable types section and handleSignals.
- Routing: matching uses a radix index now. Document how the query
  string is parsed and which paths are reserved.
- Plugins and DI: a token has one producer; it is not silently taken
  over. A node cannot need what it provides.
- Decorators: cookies, undefined returning 204, and string | string[]
  headers.

Signed-off-by: Diego Resendez <diego.resendez@zero-oneit.com>
…s; fix mesh, streaming and runtimes

- New guide: Caching and compression. Covers compression with its Vary
  rules, etag, and static revalidation.
- Add cookies to arguments, health probes to introspection, and the
  ctx.ip semantics.
- Mesh: background retry for a late teapot, route replacement, retry-after,
  the new control-channel frame bounds, and the @experimental note.
- Streaming and runtimes: outbound backpressure and drained(), the Bun
  1006/1009 split, cf-connecting-ip under trustProxy on the edge, and a
  list of real runtime differences in place of 'identical'.

Signed-off-by: Diego Resendez <diego.resendez@zero-oneit.com>
Core tags it @experimental. It is public only through the mesh
signatures.

Signed-off-by: Diego Resendez <diego.resendez@zero-oneit.com>
Mesh is alpha and may change in any release. The mesh guide said 'a
minor release', so make it consistent.

Its changes stay inside its own surface: the @experimental exports,
MeshConfig, and the mesh:* events. Code that does not use mesh is never
affected by a mesh change.

Signed-off-by: Diego Resendez <diego.resendez@zero-oneit.com>
CARD-21's criterion names the createApp reference as the place a reader
finds the reserved paths. The detail lives in the routing guide, so the
reference lists them and links there.

Signed-off-by: Diego Resendez <diego.resendez@zero-oneit.com>
Found while writing core's llms.txt and checked against src:

- An override for an unknown token fails at boot (or on the first
  fetch, which rejects), not when createApp runs.
- A @step cannot declare needs: ['cookies']; it parses
  ctx.headers.cookie itself. Handlers can use @needs('cookies').
- events is a built-in node, alongside logger and rooms.
- app.listen() returns a promise that rejects when the port is taken,
  so the examples await it.

Signed-off-by: Diego Resendez <diego.resendez@zero-oneit.com>
…rn a Response

These document core's fix for both mistakes, which used to pass silently.
A provider that returns its value bare now fails the boot, a step fails
the request, and a returned Response fails the request instead of
going out as 200 {}.

Signed-off-by: Diego Resendez <diego.resendez@zero-oneit.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant