@ai-ecoverse/slicc-bios 1.46.0 → 1.46.2
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/README.md +6 -0
- package/package.json +9 -3
package/README.md
CHANGED
|
@@ -584,6 +584,12 @@ Limits:
|
|
|
584
584
|
- Emscripten programs see only the directories at `/`, so `ls /` and `cat /pnpm-lock.yaml` don't find the two files; WASI programs such as `pnpm` (`cd / && pnpm install`) do.
|
|
585
585
|
- An update of the seed (`os/`) or `sw.js` alone has no lockfile change, so it arrives with the next boot through the BIOS.
|
|
586
586
|
|
|
587
|
+
**A new `sw.js` that waits.** A new service worker calls `skipWaiting()` when it installs, but Chromium can leave it `installed` after that. If the old worker was stopped or starting when the request came (for example, it had idled out between the update check's fallback fetches), Chromium doesn't ask it to stop early, and it lives on its 30 s idle timer, which every fetch event resets. Both places that wait for a new worker nudge it once through `os/activate.js`, 2 s after it is `installed`:
|
|
588
|
+
- **The BIOS's `intercept` step**, before it goes on to `/os/`.
|
|
589
|
+
- **Every tab's `watchWaiting`**, once for each waiting worker. Only the first `skipWaiting()` after `installed` re-triggers activation in Chromium, so a tab that nudges after another does nothing.
|
|
590
|
+
|
|
591
|
+
A nudge first sends the old worker `{ streams: 'mine' }` and waits for its answer (2 s at most), which makes sure it is running. It then sends the waiting worker `{ activate: 'now' }`. `sw.js` takes that message only from a window client and only with nothing else in it, and does nothing but call `self.skipWaiting()` again. Activation still waits until the old worker has no work, so a half-read download keeps holding it, and *Seven updated* still shows after 10 s.
|
|
592
|
+
|
|
587
593
|
## Certified packages
|
|
588
594
|
|
|
589
595
|
Seven certifies a gated package (slicc-kernel, slicc-cdp, slicc-capture, slicc-clipboard, slicc-jsh, mcpcat, and the `wasi-*`, `wasix-*`, `wasm-*` and `py-*` packages) by its integrity: a version is certified when [`src/packages/certs.json`](src/packages/certs.json) (the historic list, with its recorded `exception`s) or one of the lockfiles seven ships (the base set, `/opt/agent`, Tailscale and the catalog's projects) carries it with that integrity. `src/seed/layer.js`'s `certifiedSet()` reads that union in the page, and a user's or a project's install that needs anything else is refused, except an optional catalog package that passes [the gate](#optional-packages), with the dependencies it pins exactly, so a user's own add of a catalog package passes or fails as the panel's Install does. homescoop's certification exceptions apply to every version there, a `certs.json` or lockfile match included, and when they can't be read the version is refused. A pin on main is certified because it reached main through the merge queue, where every integration test ran on it, and because `pins.test.mjs` checks every gated pin is its own repository's release from main. `test/integration/pins.test.mjs` checks the union covers every gated pin with its integrity (Tailscale's project included), and fails when a pinned package's `engines.slicc-kernel` or kernel peer range isn't met by the pinned kernel.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-ecoverse/slicc-bios",
|
|
3
|
-
"version": "1.46.
|
|
3
|
+
"version": "1.46.2",
|
|
4
4
|
"description": "Slim loader that boots SLICC into OPFS and serves the UI from there",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -32,6 +32,12 @@
|
|
|
32
32
|
"engines": {
|
|
33
33
|
"node": ">=26"
|
|
34
34
|
},
|
|
35
|
+
"slicc": {
|
|
36
|
+
"unitSources": [
|
|
37
|
+
"src",
|
|
38
|
+
"edge"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
35
41
|
"scripts": {
|
|
36
42
|
"prepare": "slicc-install-hooks",
|
|
37
43
|
"start": "node test/integration/chrome.mjs",
|
|
@@ -42,11 +48,11 @@
|
|
|
42
48
|
"format": "biome check --write ."
|
|
43
49
|
},
|
|
44
50
|
"devDependencies": {
|
|
45
|
-
"@ai-ecoverse/slicc": "1.49.
|
|
51
|
+
"@ai-ecoverse/slicc": "1.49.23",
|
|
46
52
|
"@ai-ecoverse/slicc-browsers": "1.18.14",
|
|
47
53
|
"@ai-ecoverse/slicc-cdp": "1.41.20",
|
|
48
54
|
"@ai-ecoverse/slicc-node": "2.5.1",
|
|
49
|
-
"@ai-ecoverse/slicc-shared-web": "2.
|
|
55
|
+
"@ai-ecoverse/slicc-shared-web": "2.13.0",
|
|
50
56
|
"@ai-ecoverse/slicc-spectrum": "1.104.1",
|
|
51
57
|
"@ai-ecoverse/slicc-vault": "1.17.0",
|
|
52
58
|
"@biomejs/biome": "2.5.15",
|