@voltro/plugin-governance 0.66.1 → 0.67.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.
package/CHANGELOG.md CHANGED
@@ -39,6 +39,50 @@ _Changes staged for the next release accumulate here (rolled up from
39
39
 
40
40
  ---
41
41
 
42
+ ## [0.67.0] — 2026-09-07
43
+
44
+ ### ⚠ BREAKING
45
+
46
+ - **@voltro/client, @voltro/protocol, @voltro/runtime, @voltro/cli, @voltro/web** — Confirmed optimistic writes now reconcile against a token-bound post-ACK primary snapshot, never an unrelated delta, changed row or timeout. Matching snapshots retire only covered previews; server normalisation and later writers remain authoritative. Same-tick acknowledgements coalesce, and affected cache entries preserve primary consistency across same-subject reconnects. Migration: deploy matching client/server framework versions together and account for an additional subscription read per affected acknowledgement group; affected entries use primary snapshots instead of replica reads/delta-resume for their cache lifetime. Native hooks need no source rewrite. Direct callers of the public `supersedesConfirmedPatches(event, baseBefore, baseAfter)` helper must migrate to `(event, reconciliationToken)` using the token of the post-ACK read, or use the native `SubscriptionCache`; row comparison cannot be mechanically rewritten into causal proof.
47
+
48
+ **`voltro update` carries you across this** — codemod `0.67.0/01_subscription-reconciliation`. If you pin versions by hand and never run it, print the notes without changing anything: `voltro update --codemods-only --from <your current version> --dry-run` (this one ships in 0.67.0).
49
+ - **@voltro/cli** — `voltro support sentry <eventId>` is removed. It wrapped `sentry-cli sourcemaps explain`, which sentry-cli 3 dropped in favour of Sentry's in-product source-map debugger; `@voltro/cli` now depends on `@sentry/cli` 3, whose `execute(args, live)` takes a boolean. Migration: delete the invocation from scripts, CI jobs and runbooks and read the event's source-map resolution in Sentry itself. `voltro support collect` is unchanged.
50
+
51
+ **`voltro update` carries you across this** — codemod `0.67.0/03_support-sentry-removed`. If you pin versions by hand and never run it, print the notes without changing anything: `voltro update --codemods-only --from <your current version> --dry-run` (this one ships in 0.67.0).
52
+ - **@voltro/cli, @voltro/workflow, @voltro/testing** — `voltro test` runs on vitest 5, and `@voltro/workflow` names `vitest ^5.0.0` as its peer. Migration: set `vitest` and `@vitest/coverage-v8` to `^5.0.0` together in every app that declares them (the coverage provider peer-pins the exact vitest version), install, and run the suite once — vitest 5 clears mocks before each test by default, fails a test whose async assertion was not awaited, and no longer looks a config file up in ancestor directories. Scaffolded templates ship on 5.
53
+
54
+ **`voltro update` carries you across this** — codemod `0.67.0/02_vitest-5`. If you pin versions by hand and never run it, print the notes without changing anything: `voltro update --codemods-only --from <your current version> --dry-run` (this one ships in 0.67.0).
55
+
56
+ ### Added
57
+
58
+ - **@voltro/ui-shadcn, @voltro/cli, @voltro/devtools, @voltro/devtools-ui** — Add the opt-in Signal brand stylesheet, accessible `SignalHeader` and pausable `SignalField` with reduced-motion and visibility handling. Development and production builds resolve the stylesheet from the same UI-kit installation; the in-browser devtools use the matching plum/violet palette and declare the Tailwind dependency required to compile their source stylesheet locally.
59
+
60
+ Code blocks use matching light/dark surfaces, code comparisons retain readable contrast, and the shared routes view uses a direct heading.
61
+
62
+ `DocsLayout` supports custom header and introduction slots and an optional desktop sidebar. Its mobile drawer uses native modal focus and Escape behavior; search contains keyboard focus and restores the opener when dismissed.
63
+
64
+ `VoltroWordmark` owns product badges and an operator warning tone. `SignalHeader` shares responsive brand geometry and an optional sticky reading surface; `AppShell` accepts a custom header slot. All first-party product headers and footers use this composition, including the compact local Devtools identity.
65
+
66
+ Shared `SignalPreferences`, `SignalSearch` and `SignalHeaderAction` align header controls across public and operating apps. Signal fields support both themes; `ProfileMenu` accepts a custom trigger and preserves an explicit System choice.
67
+
68
+ ### Changed
69
+
70
+ - **@voltro/cli, @voltro/runtime, @voltro/database, @voltro/protocol, @voltro/voltro, @voltro/sql-mssql, @voltro/sql-turso, @voltro/workflow, @voltro/plugin-sso-saml, @voltro/plugin-sentry** — Dependency refresh: Effect 3.22.1 with the matching `@effect/*` patch releases (`@effect/cluster` 0.60.2, `@effect/sql-mssql` 0.54.0, `@effect/platform` 0.97.1, `@effect/rpc` 0.76.2, `@effect/sql` 0.52.1, `@effect/workflow` 0.19.1), `@libsql/client` 0.18.0 — and `@effect/sql-mssql` 0.54.0 flipped its TLS default to encrypt-and-verify, so the mssql dialect now passes `encrypt: false` explicitly for an unset connection to keep the documented modes (unset → plaintext, `sslmode=require` → encrypt without verification) — `@sentry/cli` 3, `xml-encryption` 6, vite 8.2.2, and the tracked minor/patch lines. The mssql patch for `@effect/cluster` — the four SQL fixes plus the shard-release backoff — was regenerated against 0.60.2 (upstream refactored `SqlMessageStorage`, so the 0.60.0 hunks no longer applied) and ships as `patches/@effect__cluster@0.60.2.patch`; `voltro add mssql` writes the new key. Projects scaffolded by the CLI record the pnpm that ran it, which is 12.x on the framework's own toolchain; pnpm 11+ replaced `onlyBuiltDependencies` with `allowBuilds`, and the framework's workspaces declare it.
71
+
72
+ ### Fixed
73
+
74
+ - **@voltro/cli, @voltro/runtime, @voltro/database, @voltro/voltro** — The tunable readers that take `env = process.env` (`resolveEagerFallbackWarnIntervalMs`, `resolveWorkflowRecordingMode`, `readPollCeilingMs`, and the `SchedulingEnv` / `ReactiveEnv` / `InspectRingsEnv` shapes) accept a bare `NodeJS.ProcessEnv` again. They were typed as all-optional literals, which TypeScript's weak-type check rejects for `Dict<string>` the moment nothing in the compilation augments `ProcessEnv` — an app that compiles framework source with only `@types/node` (a mobile app, which declares no env) failed `tsc` on `dbMetrics.ts`. The parameters now carry an index signature.
75
+ - **@voltro/client, @voltro/web** — The subscription recovery watchdog knows when it was throttled. A browser delays timers in a hidden tab, so the stall timer could fire long after it was due, report the interval it was armed with as the interval waited, warn, and invalidate entries whose deliveries were queued behind the same throttling. It now compares its due time with its fire time: late beyond a tolerance, or firing in a hidden tab, it records one `subscription.recovery-timer-late` per attempt (with `timerLateMs` and `hidden`) and re-arms; the first on-time fire in a visible tab decides. `subscription.recovery-stuck` carries the time actually waited and the number of deferrals.
76
+
77
+ The client runtime yields to the event loop through a `MessageChannel` in the browser instead of `setTimeout`, so tasks queued behind Effect's periodic yield are not held to the hidden-tab timer grid. `runtime.resolved` records the channel in use as `scheduler`.
78
+
79
+ `socket.frames` marks frame-arrival bursts on the raw socket — the first frame after open and each frame that follows a gap of five seconds or more, at most eight per socket — so an export separates a late arrival from late processing.
80
+
81
+ `apiSurface: compatible` — the golden churn in `@voltro/client` and `@voltro/web` is two members added to the `ClientDiagnosticKind` union (`socket.frames`, `subscription.recovery-timer-late`); every existing member is unchanged, the framework is the only producer, and a reader that does not know the new kinds sees two more events it can ignore. Only a switch exhaustive over the vocabulary needs two arms.
82
+ - **@voltro/cli** — Web middleware is precompiled into the server production output and rooted by runtime pruning, preserving its behavior in source-free Docker deployments. Missing transitive imports now fail loudly instead of silently disabling a present middleware; rebuilding after removal clears the previous policy. Runtime tracing also preserves transitive dependencies when a deploy directory is reached through a symlink. Native bundle imports now propagate missing-library and initialization errors instead of returning a circular shim's empty exports. Rebuild and deploy the complete `.framework` output; no application API changes are required.
83
+
84
+ ---
85
+
42
86
  ## [0.66.1] — 2026-09-06
43
87
 
44
88
  ### Fixed
@@ -9,7 +9,7 @@ Generated from the resolved runtime dependency closure (52 packages).
9
9
 
10
10
  ---
11
11
 
12
- ## @effect/cluster@0.60.0
12
+ ## @effect/cluster@0.60.2
13
13
 
14
14
  License: MIT
15
15
 
@@ -37,7 +37,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
37
37
  SOFTWARE.
38
38
  ```
39
39
 
40
- ## @effect/platform-node@0.108.0
40
+ ## @effect/platform-node@0.108.1
41
41
 
42
42
  License: MIT
43
43
 
@@ -65,7 +65,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
65
65
  SOFTWARE.
66
66
  ```
67
67
 
68
- ## @effect/platform-node-shared@0.61.0
68
+ ## @effect/platform-node-shared@0.61.1
69
69
 
70
70
  License: MIT
71
71
 
@@ -93,7 +93,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
93
93
  SOFTWARE.
94
94
  ```
95
95
 
96
- ## @effect/sql@0.52.0
96
+ ## @effect/sql@0.52.1
97
97
 
98
98
  License: MIT
99
99
 
@@ -121,7 +121,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
121
121
  SOFTWARE.
122
122
  ```
123
123
 
124
- ## @effect/workflow@0.19.0
124
+ ## @effect/workflow@0.19.1
125
125
 
126
126
  License: MIT
127
127
 
@@ -386,7 +386,7 @@ Apache License
386
386
  limitations under the License.
387
387
  ```
388
388
 
389
- ## @opentelemetry/api-logs@0.221.0
389
+ ## @opentelemetry/api-logs@0.222.0
390
390
 
391
391
  License: Apache-2.0
392
392
 
@@ -594,7 +594,7 @@ Apache License
594
594
  limitations under the License.
595
595
  ```
596
596
 
597
- ## @opentelemetry/context-async-hooks@2.10.0
597
+ ## @opentelemetry/context-async-hooks@2.11.0
598
598
 
599
599
  License: Apache-2.0
600
600
 
@@ -802,7 +802,7 @@ Apache License
802
802
  limitations under the License.
803
803
  ```
804
804
 
805
- ## @opentelemetry/core@2.9.0
805
+ ## @opentelemetry/core@2.10.0
806
806
 
807
807
  License: Apache-2.0
808
808
 
@@ -1010,7 +1010,7 @@ Apache License
1010
1010
  limitations under the License.
1011
1011
  ```
1012
1012
 
1013
- ## @opentelemetry/exporter-metrics-otlp-http@0.221.0
1013
+ ## @opentelemetry/exporter-metrics-otlp-http@0.222.0
1014
1014
 
1015
1015
  License: Apache-2.0
1016
1016
 
@@ -1218,7 +1218,7 @@ Apache License
1218
1218
  limitations under the License.
1219
1219
  ```
1220
1220
 
1221
- ## @opentelemetry/exporter-trace-otlp-http@0.221.0
1221
+ ## @opentelemetry/exporter-trace-otlp-http@0.222.0
1222
1222
 
1223
1223
  License: Apache-2.0
1224
1224
 
@@ -1426,7 +1426,7 @@ Apache License
1426
1426
  limitations under the License.
1427
1427
  ```
1428
1428
 
1429
- ## @opentelemetry/otlp-exporter-base@0.221.0
1429
+ ## @opentelemetry/otlp-exporter-base@0.222.0
1430
1430
 
1431
1431
  License: Apache-2.0
1432
1432
 
@@ -1634,7 +1634,7 @@ Apache License
1634
1634
  limitations under the License.
1635
1635
  ```
1636
1636
 
1637
- ## @opentelemetry/otlp-transformer@0.221.0
1637
+ ## @opentelemetry/otlp-transformer@0.222.0
1638
1638
 
1639
1639
  License: Apache-2.0
1640
1640
 
@@ -1842,7 +1842,7 @@ Apache License
1842
1842
  limitations under the License.
1843
1843
  ```
1844
1844
 
1845
- ## @opentelemetry/resources@2.10.0
1845
+ ## @opentelemetry/resources@2.11.0
1846
1846
 
1847
1847
  License: Apache-2.0
1848
1848
 
@@ -2050,7 +2050,7 @@ Apache License
2050
2050
  limitations under the License.
2051
2051
  ```
2052
2052
 
2053
- ## @opentelemetry/sdk-logs@0.221.0
2053
+ ## @opentelemetry/sdk-logs@0.222.0
2054
2054
 
2055
2055
  License: Apache-2.0
2056
2056
 
@@ -2258,7 +2258,7 @@ Apache License
2258
2258
  limitations under the License.
2259
2259
  ```
2260
2260
 
2261
- ## @opentelemetry/sdk-metrics@2.10.0
2261
+ ## @opentelemetry/sdk-metrics@2.11.0
2262
2262
 
2263
2263
  License: Apache-2.0
2264
2264
 
@@ -2466,7 +2466,7 @@ Apache License
2466
2466
  limitations under the License.
2467
2467
  ```
2468
2468
 
2469
- ## @opentelemetry/sdk-trace@2.10.0
2469
+ ## @opentelemetry/sdk-trace@2.11.0
2470
2470
 
2471
2471
  License: Apache-2.0
2472
2472
 
@@ -2674,7 +2674,7 @@ Apache License
2674
2674
  limitations under the License.
2675
2675
  ```
2676
2676
 
2677
- ## @opentelemetry/sdk-trace-base@2.10.0
2677
+ ## @opentelemetry/sdk-trace-base@2.11.0
2678
2678
 
2679
2679
  License: Apache-2.0
2680
2680
 
@@ -2882,7 +2882,7 @@ Apache License
2882
2882
  limitations under the License.
2883
2883
  ```
2884
2884
 
2885
- ## @opentelemetry/sdk-trace-node@2.10.0
2885
+ ## @opentelemetry/sdk-trace-node@2.11.0
2886
2886
 
2887
2887
  License: Apache-2.0
2888
2888
 
@@ -3354,7 +3354,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
3354
3354
  SOFTWARE.
3355
3355
  ```
3356
3356
 
3357
- ## @upstash/redis@1.38.2
3357
+ ## @upstash/redis@1.38.3
3358
3358
 
3359
3359
  License: MIT
3360
3360
 
@@ -3956,7 +3956,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
3956
3956
  SOFTWARE.
3957
3957
  ```
3958
3958
 
3959
- ## jose@6.2.8
3959
+ ## jose@6.2.10
3960
3960
 
3961
3961
  License: MIT
3962
3962
 
@@ -4102,7 +4102,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
4102
4102
  SOFTWARE.
4103
4103
  ```
4104
4104
 
4105
- ## multipasta@0.2.7
4105
+ ## multipasta@0.2.8
4106
4106
 
4107
4107
  License: MIT
4108
4108
 
@@ -4146,7 +4146,7 @@ The above copyright notice and this permission notice shall be included in all c
4146
4146
  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
4147
4147
  ```
4148
4148
 
4149
- ## picomatch@4.0.5
4149
+ ## picomatch@4.0.7
4150
4150
 
4151
4151
  License: MIT
4152
4152
 
@@ -4523,7 +4523,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
4523
4523
  SOFTWARE.
4524
4524
  ```
4525
4525
 
4526
- ## undici@8.9.0
4526
+ ## undici@8.10.0
4527
4527
 
4528
4528
  License: MIT
4529
4529
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voltro/plugin-governance",
3
- "version": "0.66.1",
3
+ "version": "0.67.0",
4
4
  "description": "Data governance — retention policies (TTL sweep), GDPR subject export + erasure (right-to-be-forgotten), and consent recording. Builds on audit + soft-delete.",
5
5
  "keywords": [
6
6
  "voltro",
@@ -38,12 +38,12 @@
38
38
  "node": ">=24.0.0"
39
39
  },
40
40
  "dependencies": {
41
- "@voltro/database": "0.66.1",
42
- "@voltro/protocol": "0.66.1",
43
- "@voltro/runtime": "0.66.1"
41
+ "@voltro/database": "0.67.0",
42
+ "@voltro/protocol": "0.67.0",
43
+ "@voltro/runtime": "0.67.0"
44
44
  },
45
45
  "peerDependencies": {
46
- "effect": "^3.22.0"
46
+ "effect": "^3.22.1"
47
47
  },
48
48
  "publishConfig": {
49
49
  "access": "public"