redweb 0.13.3 → 0.13.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +7 -5
- package/bin/redweb.js +1 -1
- package/docs/CLI.md +1 -1
- package/docs/DEVELOPMENT.md +1 -1
- package/docs/GETTING_STARTED.md +1 -1
- package/docs/LIVE_HTML.md +2 -2
- package/docs/MIGRATION.md +1 -1
- package/docs/RELEASE_TRUST.md +4 -4
- package/docs/RUNTIME_DIAGNOSTICS.md +1 -1
- package/docs/SOCKET_CONTRACTS.md +2 -2
- package/docs/generated.json +213 -213
- package/docs/releases/0.13.4.json +2154 -0
- package/docs/releases/0.13.5.json +2154 -0
- package/package.json +3 -2
- package/recipes/dashboard/README.md +3 -3
- package/recipes/dashboard/app.test.cjs +31 -1
- package/recipes/dashboard/app.tsx +22 -2
- package/recipes/dashboard/auth.ts +6 -4
- package/recipes/dashboard/rate-window.test.cjs +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.13.5
|
|
6
|
+
|
|
7
|
+
Released 2026-09-01 (America/Toronto).
|
|
8
|
+
|
|
9
|
+
- Run every browser-facing canonical example and generated starter through headed Chromium, including packed/source-removed output; retain real-network tests for socket-only starters.
|
|
10
|
+
- Replace the dashboard's one-minute test wait with the same real admission limiter configured to a short test window.
|
|
11
|
+
|
|
12
|
+
## 0.13.4
|
|
13
|
+
|
|
14
|
+
Released 2026-09-01 (America/Toronto).
|
|
15
|
+
|
|
16
|
+
- Accept the equivalent `localhost`, `127.0.0.1`, and IPv6 loopback origins for the loopback-only development dashboard, while retaining exact configured-origin enforcement in production. Apply the same policy to form submissions and realtime socket upgrades.
|
|
17
|
+
- Exercise rejected and accepted dashboard login forms, authentication, private realtime updates, persistence, logout, and reconnect through headed Chromium. CI supplies a virtual display instead of substituting synthetic request headers or headless-only coverage. Align the full browser and development-refresh gates with the wrapper-free TSX counter markup using null-safe DOM assertions.
|
|
18
|
+
- Run the complete Linux CI matrix inside an owned Xvfb display so its headed dashboard integration never depends on an ambient runner display.
|
|
19
|
+
- Keep soak and long fixed-window benchmark tests out of the default and hosted release gates; deterministic browser, protocol, load, memory, recovery, package, and audit checks remain blocking.
|
|
20
|
+
|
|
5
21
|
## 0.13.3
|
|
6
22
|
|
|
7
23
|
Released 2026-09-01 (America/Toronto).
|
package/README.md
CHANGED
|
@@ -9,12 +9,12 @@ Use the same package for a live site, static HTML, Express HTTP endpoints, or ro
|
|
|
9
9
|
Start with a complete, tested counter application:
|
|
10
10
|
|
|
11
11
|
<!-- redweb:setup:start -->
|
|
12
|
-
> Documentation for Redweb 0.13.
|
|
12
|
+
> Documentation for Redweb 0.13.5. Install that exact version when following these examples.
|
|
13
13
|
|
|
14
14
|
```sh
|
|
15
|
-
npx --yes redweb@0.13.
|
|
15
|
+
npx --yes redweb@0.13.5 init my-realtime --template realtime
|
|
16
16
|
cd my-realtime
|
|
17
|
-
npm install --save-exact redweb@0.13.
|
|
17
|
+
npm install --save-exact redweb@0.13.5
|
|
18
18
|
npm test
|
|
19
19
|
npm run dev
|
|
20
20
|
```
|
|
@@ -265,7 +265,7 @@ The isolated browser harness copies its verification helpers explicitly and chec
|
|
|
265
265
|
|
|
266
266
|
`npm run verify:live-html:browser:coverage` combines the existing full browser workload (counter, chat, CSS, JSX, components, forms and dashboard) with explicit failure-path unit tests. Its 100% authored-tool coverage is separate from frontend coverage and release acceptance. The native workload requires the dashboard's supported Node version. Known limitations of the unchanged legacy browser tool— including uncertain descendant cleanup—are characterized, not silently fixed or counted as verified cleanup; see the [coverage audit](docs/COVERAGE_SCOPE_AUDIT.md).
|
|
267
267
|
|
|
268
|
-
The frontend is maintained in `redweb-client/live-html`; Redweb emits only a two-line mounting bootstrap. Redweb 0.13.
|
|
268
|
+
The frontend is maintained in `redweb-client/live-html`; Redweb emits only a two-line mounting bootstrap. Redweb 0.13.5 depends on published `redweb-client@^0.2.0`, so ordinary application installation needs no client checkout or link. Contributors editing the client can still use the [linked development workflow](docs/CLIENT_DEVELOPMENT.md).
|
|
269
269
|
|
|
270
270
|
`npm run measure:browser:client` separately serves the exact installed socket-only module with and without instrumentation through the same real HTTP/WebSocket/browser cases and retains its source hash and counters. It exits unsuccessfully until all four coverage metrics reach 100%; incomplete results are not a passing dependency-coverage claim. Reports are local under `coverage/browser-client` and do not alter the installed dependency or published package.
|
|
271
271
|
|
|
@@ -279,7 +279,9 @@ Client verification also retains raw worker files before parsing or cleanup, inc
|
|
|
279
279
|
|
|
280
280
|
`npm run verify:browser:supplements` combines focused units with the existing real-browser runtime cases to require 100% authored-source coverage of the page-ownership and runtime-frame verification helpers, including anonymous callbacks. It is included in the browser coverage gate; see the [coverage scope audit](docs/COVERAGE_SCOPE_AUDIT.md) for exact boundaries and remaining gaps.
|
|
281
281
|
|
|
282
|
-
`npm run verify:dashboard:coverage` measures the dashboard browser verifier separately: failure-boundary units plus
|
|
282
|
+
`npm run verify:dashboard:coverage` measures the dashboard browser verifier separately: failure-boundary units plus headed Chromium, SQLite, rejected and accepted browser form sign-in through `localhost`, private card updates, draft preservation and logout checks. CI runs the visible-browser process under a virtual display. Native dashboard tests require the starter's supported Node version; file-lock retention is Windows-specific. The scope is the authored verifier, not internal coverage of its browser-expression strings.
|
|
283
|
+
|
|
284
|
+
All canonical browser-facing examples run in headed Chromium: counter, chat, cards, components and JSX. `npm run verify:package:browser:coverage` tests their individual interactions, computed CSS, chat reconnect/disconnect and component isolation. `npm run verify:starter:browser:coverage` independently checks the generated realtime, chat and multipage site starters after compilation with their source removed. The isolated `verify:live-html:package` gate repeats these checks against the installed tarball. Dashboard coverage remains the separate headed gate above; socket-only starters use real HTTP/WebSocket tests rather than a browser. These integration tests use real servers and sockets, not mocks. Failure-boundary units supplement them; 100% authored harness coverage is not a claim of exhaustive browser behavior or cross-browser certification. No soak is required for this example acceptance.
|
|
283
285
|
|
|
284
286
|
An unresolved Linux CI process-cleanup assertion and the diagnostics added to investigate it are tracked in [process cleanup observations](docs/PROCESS_CLEANUP_OBSERVATION.md). Passing runs do not establish its cause or waive the original failure.
|
|
285
287
|
|
package/bin/redweb.js
CHANGED
package/docs/CLI.md
CHANGED
|
@@ -4,7 +4,7 @@ Use the version installed in your project (`npx --no-install redweb`) when troub
|
|
|
4
4
|
|
|
5
5
|
## Add pages, components, and socket routes
|
|
6
6
|
|
|
7
|
-
These commands are available in `redweb@0.13.
|
|
7
|
+
These commands are available in `redweb@0.13.5`.
|
|
8
8
|
|
|
9
9
|
```sh
|
|
10
10
|
npx --no-install redweb add page dashboard
|
package/docs/DEVELOPMENT.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Development refresh and inspection
|
|
2
2
|
|
|
3
|
-
This API is available in `redweb@0.13.
|
|
3
|
+
This API is available in `redweb@0.13.5`. Use documentation matching the installed package before enabling it.
|
|
4
4
|
|
|
5
5
|
## Browser refresh
|
|
6
6
|
|
package/docs/GETTING_STARTED.md
CHANGED
|
@@ -47,7 +47,7 @@ For private raw socket subscriptions, see [room authorization and shared request
|
|
|
47
47
|
|
|
48
48
|
Build first. Deploy `dist/`, the package manifest, and the lockfile, then install runtime dependencies with `npm ci --omit=dev`. The starters are tested with `src/` unavailable after compilation. Configure HTTPS/WSS and a proxy that supports WebSocket upgrades when using a reverse proxy.
|
|
49
49
|
|
|
50
|
-
These deployment commands require a verified release pair. `redweb@0.13.
|
|
50
|
+
These deployment commands require a verified release pair. `redweb@0.13.5` installs published `redweb-client@0.2.0` automatically through its dependency. Future unreleased Redweb changes require their matching tested tarball until a release containing them is published. The `npm link` workflow is local development only: a clean production install does not preserve that link.
|
|
51
51
|
|
|
52
52
|
Before public access, add authentication, authorization, trusted-origin policy, input/rate limits, application persistence where needed, and bounded shutdown. Treat reconnect/session tokens as credentials. Do not promise exactly-once delivery or durable sessions from an in-memory starter. See [operations](MULTIPLAYER_OPERATIONS.md) and [guarantees and limits](PRODUCTION_READINESS.md).
|
|
53
53
|
|
package/docs/LIVE_HTML.md
CHANGED
|
@@ -340,7 +340,7 @@ The same bounded validation implementation is shared with socket contracts. Thei
|
|
|
340
340
|
|
|
341
341
|
## Action authorization
|
|
342
342
|
|
|
343
|
-
Identity and permission are separate: the server's existing `authenticate(request)` hook establishes `context.principal`; an action policy decides whether that identity may perform this operation. In Redweb 0.13.
|
|
343
|
+
Identity and permission are separate: the server's existing `authenticate(request)` hook establishes `context.principal`; an action policy decides whether that identity may perform this operation. In Redweb 0.13.5, add `authorize` to the action decorator instead of repeating permission checks inside each method:
|
|
344
344
|
|
|
345
345
|
```tsx
|
|
346
346
|
// Inside a page/component; `input` is the amount schema from the example above.
|
|
@@ -365,7 +365,7 @@ Denial returns recoverable `ACCESS_DENIED`; timeout returns `ACCESS_TIMEOUT`; co
|
|
|
365
365
|
|
|
366
366
|
## Protected pages and shared request identity
|
|
367
367
|
|
|
368
|
-
In Redweb 0.13.
|
|
368
|
+
In Redweb 0.13.5, a page can declare `authorize(context)` alongside its route. This is an API pattern for an application that already supplies the server's `authenticate(request)` hook, not a standalone login system:
|
|
369
369
|
|
|
370
370
|
```tsx
|
|
371
371
|
@page('/account/:id', {
|
package/docs/MIGRATION.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Upgrade an existing Redweb application
|
|
2
2
|
|
|
3
|
-
Match the installed package to its versioned documentation. Redweb 0.13.
|
|
3
|
+
Match the installed package to its versioned documentation. Redweb 0.13.5 contains the capabilities described by the 0.13.5 guides; a later development checkout may not match that release. See [release verification](RELEASE_TRUST.md) and the changelog shipped with your selected package. Keep your lockfile and rollback artifact, and run your own real HTTP/WebSocket/browser tests after upgrading.
|
|
4
4
|
|
|
5
5
|
## 0.8 migration notes
|
|
6
6
|
|
package/docs/RELEASE_TRUST.md
CHANGED
|
@@ -18,18 +18,18 @@ Use the [official Node release schedule](https://nodejs.org/en/about/previous-re
|
|
|
18
18
|
|
|
19
19
|
## Pin the package and the documentation together
|
|
20
20
|
|
|
21
|
-
For a published application, select an exact release, commit its lockfile, and use `npm ci` in CI/deployment. This guide is versioned for 0.13.
|
|
21
|
+
For a published application, select an exact release, commit its lockfile, and use `npm ci` in CI/deployment. This guide is versioned for 0.13.5. Before registry publication, verify the packed candidate; after publication, repeat these registry checks from a clean application:
|
|
22
22
|
|
|
23
23
|
```sh
|
|
24
|
-
npm view redweb@0.13.
|
|
25
|
-
npm install --save-exact redweb@0.13.
|
|
24
|
+
npm view redweb@0.13.5 version engines dist.integrity dist.signatures dist.attestations gitHead --json
|
|
25
|
+
npm install --save-exact redweb@0.13.5
|
|
26
26
|
npm audit signatures
|
|
27
27
|
npm audit --omit=dev
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
The signature command must run in the installed application directory. Keep TLS verification enabled and use a current npm CLI; a certificate/trust-store failure is not a reason to disable verification. A lockfile's integrity value detects changed package bytes; registry signatures authenticate registry metadata; provenance, when present and verified, links an artifact to a build/source identity. Vulnerability audit is a separate check against known advisories, not an application penetration test.
|
|
31
31
|
|
|
32
|
-
Redweb 0.13.
|
|
32
|
+
Redweb 0.13.5 contains the server-rendered TSX, reactive state/actions, complete starters, shared socket contracts, authorization, diagnostics, lifecycle work, and bounded heartbeat grace described by these versioned guides. Keep the package and documentation version aligned; do not mix a development guide or a future checkout with 0.13.5 and assume newer APIs exist.
|
|
33
33
|
|
|
34
34
|
Redweb is pre-1.0. Consult the changelog and versioned guide before upgrading, run your own real HTTP/WebSocket/browser tests, and keep a rollback artifact. Patch/minor numbers and a compatible TypeScript build alone do not prove wire compatibility, preserved sessions, database compatibility or application authorization. HTTP-created live-page sessions are process-owned; a restart or rolling replacement does not migrate them automatically. Raw socket protocol versions are negotiated only when the route opts in, and application payload compatibility remains your contract.
|
|
35
35
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Understand failures before retrying
|
|
2
2
|
|
|
3
|
-
Status: included in `redweb@0.13.
|
|
3
|
+
Status: included in `redweb@0.13.5`.
|
|
4
4
|
|
|
5
5
|
Authentication identifies a visitor. Authorization decides what that visitor may do. Validation checks an input's shape. An application failure means server code or a dependency failed; it is not evidence that the visitor supplied bad credentials.
|
|
6
6
|
|
package/docs/SOCKET_CONTRACTS.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Shared socket contracts
|
|
2
2
|
|
|
3
|
-
Status: included in `redweb@0.13.
|
|
3
|
+
Status: included in `redweb@0.13.5`.
|
|
4
4
|
|
|
5
5
|
A contract declares message payloads once. The same schema supplies runtime validation and inferred TypeScript types for senders and handlers. The URL still selects the route (`/match`), and the envelope's `type` selects an individual handler (`join`, `move`, `resume`). No socket decorators or second action dispatcher are required.
|
|
6
6
|
|
|
7
|
-
Start with `npx --yes redweb@0.13.
|
|
7
|
+
Start with `npx --yes redweb@0.13.5 init my-match --template socket`. The complete maintained example lives in [the socket recipe](../recipes/socket/README.md): [contract](../recipes/socket/contract.ts), [handlers](../recipes/socket/handlers.ts), [server](../recipes/socket/app.tsx), and [real-network tests](../recipes/socket/app.test.cjs).
|
|
8
8
|
|
|
9
9
|
Session ownership is separate from room fan-out. For authenticated group delivery,
|
|
10
10
|
see [room authorization](ROOM_AUTHORIZATION.md) and the complete
|