sporades 0.3.0 โ†’ 0.5.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 (90) hide show
  1. package/CHANGES.md +15 -21
  2. package/Dockerfile.base +2 -2
  3. package/README.md +31 -13
  4. package/bin/sporades-host-helper.js +903 -180
  5. package/bin/sporades.js +14510 -7112
  6. package/dist/bundle-pipeline.d.ts +35 -4
  7. package/dist/bundle-pipeline.d.ts.map +1 -1
  8. package/dist/bundle-pipeline.js +264 -91
  9. package/dist/bundle-pipeline.js.map +1 -1
  10. package/dist/cli/cli-help.d.ts +28 -4
  11. package/dist/cli/cli-help.d.ts.map +1 -1
  12. package/dist/cli/cli-help.js +10 -2
  13. package/dist/cli/cli-help.js.map +1 -1
  14. package/dist/cli/cli-version.d.ts +2 -0
  15. package/dist/cli/cli-version.d.ts.map +1 -0
  16. package/dist/cli/cli-version.js +3 -0
  17. package/dist/cli/cli-version.js.map +1 -0
  18. package/dist/cli/doctor.d.ts.map +1 -1
  19. package/dist/cli/doctor.js +102 -2
  20. package/dist/cli/doctor.js.map +1 -1
  21. package/dist/cli/host-helper-archive.d.ts +17 -2
  22. package/dist/cli/host-helper-archive.d.ts.map +1 -1
  23. package/dist/cli/host-helper-archive.js +84 -23
  24. package/dist/cli/host-helper-archive.js.map +1 -1
  25. package/dist/cli/host-helper-release-files.d.ts.map +1 -1
  26. package/dist/cli/host-helper-release-files.js +6 -5
  27. package/dist/cli/host-helper-release-files.js.map +1 -1
  28. package/dist/cli/host-helper-requests.d.ts +13 -2
  29. package/dist/cli/host-helper-requests.d.ts.map +1 -1
  30. package/dist/cli/host-helper-validation.d.ts +1 -0
  31. package/dist/cli/host-helper-validation.d.ts.map +1 -1
  32. package/dist/cli/host-helper-validation.js +18 -0
  33. package/dist/cli/host-helper-validation.js.map +1 -1
  34. package/dist/cli/host-request-builders.d.ts.map +1 -1
  35. package/dist/cli/host-request-builders.js +2 -3
  36. package/dist/cli/host-request-builders.js.map +1 -1
  37. package/dist/cli/project-config.d.ts +2 -0
  38. package/dist/cli/project-config.d.ts.map +1 -1
  39. package/dist/cli/project-config.js +36 -2
  40. package/dist/cli/project-config.js.map +1 -1
  41. package/dist/cli/schedule-inspection-envelope.d.ts +4 -0
  42. package/dist/cli/schedule-inspection-envelope.d.ts.map +1 -0
  43. package/dist/cli/schedule-inspection-envelope.js +34 -0
  44. package/dist/cli/schedule-inspection-envelope.js.map +1 -0
  45. package/dist/cli/sporades-host-helper.js +439 -30
  46. package/dist/cli/sporades-host-helper.js.map +1 -1
  47. package/dist/cli/sporades.js +1218 -97
  48. package/dist/cli/sporades.js.map +1 -1
  49. package/dist/client-capabilities.d.ts +61 -0
  50. package/dist/client-capabilities.d.ts.map +1 -0
  51. package/dist/client-capabilities.js +67 -0
  52. package/dist/client-capabilities.js.map +1 -0
  53. package/dist/client-toolchain.d.ts +40 -0
  54. package/dist/client-toolchain.d.ts.map +1 -0
  55. package/dist/client-toolchain.js +407 -0
  56. package/dist/client-toolchain.js.map +1 -0
  57. package/dist/client.d.ts +8 -0
  58. package/dist/client.d.ts.map +1 -1
  59. package/dist/client.js +8 -0
  60. package/dist/client.js.map +1 -1
  61. package/dist/public-tree-contract.d.ts +26 -0
  62. package/dist/public-tree-contract.d.ts.map +1 -0
  63. package/dist/public-tree-contract.js +75 -0
  64. package/dist/public-tree-contract.js.map +1 -0
  65. package/dist/public-tree.d.ts +84 -0
  66. package/dist/public-tree.d.ts.map +1 -0
  67. package/dist/public-tree.js +768 -0
  68. package/dist/public-tree.js.map +1 -0
  69. package/dist/server-runtime-source.d.ts +106 -4
  70. package/dist/server-runtime-source.d.ts.map +1 -1
  71. package/dist/server-runtime-source.js +2730 -175
  72. package/dist/server-runtime-source.js.map +1 -1
  73. package/dist/server.d.ts +46 -0
  74. package/dist/server.d.ts.map +1 -1
  75. package/dist/server.js +25 -0
  76. package/dist/server.js.map +1 -1
  77. package/dist/templates/client-runtime-template.d.ts +3 -1
  78. package/dist/templates/client-runtime-template.d.ts.map +1 -1
  79. package/dist/templates/client-runtime-template.js +706 -36
  80. package/dist/templates/client-runtime-template.js.map +1 -1
  81. package/dist/templates/scaffold-template.d.ts +93 -0
  82. package/dist/templates/scaffold-template.d.ts.map +1 -1
  83. package/dist/templates/scaffold-template.js +1522 -18
  84. package/dist/templates/scaffold-template.js.map +1 -1
  85. package/dist/templates/server-bundle-template.d.ts.map +1 -1
  86. package/dist/templates/server-bundle-template.js +105 -27
  87. package/dist/templates/server-bundle-template.js.map +1 -1
  88. package/package.json +21 -4
  89. package/src/types/client.d.ts +200 -0
  90. package/src/types/server.d.ts +190 -0
package/CHANGES.md CHANGED
@@ -1,36 +1,30 @@
1
1
  # Changes
2
2
 
3
- ## Unreleased - 2026-07-07
3
+ ## Unreleased - 2026-07-28
4
4
 
5
- Changes since v0.2.0.
5
+ Changes since v0.4.0.
6
6
 
7
7
  ### ๐Ÿš€ Features
8
8
 
9
- - Add doctor hosted capsule checks (5eb39af).
10
- - Add doctor local runtime checks (36d1d66).
11
- - Add doctor capsule authoring checks (3561a09).
12
- - Add doctor project security checks (a474750).
13
- - Add doctor command envelope (3786aa2).
9
+ - Add GitHub Pages documentation site (5cf865d).
14
10
 
15
11
  ### ๐Ÿ› Bug Fixes
16
12
 
17
- - Fix generated server upload helpers (8d310be).
13
+ - Fix stale Docker container detection (adafcab).
14
+ - Fix privileged runtime dependencies in generated bundles (bd72d9b).
15
+ - Refine documentation (d99e8a4).
16
+ - Remove superceded/ fixed security issue tracker doc (3befc2d).
18
17
 
19
18
  ### ๐Ÿ“ Documentation
20
19
 
21
- - MD formatting (223cd5c).
22
- - Harden database transaction coverage (a68beb2).
23
- - Update roadmap for current/next features (6a72e1d).
24
- - Plan transaction coverage audit (85a3bcc).
25
- - Document doctor workflow and roadmap status (ff2eb9c).
26
- - Plan sporades doctor diagnostics (f52f67a).
27
- - Update documentation files in the working tree: docs/api/functions/client.createHooks.html, docs/api/functions/client.isAuthenticated.html, docs/api/functions/client.onMessage.html, docs/api/functions/client.sendMessage.html, docs/api/functions/server.Boolean.html, docs/api/functions/server.capsule.html, docs/api/functions/server.Date.html, docs/api/functions/server.endpoint.html, docs/api/functions/server.Json.html, docs/api/functions/server.message.html, docs/api/functions/server.mutation.html, docs/api/functions/server.Number.html, docs/api/functions/server.query.html, docs/api/functions/server.Reference.html, docs/api/functions/server.requireAuth.html, docs/api/functions/server.String.html, docs/api/functions/server.table.html, docs/api/types/client.AppMessage.html, docs/api/types/client.AppMessageStream.html, docs/api/types/client.AuthApi.html, docs/api/types/client.AuthProviders.html, docs/api/types/client.AuthState.html, docs/api/types/client.EmailCredentials.html, docs/api/types/client.FileMetadata.html, docs/api/types/client.FileReference.html, docs/api/types/client.FilesApi.html, docs/api/types/client.HookPrimitives.html, docs/api/types/client.JsonObject.html, docs/api/types/client.JsonValue.html, docs/api/types/client.MutationState.html, docs/api/types/client.PreferencesApi.html, docs/api/types/client.PreferencesResult.html, docs/api/types/client.ProviderState.html, docs/api/types/client.PublicFileUrl.html, docs/api/types/client.PublicUrlOptions.html, docs/api/types/client.QueryState.html, docs/api/types/client.SporadesError.html, docs/api/types/client.SporadesHooks.html, docs/api/types/client.SporadesResult.html, docs/api/types/client.Subscription.html, docs/api/types/client.UploadCompleteEvent.html, docs/api/types/client.UploadOptions.html, docs/api/types/client.UploadProgressEvent.html, docs/api/types/client.UseAuthState.html, docs/api/types/server.AclDatabaseHelpers.html, docs/api/types/server.AclHelpers.html, docs/api/types/server.AclStorageFileMetadata.html, docs/api/types/server.AclStorageHelpers.html, docs/api/types/server.AnyFieldDefinition.html, docs/api/types/server.AuthContext.html, docs/api/types/server.AutoFields.html, docs/api/types/server.Capsule.html, docs/api/types/server.CapsuleContext.html, docs/api/types/server.CapsuleDefinition.html, docs/api/types/server.CapsuleHooks.html, docs/api/types/server.ContextKind.html, docs/api/types/server.ContextMiddleware.html, docs/api/types/server.DatabaseFromSchema.html, docs/api/types/server.EndpointContext.html, docs/api/types/server.EndpointDefinition.html, docs/api/types/server.EndpointHandler.html, docs/api/types/server.EndpointOptions.html, docs/api/types/server.EndpointRequest.html, docs/api/types/server.FieldBuilder.html, docs/api/types/server.FieldDefinition.html, docs/api/types/server.FieldKind.html, docs/api/types/server.FieldValue.html, docs/api/types/server.InsertValues.html, docs/api/types/server.JsonValue.html, docs/api/types/server.Logger.html, docs/api/types/server.MaybePromise.html, docs/api/types/server.MessageApi.html, docs/api/types/server.MessageDefinition.html, docs/api/types/server.MessageHandler.html, docs/api/types/server.MessageScope.html, docs/api/types/server.MiddlewareContext.html, docs/api/types/server.MutationDefinition.html, docs/api/types/server.MutationHandler.html, docs/api/types/server.MutationHook.html, docs/api/types/server.MutationHookEvent.html, docs/api/types/server.MutationResult.html, docs/api/types/server.OrderDirection.html, docs/api/types/server.QueryDefinition.html, docs/api/types/server.QueryHandler.html, docs/api/types/server.ReferenceFieldBuilder.html, docs/api/types/server.ReferenceFieldDefinition.html, docs/api/types/server.RequireAuthOptions.html, docs/api/types/server.RowFromFields.html, docs/api/types/server.SchemaDefinition.html, docs/api/types/server.TableAclContext.html, docs/api/types/server.TableAclOperation.html, docs/api/types/server.TableAclRule.html, docs/api/types/server.TableAclRuleInput.html, docs/api/types/server.TableAclRules.html, docs/api/types/server.TableApi.html, docs/api/types/server.TableDefinition.html, docs/api/types/server.UpdateValues.html, docs/api/variables/client.auth.html, docs/api/variables/client.files.html, docs/api/variables/client.preferences.html.
28
-
29
- ### ๐Ÿงช Tests
30
-
31
- - Audit transaction boundary coverage (f6268ef).
20
+ - Expose privileged file ownership safely (6120904).
21
+ - Link llms manifest from docs home (5d67abe).
22
+ - Separate getting-started tutorial from reference (e75b9ba).
23
+ - Reorder user guide reference topics (8be6380).
24
+ - Restructure published user guide (fc8910e).
25
+ - Document local Postgres usage (e269780).
26
+ - Link package docs to GitHub Pages (d94d998).
32
27
 
33
28
  ### ๐Ÿ“ฆ Packaging
34
29
 
35
- - Align scaffold version tests with package version (d3dc529).
36
- - Clean up npm package tarballs (6303628).
30
+ - Publish LLM-friendly documentation sources (53d3fdd).
package/Dockerfile.base CHANGED
@@ -8,9 +8,9 @@ LABEL com.sporades.base-image.name="sporades-base"
8
8
  LABEL com.sporades.base-image.version="0.1.0-node22-alpine"
9
9
  LABEL com.sporades.base-image.node="22"
10
10
 
11
- RUN apk add --no-cache openssh-server \
11
+ RUN apk add --no-cache openssh-server fail2ban \
12
12
  && addgroup -g 10001 -S sporades \
13
- && adduser -u 10001 -S sporades -G sporades \
13
+ && adduser -u 10001 -S sporades -G sporades -s /bin/sh \
14
14
  && mkdir -p /app /app/data /run/sshd \
15
15
  && ssh-keygen -A \
16
16
  && printf '%s\n' \
package/README.md CHANGED
@@ -13,7 +13,8 @@
13
13
  </p>
14
14
 
15
15
  Designed as Agents-first, Sporades is a CLI-first platform for building, running, inspecting, and hosting
16
- small full-stack web Capsules.
16
+ small full-stack web Capsules supporting vanilla Typescript, React, Preact, Inferno, Lit, SolidJS, Vue, and Svelte
17
+ for front-end clients.
17
18
 
18
19
  It is intended for developers and coding Agents who want deterministic commands
19
20
  instead of dashboards: scaffold a Capsule, run it locally, test the bundled
@@ -54,17 +55,17 @@ sporades host push --restart
54
55
 
55
56
  ## Documentation
56
57
 
57
- - [User guide](docs/user-guide.md): build, run, inspect, deploy, auth,
58
+ - [User guide](https://mgscox.github.io/sporades/user-guide): build, run, inspect, deploy, auth,
58
59
  preferences, files, endpoints, messages, and common workflows.
59
- - [Architecture](docs/architecture.md): platform model, runtime modes, Host
60
+ - [Architecture](https://mgscox.github.io/sporades/architecture): platform model, runtime modes, Host
60
61
  server design, and ownership boundaries.
61
- - [Runtime layout](docs/runtime-layout.md): generated files, mounts, Host
62
+ - [Runtime layout](https://mgscox.github.io/sporades/runtime-layout): generated files, mounts, Host
62
63
  directories, and persistent data locations.
63
- - [Host server installation](docs/server-installation.md): prepare a Linux Host
64
+ - [Host server installation](https://mgscox.github.io/sporades/server-installation): prepare a Linux Host
64
65
  server for Hosted Capsules.
65
- - [Product requirements](docs/PRD.md): implemented scope, deferred scope, and
66
+ - [Product requirements](https://mgscox.github.io/sporades/PRD): implemented scope, deferred scope, and
66
67
  core product principles.
67
- - [Roadmap](docs/ROADMAP.md): candidate features and promotion status.
68
+ - [Roadmap](https://mgscox.github.io/sporades/ROADMAP): candidate features and promotion status.
68
69
 
69
70
  ## A Tiny Capsule - the entire server code for a real-time 'to-do' app
70
71
 
@@ -112,17 +113,32 @@ export default capsule({
112
113
  });
113
114
  ```
114
115
 
115
- Client scaffolds wire `sporades/client` into React or Preact hooks so the UI can
116
- subscribe to queries and run mutations without hand-rolled fetch plumbing.
116
+ Client scaffolds wire `sporades/client` into React or Preact hooks, Vue
117
+ composables, Svelte stores, SolidJS signals, Lit reactive controllers, native Inferno lifecycle adapters, or framework-neutral subscriptions
118
+ so the UI can consume queries, mutations, and auth without hand-rolled fetch plumbing.
117
119
 
118
120
  ## What You Get
119
121
 
120
122
  Sporades currently includes:
121
123
 
122
- - React and Preact project scaffolds with `blank`, `todo`, `guestbook`, and
123
- `photo-library` templates.
124
+ - React, Preact, and Vue project scaffolds with `blank`, `todo`, `guestbook`,
125
+ `photo-library`, and `campfire` templates. Vue uses native Single-File
126
+ Components; Campfire is the complete consented User journey tracker exemplar.
127
+ - Svelte/Vite project scaffolds across the complete template set, with native
128
+ components and lazily observed stores. Campfire preserves identity-safe
129
+ consent, caller-renewed Journey TTL state, and deterministic cleanup.
130
+ - SolidJS/Vite scaffolds across the complete template set, with native JSX,
131
+ signals, identity-safe Campfire consent, and reactive-root cleanup.
132
+ - Lit/Vite Web Component scaffolds across the complete template set, with
133
+ component styles and host-lifecycle reactive controllers. Campfire preserves
134
+ serialized identity-safe consent, explicit Journey TTLs, and cleanup.
135
+ - Inferno scaffolds across the complete template set, using native class-component
136
+ lifecycle and classic Inferno JSX without React compatibility packages. esbuild
137
+ remains the default; Vite is available explicitly with full-page Dev refresh.
124
138
  - Local Dev sessions with rebuilds, WebSocket reconnects, SQLite persistence,
125
- logs, database inspection, auth helpers, and file storage.
139
+ logs, database inspection, auth helpers, and file storage. Every admitted
140
+ esbuild/Vite pair uses the same acknowledged Sporades full-page refresh
141
+ protocol after a successful client rebuild; no pair promises HMR.
126
142
  - Local Docker Container sessions for production-like staging tests.
127
143
  - Hosted Capsules on SSH-reachable Host servers, routed through Caddy and run in
128
144
  hardened Docker containers.
@@ -153,7 +169,9 @@ npm install --global sporades
153
169
  sporades --help
154
170
  ```
155
171
 
156
- Sporades depends on `esbuild` for Capsule bundling. On newer npm versions, you
172
+ Sporades depends on `esbuild` for the Server Bundle and default client builds;
173
+ React and Preact clients can explicitly use the runtime-owned Vite adapter;
174
+ Vue, Svelte, SolidJS, and Lit select Vite. On newer npm versions, you
157
175
  may see an `allow-scripts` warning during global install because `esbuild` uses
158
176
  a postinstall script to select the native binary for your platform.
159
177