solid-objects 0.17.3 → 0.17.4

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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.17.4 - 2026-10-08
4
+
5
+ - Step 12 of `docs/agents.md` now says plainly that every authorization
6
+ callback denies by default in the browser too. A worker with no
7
+ `authorizeMessage` and no `authorizeQuery` answers no call. The install
8
+ step points to the browser policy and to `runtime.run(signal)`, and the
9
+ checks start with the policy. In an evaluation, two agent answers gave the
10
+ browser install with no policy after they read that a browser policy is
11
+ not a security boundary.
12
+ - A new Chromium test proves that a browser worker with no authorization
13
+ callbacks rejects actor calls with `Unauthorized`.
14
+
3
15
  ## 0.17.3 - 2026-10-08
4
16
 
5
17
  - `docs/agents.md` has a new step 12 for the browser runtime. It covers when
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.17.3";
1
+ export declare const VERSION = "0.17.4";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.17.3";
1
+ export const VERSION = "0.17.4";
2
2
  //# sourceMappingURL=version.js.map
package/docs/agents.md CHANGED
@@ -361,6 +361,11 @@ npm install solid-objects @sqlite.org/sqlite-wasm
361
361
  `@sqlite.org/sqlite-wasm` 3.50 or newer is an optional peer dependency. The
362
362
  browser runtime needs it.
363
363
 
364
+ Every authorization callback denies by default in the browser too. Write the
365
+ policy in [Authorize in the browser](#authorize-in-the-browser) before you call
366
+ an actor. Reminders and effects run only while the worker calls
367
+ `runtime.run(signal)`.
368
+
364
369
  ### Choose the entry point
365
370
 
366
371
  | Need | Use |
@@ -464,10 +469,16 @@ and calls time out before it expires.
464
469
 
465
470
  ### Authorize in the browser
466
471
 
467
- The page and the worker run on the user's device, and the user can change
468
- their code. A browser policy limits what your own page can call. It is not a
469
- security boundary. Authorize again on the server for each write that leaves the
470
- device.
472
+ All authorization callbacks deny by default, in the browser as in Node.js. A
473
+ worker that sets no `authorizeMessage` and no `authorizeQuery` answers no call.
474
+ Each call fails with `Unauthorized`. Allow the actor types that your page uses,
475
+ as `allowNoteDrafts` does in the example. Do not remove the deny-by-default
476
+ behavior.
477
+
478
+ The browser policy is still not a security boundary. The page and the worker
479
+ run on the user's device, and the user can change their code. The policy limits
480
+ what your own page can call. Authorize again on the server for each write that
481
+ leaves the device.
471
482
 
472
483
  ### Rules for browser actors
473
484
 
@@ -552,10 +563,12 @@ The [public API](api.md#solid-objectstransmit) and the
552
563
 
553
564
  ### Verify a browser implementation
554
565
 
555
- 1. Call an operation, reload the page, and confirm that the state is the same.
556
- 2. Send concurrent calls to one identity from two tabs. Assert the final state.
557
- 3. Close the tab that holds the database. Confirm that the other tab continues.
558
- 4. On each target engine, confirm that persistent storage opens, or fails with
566
+ 1. Confirm that the worker sets `authorizeMessage` and `authorizeQuery`.
567
+ Without them, every call fails with `Unauthorized`.
568
+ 2. Call an operation, reload the page, and confirm that the state is the same.
569
+ 3. Send concurrent calls to one identity from two tabs. Assert the final state.
570
+ 4. Close the tab that holds the database. Confirm that the other tab continues.
571
+ 5. On each target engine, confirm that persistent storage opens, or fails with
559
572
  a clear error.
560
- 5. If you send writes to a server, confirm that the server rejects a device
573
+ 6. If you send writes to a server, confirm that the server rejects a device
561
574
  that it cannot authenticate, and applies a repeated write once.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solid-objects",
3
- "version": "0.17.3",
3
+ "version": "0.17.4",
4
4
  "description": "SQL-backed virtual actor library for TypeScript and Node.js, with durable state, ordered operations, and automatic activation on SQLite, PostgreSQL, or MySQL",
5
5
  "type": "module",
6
6
  "license": "MIT",