@powerhousedao/switchboard 6.2.3-dev.5 → 6.2.3-dev.51
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/.tsbuild/test/attachments/byte-grants.test.d.ts +2 -0
- package/.tsbuild/test/attachments/byte-grants.test.d.ts.map +1 -0
- package/.tsbuild/test/attachments/byte-routes-read-gate.integration.test.d.ts +2 -0
- package/.tsbuild/test/attachments/byte-routes-read-gate.integration.test.d.ts.map +1 -0
- package/.tsbuild/test/attachments/reserve-metadata-parity.test.d.ts +2 -0
- package/.tsbuild/test/attachments/reserve-metadata-parity.test.d.ts.map +1 -0
- package/.tsbuild/test/attachments/url-signer.test.d.ts +2 -0
- package/.tsbuild/test/attachments/url-signer.test.d.ts.map +1 -0
- package/.tsbuild/test/boot-create-signature-policy.test.d.ts +2 -0
- package/.tsbuild/test/boot-create-signature-policy.test.d.ts.map +1 -0
- package/.tsbuild/test/boot-mcp-enabled.test.d.ts +2 -0
- package/.tsbuild/test/boot-mcp-enabled.test.d.ts.map +1 -0
- package/.tsbuild/test/boot-privacy.test.d.ts +2 -0
- package/.tsbuild/test/boot-privacy.test.d.ts.map +1 -0
- package/.tsbuild/test/boot-unsupported-stored-documents.test.d.ts +2 -0
- package/.tsbuild/test/boot-unsupported-stored-documents.test.d.ts.map +1 -0
- package/.tsbuild/test/boot-without-renown.test.d.ts +2 -0
- package/.tsbuild/test/boot-without-renown.test.d.ts.map +1 -0
- package/.tsbuild/test/boot-without-require-signatures.test.d.ts +2 -0
- package/.tsbuild/test/boot-without-require-signatures.test.d.ts.map +1 -0
- package/.tsbuild/test/boot-worker-trust-policy.test.d.ts +2 -0
- package/.tsbuild/test/boot-worker-trust-policy.test.d.ts.map +1 -0
- package/.tsbuild/test/boot-workflow-singleton-conflict.test.d.ts +2 -0
- package/.tsbuild/test/boot-workflow-singleton-conflict.test.d.ts.map +1 -0
- package/.tsbuild/test/boot-workflow-singleton-retry.test.d.ts +2 -0
- package/.tsbuild/test/boot-workflow-singleton-retry.test.d.ts.map +1 -0
- package/.tsbuild/test/builder-defaults.test.d.ts +2 -0
- package/.tsbuild/test/builder-defaults.test.d.ts.map +1 -0
- package/.tsbuild/test/create-signature-policy.test.d.ts +2 -0
- package/.tsbuild/test/create-signature-policy.test.d.ts.map +1 -0
- package/.tsbuild/test/durable-node-fs-pg16.test.d.ts +2 -0
- package/.tsbuild/test/durable-node-fs-pg16.test.d.ts.map +1 -0
- package/.tsbuild/test/fatal-shutdown.test.d.ts +2 -0
- package/.tsbuild/test/fatal-shutdown.test.d.ts.map +1 -0
- package/.tsbuild/test/mcp-flag.test.d.ts +2 -0
- package/.tsbuild/test/mcp-flag.test.d.ts.map +1 -0
- package/.tsbuild/test/observability-signals.test.d.ts +2 -0
- package/.tsbuild/test/observability-signals.test.d.ts.map +1 -0
- package/.tsbuild/test/pglite-preflight.test.d.ts +2 -0
- package/.tsbuild/test/pglite-preflight.test.d.ts.map +1 -0
- package/.tsbuild/test/renown-trust-policy.test.d.ts +2 -0
- package/.tsbuild/test/renown-trust-policy.test.d.ts.map +1 -0
- package/.tsbuild/test/snapshot-writer.d.ts +18 -0
- package/.tsbuild/test/snapshot-writer.d.ts.map +1 -0
- package/.tsbuild/test/unsupported-stored-documents.test.d.ts +2 -0
- package/.tsbuild/test/unsupported-stored-documents.test.d.ts.map +1 -0
- package/.tsbuild/test/workflow/harness.d.ts +56 -0
- package/.tsbuild/test/workflow/harness.d.ts.map +1 -0
- package/.tsbuild/test/workflow/oauth.test.d.ts +2 -0
- package/.tsbuild/test/workflow/oauth.test.d.ts.map +1 -0
- package/.tsbuild/test/workflow/resolvers.test.d.ts +2 -0
- package/.tsbuild/test/workflow/resolvers.test.d.ts.map +1 -0
- package/.tsbuild/test/workflow/webhook-dedupe.test.d.ts +2 -0
- package/.tsbuild/test/workflow/webhook-dedupe.test.d.ts.map +1 -0
- package/.tsbuild/test/workflow/webhook-signed.test.d.ts +2 -0
- package/.tsbuild/test/workflow/webhook-signed.test.d.ts.map +1 -0
- package/.tsbuild/test/workflow/webhook-trigger-test.test.d.ts +2 -0
- package/.tsbuild/test/workflow/webhook-trigger-test.test.d.ts.map +1 -0
- package/.tsbuild/test/workflow/webhook-unsigned.test.d.ts +2 -0
- package/.tsbuild/test/workflow/webhook-unsigned.test.d.ts.map +1 -0
- package/.tsbuild/test/workflow-reactor-access.test.d.ts +2 -0
- package/.tsbuild/test/workflow-reactor-access.test.d.ts.map +1 -0
- package/.tsbuild/test/workflow-reactor-enforcement.test.d.ts +2 -0
- package/.tsbuild/test/workflow-reactor-enforcement.test.d.ts.map +1 -0
- package/.tsbuild/test/workflow-read-gate.test.d.ts +2 -0
- package/.tsbuild/test/workflow-read-gate.test.d.ts.map +1 -0
- package/.tsbuild/test/workflow-runtime.test.d.ts +2 -0
- package/.tsbuild/test/workflow-runtime.test.d.ts.map +1 -0
- package/.tsbuild/tsconfig.tsbuildinfo +1 -1
- package/.tsbuild/tsdown.config.d.ts.map +1 -1
- package/.tsbuild/vitest.config.d.ts.map +1 -1
- package/Auth.md +94 -0
- package/CHANGELOG.md +541 -0
- package/README.md +35 -0
- package/dist/index.d.mts +2 -1
- package/dist/index.mjs +48 -49
- package/dist/index.mjs.map +1 -1
- package/dist/install-packages.d.mts +2 -1
- package/dist/install-packages.mjs +2 -2
- package/dist/install-packages.mjs.map +1 -1
- package/dist/migrate.d.mts +2 -1
- package/dist/migrate.mjs +4 -3
- package/dist/migrate.mjs.map +1 -1
- package/dist/server-J9fpd42v.mjs +3549 -0
- package/dist/server-J9fpd42v.mjs.map +1 -0
- package/dist/server.d.mts +155 -30
- package/dist/server.d.mts.map +1 -1
- package/dist/server.mjs +4 -5
- package/dist/{utils-Baw7rThP.mjs → utils-uaBlzyjS.mjs} +15 -9
- package/dist/utils-uaBlzyjS.mjs.map +1 -0
- package/dist/utils.d.mts +4 -5
- package/dist/utils.d.mts.map +1 -1
- package/dist/utils.mjs +3 -3
- package/package.json +22 -18
- package/test/attachment-reference-read-model.test.ts +6 -1
- package/test/attachments/auth.test.ts +85 -0
- package/test/attachments/byte-grants.test.ts +290 -0
- package/test/attachments/byte-routes-read-gate.integration.test.ts +314 -0
- package/test/attachments/download-target.test.ts +201 -32
- package/test/attachments/index.test.ts +34 -3
- package/test/attachments/reserve-metadata-parity.test.ts +96 -0
- package/test/attachments/routes-integration.test.ts +60 -4
- package/test/attachments/routes.test.ts +166 -23
- package/test/attachments/service-config.test.ts +13 -3
- package/test/attachments/url-signer.test.ts +105 -0
- package/test/boot-create-signature-policy.test.ts +108 -0
- package/test/boot-mcp-enabled.test.ts +121 -0
- package/test/boot-privacy.test.ts +243 -0
- package/test/boot-unsupported-stored-documents.test.ts +213 -0
- package/test/boot-without-renown.test.ts +81 -0
- package/test/boot-without-require-signatures.test.ts +74 -0
- package/test/boot-worker-trust-policy.test.ts +90 -0
- package/test/boot-workflow-singleton-conflict.test.ts +107 -0
- package/test/boot-workflow-singleton-retry.test.ts +133 -0
- package/test/builder-defaults.test.ts +80 -0
- package/test/create-signature-policy.test.ts +69 -0
- package/test/durable-node-fs-pg16.test.ts +80 -0
- package/test/fatal-shutdown.test.ts +165 -0
- package/test/mcp-flag.test.ts +56 -0
- package/test/observability-signals.test.ts +131 -0
- package/test/pglite-dialect.test.ts +217 -2
- package/test/pglite-preflight.test.ts +313 -0
- package/test/pglite-version.test.ts +9 -1
- package/test/renown-trust-policy.test.ts +315 -0
- package/test/snapshot-writer.ts +94 -0
- package/test/unsupported-stored-documents.test.ts +72 -0
- package/test/worker-pool.test.ts +27 -1
- package/test/workflow/harness.ts +289 -0
- package/test/workflow/oauth.test.ts +214 -0
- package/test/workflow/resolvers.test.ts +357 -0
- package/test/workflow/webhook-dedupe.test.ts +295 -0
- package/test/workflow/webhook-signed.test.ts +509 -0
- package/test/workflow/webhook-trigger-test.test.ts +82 -0
- package/test/workflow/webhook-unsigned.test.ts +345 -0
- package/test/workflow-reactor-access.test.ts +384 -0
- package/test/workflow-reactor-enforcement.test.ts +808 -0
- package/test/workflow-read-gate.test.ts +213 -0
- package/test/workflow-runtime.test.ts +1067 -0
- package/tsconfig.json +9 -3
- package/tsdown.config.ts +3 -1
- package/dist/server-CiKkVE6g.mjs +0 -1555
- package/dist/server-CiKkVE6g.mjs.map +0 -1
- package/dist/utils-Baw7rThP.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tsdown.config.d.ts","sourceRoot":"","sources":["../tsdown.config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tsdown.config.d.ts","sourceRoot":"","sources":["../tsdown.config.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitest.config.d.ts","sourceRoot":"","sources":["../vitest.config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vitest.config.d.ts","sourceRoot":"","sources":["../vitest.config.ts"],"names":[],"mappings":""}
|
package/Auth.md
CHANGED
|
@@ -133,6 +133,57 @@ interface AuthConfig {
|
|
|
133
133
|
- **Document Owners**: implicit ADMIN on documents they create
|
|
134
134
|
- **Per-Document Grants**: READ / WRITE / ADMIN granted to users or groups, inherited from protected ancestors
|
|
135
135
|
|
|
136
|
+
#### Attachments
|
|
137
|
+
|
|
138
|
+
An attachment is readable by whoever may read the document that references it.
|
|
139
|
+
`GET /attachments/:hash/download-target` decides that twice over: the caller
|
|
140
|
+
must be able to read the document's `global` scope, and the reference index
|
|
141
|
+
must confirm that the document really does reference this hash. A denial is a
|
|
142
|
+
single generic `404` either way, so it never tells the caller which of the two
|
|
143
|
+
failed.
|
|
144
|
+
|
|
145
|
+
Which model answers the first half is the deployment's choice, and by default it
|
|
146
|
+
is the permission tables above — unchanged.
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
# Decide an attachment read with the referencing document's own policy
|
|
150
|
+
export ATTACHMENT_READS_FOLLOW_DOCUMENT_POLICY=true
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
With it on, the document's **own policy** decides, evaluated for the caller's
|
|
154
|
+
subject: their address *and* the `did:key` of the app instance whose token
|
|
155
|
+
authenticated them, because a grant can name either and a document's creator is
|
|
156
|
+
recorded by key. It needs a policy model to evaluate, which auth enforcement is
|
|
157
|
+
what supplies, and refuses to boot without one rather than leave the tables
|
|
158
|
+
deciding while the configuration says otherwise.
|
|
159
|
+
|
|
160
|
+
Why a deployment would want it: one whose documents carry policies keeps no rows
|
|
161
|
+
in the permission tables, so asking those tables about such a document returns
|
|
162
|
+
whatever the host-wide policy says — under `OPEN`, `true`, for every caller
|
|
163
|
+
including an anonymous one. Handing out bytes on that answer gives the file to
|
|
164
|
+
anyone who learns its hash, which the document's own state may well have told
|
|
165
|
+
them before their access was taken away.
|
|
166
|
+
|
|
167
|
+
Two things to know before turning it on. A document that carries **no** policy
|
|
168
|
+
stays readable, because an uninitialized policy is not a denial — unless the
|
|
169
|
+
host also sets `DEFAULT_PROTECTION`, which tells the gate to withhold what it
|
|
170
|
+
cannot decide, and then attachments on unpolicied documents are refused along
|
|
171
|
+
with everything else about them. And every non-browser client that downloads
|
|
172
|
+
bytes — an extraction worker, an indexer — needs a read grant of its own on the
|
|
173
|
+
documents it fetches, or it stops working the moment this is enabled.
|
|
174
|
+
|
|
175
|
+
The presigned URL a target carries is short-lived by design: the authorization
|
|
176
|
+
behind it is decided once, when it is issued, and the URL keeps working until it
|
|
177
|
+
expires however the policy changes in between. The default ceiling is **300
|
|
178
|
+
seconds**, and it applies whether or not the caller asked for a lifetime —
|
|
179
|
+
otherwise omitting `expiresIn` would be a way to opt out of it.
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
# Raise it if a deployment genuinely needs longer; still bounded by the
|
|
183
|
+
# 7-day maximum a SigV4 signature can carry.
|
|
184
|
+
export ATTACHMENT_DOWNLOAD_TARGET_MAX_TTL_SECONDS=1800
|
|
185
|
+
```
|
|
186
|
+
|
|
136
187
|
### 6. **Session Management**
|
|
137
188
|
|
|
138
189
|
Advanced session handling with multiple active sessions:
|
|
@@ -221,6 +272,49 @@ It requires a caller to be resolvable at all, so it refuses to boot without
|
|
|
221
272
|
resolution off, no bearer is ever read and it would reject every caller,
|
|
222
273
|
including authenticated ones.
|
|
223
274
|
|
|
275
|
+
It also covers the attachment routes, which are mounted on the HTTP adapter and
|
|
276
|
+
never pass the GraphQL fetch chain. Their own 401 keys on `AUTH_ENABLED`, so
|
|
277
|
+
without this switch a deployment running `OPEN` serves them to anyone; with it,
|
|
278
|
+
every attachment route refuses a caller it cannot name — `download-target` and
|
|
279
|
+
the `GET`/`HEAD /attachments/:hash` byte routes included, even though they
|
|
280
|
+
decide per document (or by a signed URL) on their own. A filesystem signed
|
|
281
|
+
download URL therefore needs a bearer too while this switch is on.
|
|
282
|
+
|
|
283
|
+
##### Serving one path anonymously
|
|
284
|
+
|
|
285
|
+
Some products have a flow that runs *before* sign-in: previewing an invitation
|
|
286
|
+
from the code in its e-mail, for instance, so the screen can say who the
|
|
287
|
+
invitation is for. That flow has no caller by definition, and the floor above
|
|
288
|
+
would answer it a `401`.
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
export REQUIRE_AUTHENTICATED_CALLER=true
|
|
292
|
+
export REQUIRE_AUTHENTICATED_CALLER_EXEMPT_PATHS=/graphql/public
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
Comma-separated, so several paths are one variable:
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
export REQUIRE_AUTHENTICATED_CALLER_EXEMPT_PATHS=/graphql/public,/graphql/invites
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
Each entry is matched against the request's **pathname, in full** — never as a
|
|
302
|
+
prefix, so `/graphql/public` does not also exempt `/graphql/public-admin`. A
|
|
303
|
+
trailing slash on either side is ignored; a leading slash is required, and a
|
|
304
|
+
path without one is refused at boot rather than left as an exemption that
|
|
305
|
+
silently never applies. Configuring exemptions while the floor is off is
|
|
306
|
+
refused too: it would describe a protection the server is not applying.
|
|
307
|
+
|
|
308
|
+
The exempt paths are named in the boot log, because the one question worth
|
|
309
|
+
asking about this floor is what is still open.
|
|
310
|
+
|
|
311
|
+
Every entry is a hole in it. Only ever name a path that serves operations which
|
|
312
|
+
are safe without a caller, and prefer a route mounted for exactly that purpose
|
|
313
|
+
over exempting one that also serves something else. Note what this switch does
|
|
314
|
+
**not** reach, in either configuration: routes registered directly on the HTTP
|
|
315
|
+
adapter (`/health`, `/ready`, `/explorer`, `/d/:drive`) and package HTTP routes,
|
|
316
|
+
which declare their own `auth` per route.
|
|
317
|
+
|
|
224
318
|
#### Configuration File Method
|
|
225
319
|
|
|
226
320
|
```json
|
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,544 @@
|
|
|
1
|
+
## 6.2.3-dev.51 (2026-10-10)
|
|
2
|
+
|
|
3
|
+
### 🚀 Features
|
|
4
|
+
|
|
5
|
+
- **ph-cli:** keep native and WebAssembly dependencies external and list them as externalDependencies ([e3b616e67b](https://github.com/powerhouse-inc/powerhouse/commit/e3b616e67b))
|
|
6
|
+
- **workflow:** polish the block picker after a visual review ([67bf5a96f7](https://github.com/powerhouse-inc/powerhouse/commit/67bf5a96f7))
|
|
7
|
+
- **workflow:** group block picker search by piece and add source tabs ([723d7a0660](https://github.com/powerhouse-inc/powerhouse/commit/723d7a0660))
|
|
8
|
+
- **reactor-router:** the routing IReactorClient over IRoutableBackend ([772aefe6ec](https://github.com/powerhouse-inc/powerhouse/commit/772aefe6ec))
|
|
9
|
+
- **switchboard:** report the composed workflow runtime through the facts sink ([da552e5aee](https://github.com/powerhouse-inc/powerhouse/commit/da552e5aee))
|
|
10
|
+
- **switchboard:** stop the workflow runtime when the singleton is lost ([3936e68b76](https://github.com/powerhouse-inc/powerhouse/commit/3936e68b76))
|
|
11
|
+
- **reactor-workflow:** claim the workflow singleton before composing ([98a51ff9ab](https://github.com/powerhouse-inc/powerhouse/commit/98a51ff9ab))
|
|
12
|
+
|
|
13
|
+
### 🩹 Fixes
|
|
14
|
+
|
|
15
|
+
- **workflow:** address block picker review findings ([1c69224191](https://github.com/powerhouse-inc/powerhouse/commit/1c69224191))
|
|
16
|
+
- **switchboard,connect:** declare the reactor store's storage facts ([28d9d364a9](https://github.com/powerhouse-inc/powerhouse/commit/28d9d364a9))
|
|
17
|
+
- **switchboard:** take the trigger read model off the coordinator with its runtime ([363772ed4e](https://github.com/powerhouse-inc/powerhouse/commit/363772ed4e))
|
|
18
|
+
- **switchboard:** mount the workflow GraphQL API a late claim registers ([92e76a7207](https://github.com/powerhouse-inc/powerhouse/commit/92e76a7207))
|
|
19
|
+
- **reactor-workflow:** tell a self-fence from a takeover, and restart on the former ([d237e1ac51](https://github.com/powerhouse-inc/powerhouse/commit/d237e1ac51))
|
|
20
|
+
- **switchboard:** retry the workflow singleton after a refused boot ([62b41a8023](https://github.com/powerhouse-inc/powerhouse/commit/62b41a8023))
|
|
21
|
+
- **switchboard:** stop the runtime a failed compose had already built ([fd4012b3d7](https://github.com/powerhouse-inc/powerhouse/commit/fd4012b3d7))
|
|
22
|
+
- **reactor-workflow:** fence a singleton holder that cannot renew ([bc4b81edca](https://github.com/powerhouse-inc/powerhouse/commit/bc4b81edca))
|
|
23
|
+
- **reactor-workflow:** never take the singleton from a live holder of the same name ([9f6750789d](https://github.com/powerhouse-inc/powerhouse/commit/9f6750789d))
|
|
24
|
+
- **reactor-workflow:** renew the singleton lease from the claim ([7ef58a3585](https://github.com/powerhouse-inc/powerhouse/commit/7ef58a3585))
|
|
25
|
+
- **switchboard:** boot without workflows when another process holds the singleton ([33f8dd3c53](https://github.com/powerhouse-inc/powerhouse/commit/33f8dd3c53))
|
|
26
|
+
|
|
27
|
+
### ❤️ Thank You
|
|
28
|
+
|
|
29
|
+
- acaldas
|
|
30
|
+
- Benjamin Jordan
|
|
31
|
+
- Claude Opus 5.5
|
|
32
|
+
|
|
33
|
+
## 6.2.3-dev.50 (2026-10-09)
|
|
34
|
+
|
|
35
|
+
### 🚀 Features
|
|
36
|
+
|
|
37
|
+
- **switchboard:** start the Pyroscope profiler in embedded servers ([3dc361721d](https://github.com/powerhouse-inc/powerhouse/commit/3dc361721d))
|
|
38
|
+
- **reactor-workflow:** stream, cache and authorize step attachments ([2c33603d58](https://github.com/powerhouse-inc/powerhouse/commit/2c33603d58))
|
|
39
|
+
- **reactor-workflow:** trace runs, steps, workers and reactor calls with a host-supplied tracer and meter ([d42c5d9053](https://github.com/powerhouse-inc/powerhouse/commit/d42c5d9053))
|
|
40
|
+
|
|
41
|
+
### 🩹 Fixes
|
|
42
|
+
|
|
43
|
+
- **registry:** stop Verdaccio dropping a package write when Windows refuses the rename ([79636fd438](https://github.com/powerhouse-inc/powerhouse/commit/79636fd438))
|
|
44
|
+
- **switchboard:** shut down and restart when the reactor's pglite session is poisoned ([ccbb0ecef1](https://github.com/powerhouse-inc/powerhouse/commit/ccbb0ecef1))
|
|
45
|
+
- **switchboard:** build the pglite store on the hardened dialect ([8c359d9278](https://github.com/powerhouse-inc/powerhouse/commit/8c359d9278))
|
|
46
|
+
- **reactor-workflow:** carry INDETERMINATE through test reporting ([ada7daaa61](https://github.com/powerhouse-inc/powerhouse/commit/ada7daaa61))
|
|
47
|
+
|
|
48
|
+
### ❤️ Thank You
|
|
49
|
+
|
|
50
|
+
- acaldas
|
|
51
|
+
- Benjamin Jordan
|
|
52
|
+
- Claude Opus 5.5
|
|
53
|
+
- Wouter Kampmann
|
|
54
|
+
|
|
55
|
+
## 6.2.3-dev.49 (2026-10-08)
|
|
56
|
+
|
|
57
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
58
|
+
|
|
59
|
+
## 6.2.3-dev.48 (2026-10-07)
|
|
60
|
+
|
|
61
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
62
|
+
|
|
63
|
+
## 6.2.3-dev.47 (2026-10-07)
|
|
64
|
+
|
|
65
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
66
|
+
|
|
67
|
+
## 6.2.3-dev.46 (2026-10-07)
|
|
68
|
+
|
|
69
|
+
### 🚀 Features
|
|
70
|
+
|
|
71
|
+
- **connect:** load local project models in the reactor worker ([6e2929ce60](https://github.com/powerhouse-inc/powerhouse/commit/6e2929ce60))
|
|
72
|
+
|
|
73
|
+
### 🩹 Fixes
|
|
74
|
+
|
|
75
|
+
- **builder-tools:** make the worker bundle survive consumer projects ([6361a66b6d](https://github.com/powerhouse-inc/powerhouse/commit/6361a66b6d))
|
|
76
|
+
- **builder-tools:** assert the vendor-dir mode only where modes exist ([f47c32a020](https://github.com/powerhouse-inc/powerhouse/commit/f47c32a020))
|
|
77
|
+
- **switchboard:** never let observability lower a fatal exit code ([0498342d22](https://github.com/powerhouse-inc/powerhouse/commit/0498342d22))
|
|
78
|
+
- **switchboard:** survive a logger that fails during fatal shutdown ([ecc8975282](https://github.com/powerhouse-inc/powerhouse/commit/ecc8975282))
|
|
79
|
+
|
|
80
|
+
### ❤️ Thank You
|
|
81
|
+
|
|
82
|
+
- Claude Fable 5
|
|
83
|
+
- Wouter Kampmann
|
|
84
|
+
|
|
85
|
+
## 6.2.3-dev.45 (2026-10-06)
|
|
86
|
+
|
|
87
|
+
### 🚀 Features
|
|
88
|
+
|
|
89
|
+
- ⚠️ **reactor-workflow:** let any workflow piece read and write documents through the reactor ([fcccf0dfca](https://github.com/powerhouse-inc/powerhouse/commit/fcccf0dfca))
|
|
90
|
+
- **switchboard:** open PGlite stores over the durable NodeFS ([b5126c3056](https://github.com/powerhouse-inc/powerhouse/commit/b5126c3056))
|
|
91
|
+
|
|
92
|
+
### 🩹 Fixes
|
|
93
|
+
|
|
94
|
+
- **pglite:** bound the old-dir removal after conversion ([0aef46f0ca](https://github.com/powerhouse-inc/powerhouse/commit/0aef46f0ca))
|
|
95
|
+
- **pglite:** open files read-write for the tree sync ([ce0fa23af5](https://github.com/powerhouse-inc/powerhouse/commit/ce0fa23af5))
|
|
96
|
+
- **switchboard:** resolve the legacy pg_dump wasm path on Windows ([c35148183a](https://github.com/powerhouse-inc/powerhouse/commit/c35148183a))
|
|
97
|
+
- **switchboard:** dump legacy PG16 stores from an in-memory copy ([8084fa5b1e](https://github.com/powerhouse-inc/powerhouse/commit/8084fa5b1e))
|
|
98
|
+
|
|
99
|
+
### 🔥 Performance
|
|
100
|
+
|
|
101
|
+
- **pglite:** sync the tree once after initdb, conversion and migration ([9ec8caf970](https://github.com/powerhouse-inc/powerhouse/commit/9ec8caf970))
|
|
102
|
+
|
|
103
|
+
### ⚠️ Breaking Changes
|
|
104
|
+
|
|
105
|
+
- **reactor-workflow:** let any workflow piece read and write documents through the reactor ([fcccf0dfca](https://github.com/powerhouse-inc/powerhouse/commit/fcccf0dfca))
|
|
106
|
+
|
|
107
|
+
### ❤️ Thank You
|
|
108
|
+
|
|
109
|
+
- acaldas
|
|
110
|
+
- Benjamin Jordan
|
|
111
|
+
- Claude Fable 5.1
|
|
112
|
+
|
|
113
|
+
## 6.2.3-dev.44 (2026-10-06)
|
|
114
|
+
|
|
115
|
+
### 🩹 Fixes
|
|
116
|
+
|
|
117
|
+
- **analytics:** anchor periods and timestamps to UTC ([#3175](https://github.com/powerhouse-inc/powerhouse/pull/3175))
|
|
118
|
+
- **reactor:** make the reactor suite pass on Windows ([#3171](https://github.com/powerhouse-inc/powerhouse/pull/3171))
|
|
119
|
+
- **switchboard:** keep fatal shutdown exit codes intact ([#3174](https://github.com/powerhouse-inc/powerhouse/pull/3174))
|
|
120
|
+
|
|
121
|
+
### ❤️ Thank You
|
|
122
|
+
|
|
123
|
+
- Benjamin Jordan
|
|
124
|
+
- Claude Fable 5
|
|
125
|
+
- Claude Opus 5 (1M context)
|
|
126
|
+
- Wouter Kampmann
|
|
127
|
+
|
|
128
|
+
## 6.2.3-dev.43 (2026-10-05)
|
|
129
|
+
|
|
130
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
131
|
+
|
|
132
|
+
## 6.2.3-dev.42 (2026-10-04)
|
|
133
|
+
|
|
134
|
+
### 🩹 Fixes
|
|
135
|
+
|
|
136
|
+
- **registry:** stop a tarball stream's late fstat from crashing the registry ([84f56c54bf](https://github.com/powerhouse-inc/powerhouse/commit/84f56c54bf))
|
|
137
|
+
- **reactor:** let executor workers load document models from the registry ([8ae1911d44](https://github.com/powerhouse-inc/powerhouse/commit/8ae1911d44))
|
|
138
|
+
|
|
139
|
+
### ❤️ Thank You
|
|
140
|
+
|
|
141
|
+
- acaldas
|
|
142
|
+
|
|
143
|
+
## 6.2.3-dev.41 (2026-10-03)
|
|
144
|
+
|
|
145
|
+
### 🩹 Fixes
|
|
146
|
+
|
|
147
|
+
- **registry:** stop a tarball stream's late fstat from crashing the registry ([84f56c54bf](https://github.com/powerhouse-inc/powerhouse/commit/84f56c54bf))
|
|
148
|
+
- **reactor:** let executor workers load document models from the registry ([8ae1911d44](https://github.com/powerhouse-inc/powerhouse/commit/8ae1911d44))
|
|
149
|
+
|
|
150
|
+
### ❤️ Thank You
|
|
151
|
+
|
|
152
|
+
- acaldas
|
|
153
|
+
|
|
154
|
+
## 6.2.3-dev.40 (2026-10-02)
|
|
155
|
+
|
|
156
|
+
### 🩹 Fixes
|
|
157
|
+
|
|
158
|
+
- **document-model:** leave unmatched @tokens in log messages as written ([0538ea019c](https://github.com/powerhouse-inc/powerhouse/commit/0538ea019c))
|
|
159
|
+
|
|
160
|
+
### ❤️ Thank You
|
|
161
|
+
|
|
162
|
+
- acaldas
|
|
163
|
+
|
|
164
|
+
## 6.2.3-dev.39 (2026-10-02)
|
|
165
|
+
|
|
166
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
167
|
+
|
|
168
|
+
## 6.2.3-dev.38 (2026-10-01)
|
|
169
|
+
|
|
170
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
171
|
+
|
|
172
|
+
## 6.2.3-dev.37 (2026-10-01)
|
|
173
|
+
|
|
174
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
175
|
+
|
|
176
|
+
## 6.2.3-dev.36 (2026-10-01)
|
|
177
|
+
|
|
178
|
+
### 🚀 Features
|
|
179
|
+
|
|
180
|
+
- **switchboard:** pass the attachment provider to host-built subgraphs ([9264687cf6](https://github.com/powerhouse-inc/powerhouse/commit/9264687cf6))
|
|
181
|
+
- **reactor-api:** declare caller-bound attachment types ([d6748866bc](https://github.com/powerhouse-inc/powerhouse/commit/d6748866bc))
|
|
182
|
+
|
|
183
|
+
### 🩹 Fixes
|
|
184
|
+
|
|
185
|
+
- **reactor-attachments:** reject mimeTypes a Content-Type header cannot carry ([2301dbe466](https://github.com/powerhouse-inc/powerhouse/commit/2301dbe466))
|
|
186
|
+
|
|
187
|
+
### ❤️ Thank You
|
|
188
|
+
|
|
189
|
+
- Benjamin Jordan
|
|
190
|
+
- Claude Opus 5.5
|
|
191
|
+
|
|
192
|
+
## 6.2.3-dev.35 (2026-10-01)
|
|
193
|
+
|
|
194
|
+
### 🚀 Features
|
|
195
|
+
|
|
196
|
+
- ⚠️ **registry:** serve every replica from Postgres and S3, processing publishes in a worker ([0d25d5fe35](https://github.com/powerhouse-inc/powerhouse/commit/0d25d5fe35))
|
|
197
|
+
- **switchboard:** configure the erasure purge timeout ([354375ea61](https://github.com/powerhouse-inc/powerhouse/commit/354375ea61))
|
|
198
|
+
- **switchboard:** run the privacy add-on behind PH_PRIVACY_ENABLED ([38c9a43856](https://github.com/powerhouse-inc/powerhouse/commit/38c9a43856))
|
|
199
|
+
- **reactor-privacy:** erase requested documents on a serial schedule ([f4f31289a1](https://github.com/powerhouse-inc/powerhouse/commit/f4f31289a1))
|
|
200
|
+
- **reactor-privacy:** serve disclosure and erasure to supreme admins only ([7a6b5232cb](https://github.com/powerhouse-inc/powerhouse/commit/7a6b5232cb))
|
|
201
|
+
- **reactor-privacy:** scaffold the package and its migration ledger ([152ecff77b](https://github.com/powerhouse-inc/powerhouse/commit/152ecff77b))
|
|
202
|
+
- **reactor-drive:** erase a purged document's nodes in NodeProcessor ([5a608e73bf](https://github.com/powerhouse-inc/powerhouse/commit/5a608e73bf))
|
|
203
|
+
- **reactor-attachments:** delete a purged document's attachment references ([4121c83347](https://github.com/powerhouse-inc/powerhouse/commit/4121c83347))
|
|
204
|
+
|
|
205
|
+
### 🩹 Fixes
|
|
206
|
+
|
|
207
|
+
- **switchboard:** let workflow steps read attachments as they read documents ([b8c861360b](https://github.com/powerhouse-inc/powerhouse/commit/b8c861360b))
|
|
208
|
+
- **switchboard:** shut down when a PGlite store cannot flush ([42ea6fd893](https://github.com/powerhouse-inc/powerhouse/commit/42ea6fd893))
|
|
209
|
+
- **reactor:** a drive's purge does not require a live former member ([e8266b1035](https://github.com/powerhouse-inc/powerhouse/commit/e8266b1035))
|
|
210
|
+
- **reactor-privacy:** warn and record lastError while a leaked purge blocks dispatch ([cd6fe4f022](https://github.com/powerhouse-inc/powerhouse/commit/cd6fe4f022))
|
|
211
|
+
- **reactor-privacy:** reopen every failed request with no failed item each tick ([d9c19c3837](https://github.com/powerhouse-inc/powerhouse/commit/d9c19c3837))
|
|
212
|
+
- **reactor-api:** ignore polled refusals of an unknown kind ([aac4a3e752](https://github.com/powerhouse-inc/powerhouse/commit/aac4a3e752))
|
|
213
|
+
- **reactor-api:** fail a poll with a recoverable code when a refusal is not recorded ([3ab1c92f7b](https://github.com/powerhouse-inc/powerhouse/commit/3ab1c92f7b))
|
|
214
|
+
- **reactor:** keep a polled marker refusal only when the marker was owed ([07cae595da](https://github.com/powerhouse-inc/powerhouse/commit/07cae595da))
|
|
215
|
+
- **reactor:** persist a purge refusal only from a MARKER_REFUSED dead letter ([ef2c3f4729](https://github.com/powerhouse-inc/powerhouse/commit/ef2c3f4729))
|
|
216
|
+
|
|
217
|
+
### 🔥 Performance
|
|
218
|
+
|
|
219
|
+
- **reactor-privacy:** dispatch the next purge without rescanning the backlog ([5de3703ebf](https://github.com/powerhouse-inc/powerhouse/commit/5de3703ebf))
|
|
220
|
+
|
|
221
|
+
### ⚠️ Breaking Changes
|
|
222
|
+
|
|
223
|
+
- **registry:** serve every replica from Postgres and S3, processing publishes in a worker ([0d25d5fe35](https://github.com/powerhouse-inc/powerhouse/commit/0d25d5fe35))
|
|
224
|
+
/packages and /pieces return pages ({items,total,limit,offset,hasMore}) instead of full arrays, and piece bundles move to /-/pieces/bundled/<name>/<version>.tgz.
|
|
225
|
+
|
|
226
|
+
### ❤️ Thank You
|
|
227
|
+
|
|
228
|
+
- acaldas
|
|
229
|
+
- Benjamin Jordan
|
|
230
|
+
- Claude Opus 5.5
|
|
231
|
+
|
|
232
|
+
## 6.2.3-dev.34 (2026-09-30)
|
|
233
|
+
|
|
234
|
+
### 🚀 Features
|
|
235
|
+
|
|
236
|
+
- **switchboard:** let MCP_ENABLED=false keep the MCP server unmounted ([#3146](https://github.com/powerhouse-inc/powerhouse/pull/3146))
|
|
237
|
+
|
|
238
|
+
### ❤️ Thank You
|
|
239
|
+
|
|
240
|
+
- Guillermo Puente Sandoval @gpuente
|
|
241
|
+
|
|
242
|
+
## 6.2.3-dev.33 (2026-09-30)
|
|
243
|
+
|
|
244
|
+
### 🚀 Features
|
|
245
|
+
|
|
246
|
+
- **switchboard:** expose the stored-protocol startup check ([de2bf4836](https://github.com/powerhouse-inc/powerhouse/commit/de2bf4836))
|
|
247
|
+
- **reactor:** add catch-up operator tools and observability ([5722d7836](https://github.com/powerhouse-inc/powerhouse/commit/5722d7836))
|
|
248
|
+
|
|
249
|
+
### 🩹 Fixes
|
|
250
|
+
|
|
251
|
+
- **reactor:** claim a batch for each read model as it queues ([c09b1de2a](https://github.com/powerhouse-inc/powerhouse/commit/c09b1de2a))
|
|
252
|
+
- **reactor:** settle a probe on its own xid, not on an empty xip ([4e0f0dab9](https://github.com/powerhouse-inc/powerhouse/commit/4e0f0dab9))
|
|
253
|
+
- **reactor:** leave a stream to the next sweep while its live pass runs ([53112bad4](https://github.com/powerhouse-inc/powerhouse/commit/53112bad4))
|
|
254
|
+
- **reactor:** start a head registration at the sequence head ([e06581849](https://github.com/powerhouse-inc/powerhouse/commit/e06581849))
|
|
255
|
+
- **switchboard:** resolve packages it brings from its own dependencies in dev ([7c9c55d98](https://github.com/powerhouse-inc/powerhouse/commit/7c9c55d98))
|
|
256
|
+
|
|
257
|
+
### ❤️ Thank You
|
|
258
|
+
|
|
259
|
+
- acaldas
|
|
260
|
+
- Benjamin Jordan
|
|
261
|
+
- Claude Opus 5.5
|
|
262
|
+
|
|
263
|
+
## 6.2.3-dev.32 (2026-09-29)
|
|
264
|
+
|
|
265
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
266
|
+
|
|
267
|
+
## 6.2.3-dev.31 (2026-09-29)
|
|
268
|
+
|
|
269
|
+
### 🚀 Features
|
|
270
|
+
|
|
271
|
+
- **ph-cli:** seed a Workflows drive in vetra when workflows are on ([6e855808e](https://github.com/powerhouse-inc/powerhouse/commit/6e855808e))
|
|
272
|
+
- **workflow:** sign connections in with OAuth2 using their own app ([b03b33bf0](https://github.com/powerhouse-inc/powerhouse/commit/b03b33bf0))
|
|
273
|
+
- **reactor-workflow:** keyset-paginate the run listing through the subgraph and runs views ([d22a4eea5](https://github.com/powerhouse-inc/powerhouse/commit/d22a4eea5))
|
|
274
|
+
- **reactor-workflow:** renew webhook trigger subscriptions ([4fc6bfea6](https://github.com/powerhouse-inc/powerhouse/commit/4fc6bfea6))
|
|
275
|
+
- ⚠️ **switchboard:** block inputs, step and trigger tests, and version resolutions in the workflow API ([58b43b249](https://github.com/powerhouse-inc/powerhouse/commit/58b43b249))
|
|
276
|
+
|
|
277
|
+
### 🩹 Fixes
|
|
278
|
+
|
|
279
|
+
- **reactor-workflow:** order runs by a key that doesn't change when they start ([f15425dd8](https://github.com/powerhouse-inc/powerhouse/commit/f15425dd8))
|
|
280
|
+
- **reactor-workflow:** disarm a workflow's trigger when its document is deleted ([866427bc6](https://github.com/powerhouse-inc/powerhouse/commit/866427bc6))
|
|
281
|
+
|
|
282
|
+
### 🔥 Performance
|
|
283
|
+
|
|
284
|
+
- **reactor-workflow:** batch run listing step and document reads ([c33a42f7d](https://github.com/powerhouse-inc/powerhouse/commit/c33a42f7d))
|
|
285
|
+
|
|
286
|
+
### ⚠️ Breaking Changes
|
|
287
|
+
|
|
288
|
+
- **switchboard:** block inputs, step and trigger tests, and version resolutions in the workflow API ([58b43b249](https://github.com/powerhouse-inc/powerhouse/commit/58b43b249))
|
|
289
|
+
|
|
290
|
+
### ❤️ Thank You
|
|
291
|
+
|
|
292
|
+
- acaldas
|
|
293
|
+
|
|
294
|
+
## 6.2.3-dev.30 (2026-09-29)
|
|
295
|
+
|
|
296
|
+
### 🩹 Fixes
|
|
297
|
+
|
|
298
|
+
- **deps:** load cmd-ts's ESM build under bun, which fails to require chalk from its CJS build ([749528c71](https://github.com/powerhouse-inc/powerhouse/commit/749528c71))
|
|
299
|
+
|
|
300
|
+
### ❤️ Thank You
|
|
301
|
+
|
|
302
|
+
- acaldas
|
|
303
|
+
|
|
304
|
+
## 6.2.3-dev.29 (2026-09-28)
|
|
305
|
+
|
|
306
|
+
### 🩹 Fixes
|
|
307
|
+
|
|
308
|
+
- **reactor-workflow:** refuse a secrets master key other than the one secrets were stored with ([87cfde0f5](https://github.com/powerhouse-inc/powerhouse/commit/87cfde0f5))
|
|
309
|
+
|
|
310
|
+
### ❤️ Thank You
|
|
311
|
+
|
|
312
|
+
- acaldas
|
|
313
|
+
|
|
314
|
+
## 6.2.3-dev.28 (2026-09-28)
|
|
315
|
+
|
|
316
|
+
### 🚀 Features
|
|
317
|
+
|
|
318
|
+
- **reactor-workflow:** carry Activepieces layout hints, property groups and search to the editor ([4eca1e1bd](https://github.com/powerhouse-inc/powerhouse/commit/4eca1e1bd))
|
|
319
|
+
|
|
320
|
+
### ❤️ Thank You
|
|
321
|
+
|
|
322
|
+
- acaldas
|
|
323
|
+
|
|
324
|
+
## 6.2.3-dev.27 (2026-09-28)
|
|
325
|
+
|
|
326
|
+
### 🚀 Features
|
|
327
|
+
|
|
328
|
+
- ⚠️ **switchboard:** serve attachment bytes only under a document grant ([275e88da0](https://github.com/powerhouse-inc/powerhouse/commit/275e88da0))
|
|
329
|
+
- **switchboard:** sign short-lived attachment byte-route URLs ([18e09cdb5](https://github.com/powerhouse-inc/powerhouse/commit/18e09cdb5))
|
|
330
|
+
|
|
331
|
+
### 🩹 Fixes
|
|
332
|
+
|
|
333
|
+
- **switchboard:** sign byte-route URLs under main's download-target TTL cap ([d503b4f67](https://github.com/powerhouse-inc/powerhouse/commit/d503b4f67))
|
|
334
|
+
- **reactor-workflow:** serve workflow reads and runs as the caller ([b2ddd126a](https://github.com/powerhouse-inc/powerhouse/commit/b2ddd126a))
|
|
335
|
+
- **reactor-drive:** gate the reactor-drive subgraph as the caller ([7041635f4](https://github.com/powerhouse-inc/powerhouse/commit/7041635f4))
|
|
336
|
+
- **reactor-api:** gate attachment reads through the reactor's read gate ([d6c3b4df1](https://github.com/powerhouse-inc/powerhouse/commit/d6c3b4df1))
|
|
337
|
+
|
|
338
|
+
### ⚠️ Breaking Changes
|
|
339
|
+
|
|
340
|
+
- **switchboard:** serve attachment bytes only under a document grant ([275e88da0](https://github.com/powerhouse-inc/powerhouse/commit/275e88da0))
|
|
341
|
+
|
|
342
|
+
### ❤️ Thank You
|
|
343
|
+
|
|
344
|
+
- Benjamin Jordan
|
|
345
|
+
- Claude Opus 5.5
|
|
346
|
+
|
|
347
|
+
## 6.2.3-dev.26 (2026-09-26)
|
|
348
|
+
|
|
349
|
+
### 🚀 Features
|
|
350
|
+
|
|
351
|
+
- ⚠️ **switchboard:** serve attachment bytes only under a document grant ([275e88da0](https://github.com/powerhouse-inc/powerhouse/commit/275e88da0))
|
|
352
|
+
- **switchboard:** sign short-lived attachment byte-route URLs ([18e09cdb5](https://github.com/powerhouse-inc/powerhouse/commit/18e09cdb5))
|
|
353
|
+
|
|
354
|
+
### 🩹 Fixes
|
|
355
|
+
|
|
356
|
+
- **switchboard:** sign byte-route URLs under main's download-target TTL cap ([d503b4f67](https://github.com/powerhouse-inc/powerhouse/commit/d503b4f67))
|
|
357
|
+
- **reactor-workflow:** serve workflow reads and runs as the caller ([b2ddd126a](https://github.com/powerhouse-inc/powerhouse/commit/b2ddd126a))
|
|
358
|
+
- **reactor-drive:** gate the reactor-drive subgraph as the caller ([7041635f4](https://github.com/powerhouse-inc/powerhouse/commit/7041635f4))
|
|
359
|
+
- **reactor-api:** gate attachment reads through the reactor's read gate ([d6c3b4df1](https://github.com/powerhouse-inc/powerhouse/commit/d6c3b4df1))
|
|
360
|
+
|
|
361
|
+
### ⚠️ Breaking Changes
|
|
362
|
+
|
|
363
|
+
- **switchboard:** serve attachment bytes only under a document grant ([275e88da0](https://github.com/powerhouse-inc/powerhouse/commit/275e88da0))
|
|
364
|
+
|
|
365
|
+
### ❤️ Thank You
|
|
366
|
+
|
|
367
|
+
- Benjamin Jordan
|
|
368
|
+
- Claude Opus 5.5
|
|
369
|
+
|
|
370
|
+
## 6.2.3-dev.25 (2026-09-25)
|
|
371
|
+
|
|
372
|
+
### 🚀 Features
|
|
373
|
+
|
|
374
|
+
- **workflow:** show run data in a lazy-loaded tree with copyable references, and scope the connection picker to the drive ([1d286f4a6](https://github.com/powerhouse-inc/powerhouse/commit/1d286f4a6))
|
|
375
|
+
- **reactor-workflow:** record when each step starts and ends ([6f6d8a233](https://github.com/powerhouse-inc/powerhouse/commit/6f6d8a233))
|
|
376
|
+
- **reactor-api:** serve an attachment only to callers who may read its document ([#3109](https://github.com/powerhouse-inc/powerhouse/pull/3109))
|
|
377
|
+
|
|
378
|
+
### 🩹 Fixes
|
|
379
|
+
|
|
380
|
+
- **ci:** let the release skip the transpiler TypeScript 7 broke ([#36306](https://github.com/powerhouse-inc/powerhouse/issues/36306))
|
|
381
|
+
|
|
382
|
+
### ❤️ Thank You
|
|
383
|
+
|
|
384
|
+
- acaldas
|
|
385
|
+
- Guillermo Puente
|
|
386
|
+
- Guillermo Puente Sandoval
|
|
387
|
+
|
|
388
|
+
## 6.2.3-dev.24 (2026-09-25)
|
|
389
|
+
|
|
390
|
+
### 🚀 Features
|
|
391
|
+
|
|
392
|
+
- **reactor-api:** exempt named paths from the authenticated-caller floor, and carry it to the attachment routes ([#3108](https://github.com/powerhouse-inc/powerhouse/pull/3108))
|
|
393
|
+
- **reactor:** action signature integrity ([#3088](https://github.com/powerhouse-inc/powerhouse/pull/3088), [#2894](https://github.com/powerhouse-inc/powerhouse/issues/2894), [#7](https://github.com/powerhouse-inc/powerhouse/issues/7))
|
|
394
|
+
- **reactor-workflow:** refuse the auth and trigger features the engine can't run ([7ce03d28f](https://github.com/powerhouse-inc/powerhouse/commit/7ce03d28f))
|
|
395
|
+
- type-safe piece authoring, upstream connection hooks, and a ph build that typechecks first ([#3082](https://github.com/powerhouse-inc/powerhouse/pull/3082))
|
|
396
|
+
|
|
397
|
+
### 🩹 Fixes
|
|
398
|
+
|
|
399
|
+
- **workflow:** build after powerhouse-vetra-packages so their tsc --build runs never overlap ([#3101](https://github.com/powerhouse-inc/powerhouse/pull/3101))
|
|
400
|
+
|
|
401
|
+
### ❤️ Thank You
|
|
402
|
+
|
|
403
|
+
- acaldas
|
|
404
|
+
- Benjamin Jordan
|
|
405
|
+
- Claude Fable 5.1
|
|
406
|
+
- Guillermo Puente Sandoval @gpuente
|
|
407
|
+
|
|
408
|
+
## 6.2.3-dev.23 (2026-09-24)
|
|
409
|
+
|
|
410
|
+
### 🩹 Fixes
|
|
411
|
+
|
|
412
|
+
- **switchboard:** leave unhandled rejections to Sentry when it listens ([c6a40108e](https://github.com/powerhouse-inc/powerhouse/commit/c6a40108e))
|
|
413
|
+
- **switchboard:** flush PGlite before exiting on an uncaught error ([#3077](https://github.com/powerhouse-inc/powerhouse/issues/3077))
|
|
414
|
+
- **switchboard:** escape non-ASCII file names in attachment metadata headers ([#3077](https://github.com/powerhouse-inc/powerhouse/issues/3077))
|
|
415
|
+
|
|
416
|
+
### ❤️ Thank You
|
|
417
|
+
|
|
418
|
+
- Benjamin Jordan
|
|
419
|
+
- Claude Opus 5.5
|
|
420
|
+
|
|
421
|
+
## 6.2.3-dev.22 (2026-09-23)
|
|
422
|
+
|
|
423
|
+
### 🩹 Fixes
|
|
424
|
+
|
|
425
|
+
- **ci:** slice the duration-watch baseline in jq, not through head ([73db497e0](https://github.com/powerhouse-inc/powerhouse/commit/73db497e0))
|
|
426
|
+
|
|
427
|
+
### ❤️ Thank You
|
|
428
|
+
|
|
429
|
+
- acaldas
|
|
430
|
+
|
|
431
|
+
## 6.2.3-dev.21 (2026-09-22)
|
|
432
|
+
|
|
433
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
434
|
+
|
|
435
|
+
## 6.2.3-dev.20 (2026-09-22)
|
|
436
|
+
|
|
437
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
438
|
+
|
|
439
|
+
## 6.2.3-dev.19 (2026-09-21)
|
|
440
|
+
|
|
441
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
442
|
+
|
|
443
|
+
## 6.2.3-dev.18 (2026-09-21)
|
|
444
|
+
|
|
445
|
+
### 🚀 Features
|
|
446
|
+
|
|
447
|
+
- **workflow:** read pieces from a Powerhouse registry ([f1467e0b0](https://github.com/powerhouse-inc/powerhouse/commit/f1467e0b0))
|
|
448
|
+
|
|
449
|
+
### 🩹 Fixes
|
|
450
|
+
|
|
451
|
+
- **switchboard:** load the workflow package like any other package ([7629bf71f](https://github.com/powerhouse-inc/powerhouse/commit/7629bf71f))
|
|
452
|
+
|
|
453
|
+
### ❤️ Thank You
|
|
454
|
+
|
|
455
|
+
- acaldas
|
|
456
|
+
|
|
457
|
+
## 6.2.3-dev.17 (2026-09-21)
|
|
458
|
+
|
|
459
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
460
|
+
|
|
461
|
+
## 6.2.3-dev.16 (2026-09-21)
|
|
462
|
+
|
|
463
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
464
|
+
|
|
465
|
+
## 6.2.3-dev.15 (2026-09-20)
|
|
466
|
+
|
|
467
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
468
|
+
|
|
469
|
+
## 6.2.3-dev.14 (2026-09-19)
|
|
470
|
+
|
|
471
|
+
### 🚀 Features
|
|
472
|
+
|
|
473
|
+
- **ph-cli:** build pieces on ph build ([3913b0796](https://github.com/powerhouse-inc/powerhouse/commit/3913b0796))
|
|
474
|
+
- **doc-harness:** serve rendered reports and transcripts from mastra studio ([fd64a4661](https://github.com/powerhouse-inc/powerhouse/commit/fd64a4661))
|
|
475
|
+
- **doc-harness:** workflows, steps, and the run/resume/inspect commands ([0e116d226](https://github.com/powerhouse-inc/powerhouse/commit/0e116d226))
|
|
476
|
+
- **doc-harness:** pilot task catalog with pinned recipe inputs ([74bc26129](https://github.com/powerhouse-inc/powerhouse/commit/74bc26129))
|
|
477
|
+
- **doc-harness:** workspace wiring and core schemas for the docs-validation harness ([5c591ac69](https://github.com/powerhouse-inc/powerhouse/commit/5c591ac69))
|
|
478
|
+
|
|
479
|
+
### ❤️ Thank You
|
|
480
|
+
|
|
481
|
+
- acaldas
|
|
482
|
+
- Benjamin Jordan
|
|
483
|
+
- Claude Fable 5.1
|
|
484
|
+
|
|
485
|
+
## 6.2.3-dev.13 (2026-09-18)
|
|
486
|
+
|
|
487
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
488
|
+
|
|
489
|
+
## 6.2.3-dev.12 (2026-09-17)
|
|
490
|
+
|
|
491
|
+
### 🚀 Features
|
|
492
|
+
|
|
493
|
+
- **switchboard:** own the workflow runtime, feed it through a read model, and take workflows out of reactor-api ([#3042](https://github.com/powerhouse-inc/powerhouse/issues/3042))
|
|
494
|
+
- **reactor-workflow:** the workflow engine, composed in reactor-api behind the workflows flag ([cb807bf5d](https://github.com/powerhouse-inc/powerhouse/commit/cb807bf5d))
|
|
495
|
+
- **workflow:** the Connect-loaded workflow package, and the workflows flag in reactor-api ([0953fc254](https://github.com/powerhouse-inc/powerhouse/commit/0953fc254))
|
|
496
|
+
- **pieces-framework:** vendor the Activepieces piece framework as a Powerhouse package ([3da5dbea8](https://github.com/powerhouse-inc/powerhouse/commit/3da5dbea8))
|
|
497
|
+
|
|
498
|
+
### ❤️ Thank You
|
|
499
|
+
|
|
500
|
+
- acaldas
|
|
501
|
+
|
|
502
|
+
## 6.2.3-dev.11 (2026-09-17)
|
|
503
|
+
|
|
504
|
+
### 🚀 Features
|
|
505
|
+
|
|
506
|
+
- **reactor-browser,design-system:** keep the legacy useDocumentOperations and RevisionHistory shapes as deprecated aliases ([6de05e632](https://github.com/powerhouse-inc/powerhouse/commit/6de05e632))
|
|
507
|
+
|
|
508
|
+
### 🩹 Fixes
|
|
509
|
+
|
|
510
|
+
- **design-system,connect:** end the history walk on a failed page and show what loaded ([95f815b46](https://github.com/powerhouse-inc/powerhouse/commit/95f815b46))
|
|
511
|
+
- hold the timeline revision until the global history is loaded, default to the global scope, hide paging mid-load ([80c3b1289](https://github.com/powerhouse-inc/powerhouse/commit/80c3b1289))
|
|
512
|
+
- **reactor-browser:** page operations through nextCursor and invalidate alias keys ([ccb965869](https://github.com/powerhouse-inc/powerhouse/commit/ccb965869))
|
|
513
|
+
|
|
514
|
+
### 🔥 Performance
|
|
515
|
+
|
|
516
|
+
- **design-system,connect:** wait for the whole history before rendering the timeline, yield between pages, fetch 500 per page ([86435721c](https://github.com/powerhouse-inc/powerhouse/commit/86435721c))
|
|
517
|
+
|
|
518
|
+
### ❤️ Thank You
|
|
519
|
+
|
|
520
|
+
- Frank Pfeift
|
|
521
|
+
|
|
522
|
+
## 6.2.3-dev.10 (2026-09-16)
|
|
523
|
+
|
|
524
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
525
|
+
|
|
526
|
+
## 6.2.3-dev.9 (2026-09-15)
|
|
527
|
+
|
|
528
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
529
|
+
|
|
530
|
+
## 6.2.3-dev.8 (2026-09-15)
|
|
531
|
+
|
|
532
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
533
|
+
|
|
534
|
+
## 6.2.3-dev.7 (2026-09-14)
|
|
535
|
+
|
|
536
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
537
|
+
|
|
538
|
+
## 6.2.3-dev.6 (2026-09-14)
|
|
539
|
+
|
|
540
|
+
This was a version bump only for @powerhousedao/switchboard to align it with other projects, there were no code changes.
|
|
541
|
+
|
|
1
542
|
## 6.2.3-dev.5 (2026-09-13)
|
|
2
543
|
|
|
3
544
|
### 🩹 Fixes
|