@wenathlan/saddle 2.0.6 → 2.1.0

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.
Files changed (45) hide show
  1. package/Dockerfile +40 -20
  2. package/README.md +2 -2
  3. package/boards.json +1 -1
  4. package/cores.json +1 -1
  5. package/dist/browser.d.ts.map +1 -1
  6. package/dist/browser.js +5 -5
  7. package/dist/browser.js.map +1 -1
  8. package/dist/capacitor.config.d.ts +4 -2
  9. package/dist/capacitor.config.d.ts.map +1 -1
  10. package/dist/capacitor.config.js +6 -4
  11. package/dist/capacitor.config.js.map +1 -1
  12. package/dist/cli.d.ts.map +1 -1
  13. package/dist/cli.js +59 -1
  14. package/dist/cli.js.map +1 -1
  15. package/dist/docs/example-localjob.d.ts +2 -0
  16. package/dist/docs/example-localjob.d.ts.map +1 -0
  17. package/dist/docs/example-localjob.js +15 -0
  18. package/dist/docs/example-localjob.js.map +1 -0
  19. package/dist/docs/example-publicapi.d.ts +2 -0
  20. package/dist/docs/example-publicapi.d.ts.map +1 -0
  21. package/dist/docs/example-publicapi.js +7 -0
  22. package/dist/docs/example-publicapi.js.map +1 -0
  23. package/dist/vite.config.d.ts +3 -0
  24. package/dist/vite.config.d.ts.map +1 -0
  25. package/dist/vite.config.js +227 -0
  26. package/dist/vite.config.js.map +1 -0
  27. package/dist/vitest.config.d.ts +3 -0
  28. package/dist/vitest.config.d.ts.map +1 -0
  29. package/dist/vitest.config.js +26 -0
  30. package/dist/vitest.config.js.map +1 -0
  31. package/docker.config +3 -3
  32. package/docs/containerplatforms-2.1.0.md +73 -0
  33. package/docs/native-wrappers.md +38 -0
  34. package/gpus.json +1 -1
  35. package/mttg.config +1 -1
  36. package/package.json +11 -12
  37. package/passage.config +2 -2
  38. package/processors.json +1 -1
  39. package/qemu.config +2 -2
  40. package/tsconfig.json +2 -2
  41. package/virtualhardware.json +1 -1
  42. package/vm.config.json +1 -1
  43. package/web/manifest.json +30 -0
  44. package/web/readme.md +12 -11
  45. package/web/extension/manifest.json +0 -23
package/qemu.config CHANGED
@@ -2,7 +2,7 @@
2
2
  "meta": {
3
3
  "name": "qemu.config",
4
4
  "title": "saddle - QEMU Configuration (canonical JSON; sources: S6 TOML + v5 spec 11.1.0 + libvirt overlay)",
5
- "version": "2.0.0",
5
+ "version": "2.1.0",
6
6
  "date": "2026-08-22",
7
7
  "language": "en",
8
8
  "format": "JSON (canonical v2 schema; sources were S6 TOML + V5 JSON schema + libvirt conf overlay)",
@@ -90,7 +90,7 @@
90
90
  "githubSetupPython": "actions/setup-python@v5.4.0",
91
91
  "platformKernel": "6.11.0+"
92
92
  },
93
- "version": "2.0.0",
93
+ "version": "2.1.0",
94
94
  "title": "saddle - QEMU Configuration (canonical JSON; sources: S6 TOML + v5 spec 11.1.0 + libvirt overlay)",
95
95
  "project": "e2ugh v6",
96
96
  "toolchainV5": {
package/tsconfig.json CHANGED
@@ -22,8 +22,8 @@
22
22
  "include": [
23
23
  "index.ts",
24
24
  "*.ts",
25
- "examples/**/*.ts",
25
+ "docs/example-*.ts",
26
26
  "jsdom.d.ts"
27
27
  ],
28
- "exclude": ["node_modules", "dist", "coverage", "docs", "web", "tests", "android", "ios", "desktop"]
28
+ "exclude": ["node_modules", "dist", "coverage", "web", "tests", "build"]
29
29
  }
@@ -3,7 +3,7 @@
3
3
  "meta": {
4
4
  "name": "e2ugh",
5
5
  "title": "e2ugh v6 - Master Schema, Cross-References and Compatibility Matrix",
6
- "version": "2.0.0",
6
+ "version": "2.1.0",
7
7
  "date": "2026-08-22",
8
8
  "language": "en",
9
9
  "description": "Master schema of the e2ugh v6 virtual hardware engine: binds the 10 specification files (cpu, cores, boards, gpu, vm.config, passage, docker, qemu, mttcg, mesa), defines the modularity ranges (vCPU 1-192, RAM 1-1024 GB, vRAM 8-96 GB via MIG), defaults, validation rules and the pinned 2026-08-22 compatibility matrix.",
package/vm.config.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "meta": {
4
4
  "name": "vm.config.json",
5
5
  "title": "e2ugh v6 - VM Profiles and Orchestrator Configuration (canonical schema)",
6
- "version": "2.0.0",
6
+ "version": "2.1.0",
7
7
  "date": "2026-08-22",
8
8
  "language": "en",
9
9
  "description": "22 VM profiles consumed by the VHE orchestrator. Each profile binds a CPU identity (cpu.json), core count (cores.json), board (boards.json), GPU profile (gpu.json) and runtime (qemu.json, docker.json, mesa.json). Accel policy: KVM preferred when /dev/kvm exists, TCG multi-thread fallback on GitHub-hosted runners (see passage.json).",
@@ -0,0 +1,30 @@
1
+ {
2
+ "manifest_version": 3,
3
+ "name": "Saddle browser bridge",
4
+ "version": "2.1.0",
5
+ "description": "User initiated page snapshots through the Saddle browser contract.",
6
+ "minimum_chrome_version": "110",
7
+ "permissions": [
8
+ "activeTab",
9
+ "scripting",
10
+ "storage"
11
+ ],
12
+ "icons": {
13
+ "32": "icon32.png",
14
+ "64": "icon64.png",
15
+ "128": "icon128.png"
16
+ },
17
+ "background": {
18
+ "service_worker": "worker.js",
19
+ "type": "module"
20
+ },
21
+ "action": {
22
+ "default_title": "Saddle",
23
+ "default_popup": "popup.html",
24
+ "default_icon": {
25
+ "32": "icon32.png",
26
+ "64": "icon64.png",
27
+ "128": "icon128.png"
28
+ }
29
+ }
30
+ }
package/web/readme.md CHANGED
@@ -5,7 +5,7 @@ virtual container — cpu, ram, gpu, mesa software graphics — entirely in the
5
5
  browser, plus one self-hosted node api exposing the exact same sandbox over
6
6
  http for automation. no framework, no build step, no serverless functions.
7
7
 
8
- version 2.0.6 — reported by `/api/v1/health` and kept in lockstep with
8
+ version 2.1.0 — reported by `/api/v1/health` and kept in lockstep with
9
9
  `package.json` and the `meta.version` envelope of the ten data documents
10
10
  (v6-SYNC worklog task).
11
11
 
@@ -61,11 +61,11 @@ vm:stopped, vm:deleted).
61
61
  | `schema.prisma` / `init.sql` / `drizzle.config.ts` | the three schema mirrors of the db.js migrations (prisma, raw sql, drizzle kit) |
62
62
  | `mime.types` | the extension to content-type table parsed by server.js at boot |
63
63
  | `index.html` + `main.tsx` + `App.tsx` | the React app entry (vite build; the Pages-published surface) |
64
- | `pages/` + `components/` + `hooks/` + `lib/` + `contexts/` | the React app folders that sit beside the console files at the web root |
64
+ | page folders `Home/` `NotFound/` + loose files (`PageShell`, `SiteHeader`, `SaddleMark`, `SectionRail`, `RuntimeDiagram`, `ErrorBoundary`, `button.tsx`, `card.tsx`, `tooltip.tsx`, `sonner.tsx`, `utils.ts`, `paths.ts`, `ThemeContext.tsx`) | the flattened React app that sits beside the console files at the web root (2.1.0 wave: one folder per route, shared files loose at the root) |
65
65
  | `package.json` | deploy manifest only (`@wenathlan/saddle-web`, private, never published): vercel/netlify require it at the deploy root; the published npm package is the central `@wenathlan/saddle` without web |
66
66
  | `Dockerfile` (repo root) | container image for ghcr.io/wenathlan/saddle (the main image; web/ ships inside) |
67
- | `vercel.json` | static hosting config, **no functions** |
68
- | `netlify.toml`| static hosting config, **no functions** |
67
+ | `vercel.json` (repo root) | static hosting config for the React SPA (`outputDirectory: web/dist/public`, SPA rewrite), **no functions** |
68
+ | `netlify.toml` (repo root) | static hosting config for the React SPA (`publish = "web/dist/public"`, SPA rewrite 200), **no functions** |
69
69
  | `caddyfile` | self-host reverse proxy for the node api (devthink.pro + www) |
70
70
  | `readme.md` | this document |
71
71
 
@@ -177,8 +177,8 @@ the role is `admin` (overview cards, mesh node table with ping through
177
177
 
178
178
  | target | method | what runs |
179
179
  |--------|--------|-----------|
180
- | vercel (clone) | `web/vercel.json`, static output | bytes only: local engine, `?api=` pointing at the main node for auth |
181
- | netlify (clone) | `web/netlify.toml`, `publish = "."` (file lives inside `web/`), node 26.7.0 | bytes only: same behavior as vercel |
180
+ | vercel (clone) | root `vercel.json`, SPA output from `web/dist/public` | bytes only: local engine, `?api=` pointing at the main node for auth |
181
+ | netlify (clone) | root `netlify.toml`, `publish = "web/dist/public"` (file lives at the repo root), node 26.7.0 | bytes only: same behavior as vercel |
182
182
  | self-host (main, devthink.pro) | `docker build .` (the repo-root Dockerfile) -> `ghcr.io/wenathlan/saddle` (the main image; web/ ships inside), caddyfile in front | static pages + full `/api/v1` (auth, admin, mesh) + sqlite on `/data` |
183
183
 
184
184
  ## why the static + node split
@@ -194,12 +194,13 @@ single dependency.
194
194
 
195
195
  ## deploy options
196
196
 
197
- - **vercel static** — `web/vercel.json` sets `outputDirectory: web` with
198
- cache headers. static edge only: the page runs the local engine in the
197
+ - **vercel static** — the repo-root `vercel.json` sets
198
+ `outputDirectory: web/dist/public` with an SPA rewrite and cache
199
+ headers. static edge only: the page runs the local engine in the
199
200
  browser; there are no functions.
200
- - **netlify static** — `web/netlify.toml` sits inside `web/` and sets
201
- `publish = "."` on node 26.7.0 with security headers. same rule:
202
- static edge only, no functions.
201
+ - **netlify static** — the repo-root `netlify.toml` sets
202
+ `publish = "web/dist/public"` on node 26.7.0 with an SPA rewrite and
203
+ security headers. same rule: static edge only, no functions.
203
204
  - **self-host (devthink.pro pattern)** — run `node web/server.js` (or the
204
205
  `ghcr.io/wenathlan/saddle (the main image; web/ ships inside)` container behind `web/caddyfile`):
205
206
  caddy serves the static files on devthink.pro (+ www redirect, gzip,
@@ -1,23 +0,0 @@
1
- {
2
- "manifest_version": 3,
3
- "name": "Saddle browser bridge",
4
- "version": "2.0.0",
5
- "description": "User initiated page snapshots through the Saddle browser contract.",
6
- "minimum_chrome_version": "110",
7
- "permissions": ["activeTab", "scripting", "storage"],
8
- "icons": {
9
- "32": "icons/icon32.png",
10
- "64": "icons/icon64.png",
11
- "128": "icons/icon128.png"
12
- },
13
- "background": { "service_worker": "worker.js", "type": "module" },
14
- "action": {
15
- "default_title": "Saddle",
16
- "default_popup": "popup.html",
17
- "default_icon": {
18
- "32": "icons/icon32.png",
19
- "64": "icons/icon64.png",
20
- "128": "icons/icon128.png"
21
- }
22
- }
23
- }