From 745d3ad90d7fe4cca2b27aa417b32a9276c4271e Mon Sep 17 00:00:00 2001 From: Unlock Digital <134563073+unlockdigital@users.noreply.github.com> Date: Tue, 27 Oct 2026 16:43:07 -0500 Subject: [PATCH 1/3] fix(release): defer checkout cleanup past vendored references --- .github/workflows/fork-release.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/fork-release.yml b/.github/workflows/fork-release.yml index 9d9b8ff6f9408..e667f72a075b8 100644 --- a/.github/workflows/fork-release.yml +++ b/.github/workflows/fork-release.yml @@ -31,6 +31,10 @@ jobs: preflight: runs-on: ubuntu-24.04 timeout-minutes: 10 + permissions: + actions: read + checks: read + contents: read if: github.repository == 'unlockdigital/t3code' outputs: version: ${{ steps.meta.outputs.version }} @@ -41,7 +45,9 @@ jobs: - uses: actions/checkout@v6 with: fetch-depth: 0 - persist-credentials: false + # Eager auth cleanup traverses optional vendored gitlinks with incomplete metadata. + # Keep the scoped token until checkout's normal post-job cleanup. + persist-credentials: true sparse-checkout: | /* !/.repos/ @@ -329,7 +335,7 @@ jobs: with: ref: ${{ needs.preflight.outputs.ref }} path: release-source - persist-credentials: false + persist-credentials: true sparse-checkout: | /packaging/fork/ /docs/unlock-digital/PORTABLE_TRIAL.md From 5a65548c0560f008f79f6e4f7376876383698317 Mon Sep 17 00:00:00 2001 From: Unlock Digital <134563073+unlockdigital@users.noreply.github.com> Date: Tue, 27 Oct 2026 17:01:22 -0500 Subject: [PATCH 2/3] fix(security): pin patched desktop and HTTP runtimes --- apps/desktop/package.json | 2 +- pnpm-lock.yaml | 181 +++++++++++++++++++++----------------- pnpm-workspace.yaml | 16 +++- 3 files changed, 112 insertions(+), 87 deletions(-) diff --git a/apps/desktop/package.json b/apps/desktop/package.json index c652ccabc768d..526b6e6a0c8ff 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -23,7 +23,7 @@ "@t3tools/tailscale": "workspace:*", "dbus-next": "0.10.2", "effect": "catalog:", - "electron": "44.9.3", + "electron": "44.10.0", "electron-store": "^8.2.0", "electron-updater": "^6.8.9", "electron-webauthn": "catalog:", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 804086f730781..e825ede9a686d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -249,8 +249,8 @@ catalogs: specifier: npm:@tsc-rs/typescript@0.8.0 version: 0.8.0 undici: - specifier: 8.11.2 - version: 8.11.2 + specifier: 8.12.2 + version: 8.12.2 unified: specifier: 11.0.5 version: 11.0.5 @@ -318,7 +318,11 @@ overrides: lightningcss: 1.33.0 tailwindcss: 4.3.3 '@types/ws@^8': 8.18.2 - undici@^8: 8.11.2 + undici@^8: 8.12.2 + undici@^7: 7.30.1 + undici@^6: 6.29.1 + zod@^4: 4.6.6 + body-parser@^2: 2.4.0 ws@^8: 8.22.0 vite: npm:@voidzero-dev/vite-plus-core@1.3.0 vite-plus: 1.3.0 @@ -386,7 +390,7 @@ importers: dependencies: '@clerk/electron': specifier: 0.1.3 - version: 0.1.3(@clerk/electron-passkeys@0.0.3)(electron-store@8.2.0)(electron@44.9.3(supports-color@8.1.1))(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + version: 0.1.3(@clerk/electron-passkeys@0.0.3)(electron-store@8.2.0)(electron@44.10.0(supports-color@8.1.1))(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@clerk/electron-passkeys': specifier: 0.0.3 version: 0.0.3 @@ -421,8 +425,8 @@ importers: specifier: 4.0.5 version: 4.0.5 electron: - specifier: 44.9.3 - version: 44.9.3(supports-color@8.1.1) + specifier: 44.10.0 + version: 44.10.0(supports-color@8.1.1) electron-store: specifier: ^8.2.0 version: 8.2.0 @@ -821,7 +825,7 @@ importers: dependencies: '@anthropic-ai/claude-agent-sdk': specifier: ^0.3.276 - version: 0.3.276(@anthropic-ai/sdk@0.93.0(zod@4.6.5))(@modelcontextprotocol/sdk@1.32.0(supports-color@8.1.1)(zod@4.6.5))(zod@4.6.5) + version: 0.3.276(@anthropic-ai/sdk@0.93.0(zod@4.6.6))(@modelcontextprotocol/sdk@1.32.0(supports-color@8.1.1)(zod@4.6.6))(zod@4.6.6) '@cursor/sdk': specifier: 1.0.35 version: 1.0.35 @@ -911,7 +915,7 @@ importers: version: 3.7.0 undici: specifier: 'catalog:' - version: 8.11.2 + version: 8.12.2 yaml: specifier: ^2.9.0 version: 2.9.0 @@ -927,7 +931,7 @@ importers: version: 4.0.5(patch_hash=2731c9c3761c595f25ddc625a7d61ca376b389d5b3049ecb837c8940f21cfa02)(@astrojs/compiler-rs@0.5.1)(@tsc-rs/typescript@0.8.0)(@types/node@24.12.4)(@vitest/browser-playwright@5.0.5)(@vitest/ui@5.0.5)(@volar/typescript@2.4.28(@tsc-rs/typescript@0.8.0))(bufferutil@4.1.0)(effect@4.0.5)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.0))(playwright@1.60.0)(terser@5.48.0)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0) '@modelcontextprotocol/sdk': specifier: 1.32.0 - version: 1.32.0(supports-color@8.1.1)(zod@4.6.5) + version: 1.32.0(supports-color@8.1.1)(zod@4.6.6) '@t3tools/contracts': specifier: workspace:* version: link:../../packages/contracts @@ -981,7 +985,7 @@ importers: version: 6.40.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@clerk/electron': specifier: 0.1.3 - version: 0.1.3(@clerk/electron-passkeys@0.0.3)(electron-store@8.2.0)(electron@44.9.3(supports-color@8.1.1))(react-dom@19.3.0(react@19.3.0))(react@19.3.0) + version: 0.1.3(@clerk/electron-passkeys@0.0.3)(electron-store@8.2.0)(electron@44.10.0(supports-color@8.1.1))(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@clerk/react': specifier: 6.18.0 version: 6.18.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0) @@ -1261,10 +1265,10 @@ importers: version: link:../../packages/shared alchemy: specifier: 2.0.0-beta.80 - version: 2.0.0-beta.80(patch_hash=bea1b6c0c0b23157fd5f439a1d7feff430f28ac1621ba135d8a13eeec60ccacd)(2676e7bf1eae706a0c10853e80d0a1b0) + version: 2.0.0-beta.80(patch_hash=bea1b6c0c0b23157fd5f439a1d7feff430f28ac1621ba135d8a13eeec60ccacd)(d38b7dbdc852fda9d5d25a0e88668dcb) drizzle-orm: specifier: 1.0.0-rc.5-ab785fc - version: 1.0.0-rc.5-ab785fc(@cloudflare/workers-types@4.20260604.1)(@effect/sql-d1@4.0.0(effect@4.0.5))(@effect/sql-pg@4.0.5(effect@4.0.5))(@effect/sql-sqlite-bun@4.0.0-rc.112(effect@4.0.5))(@effect/sql-sqlite-do@4.0.5(effect@4.0.5))(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(bun-types@1.3.14)(effect@4.0.5)(expo-sqlite@58.0.13(expo@58.0.14)(react-native@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(@react-native/metro-config@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))(@types/react@19.3.0)(bufferutil@4.1.0)(react@19.3.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))(react@19.3.0))(pg@8.23.0)(zod@4.4.3) + version: 1.0.0-rc.5-ab785fc(@cloudflare/workers-types@4.20260604.1)(@effect/sql-d1@4.0.0(effect@4.0.5))(@effect/sql-pg@4.0.5(effect@4.0.5))(@effect/sql-sqlite-bun@4.0.0-rc.112(effect@4.0.5))(@effect/sql-sqlite-do@4.0.5(effect@4.0.5))(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(bun-types@1.3.14)(effect@4.0.5)(expo-sqlite@58.0.13(expo@58.0.14)(react-native@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(@react-native/metro-config@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))(@types/react@19.3.0)(bufferutil@4.1.0)(react@19.3.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))(react@19.3.0))(pg@8.23.0)(zod@4.6.6) effect: specifier: 4.0.5 version: 4.0.5 @@ -2145,7 +2149,7 @@ packages: resolution: {integrity: sha512-89a7sPvZqXsP3PigcAQLWntu/duIVEcN/RyChAB+j6p3C7NwW767sVttvL8r0+BetTg63uAXQoYHCZZueQKBSw==} engines: {node: '>=18.17'} peerDependencies: - zod: ^3.25.76 || ^4.1.8 + zod: 4.6.6 '@ai-sdk/provider@3.0.15': resolution: {integrity: sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q==} @@ -2200,13 +2204,13 @@ packages: peerDependencies: '@anthropic-ai/sdk': '>=0.93.0' '@modelcontextprotocol/sdk': ^1.29.0 - zod: ^4.0.0 + zod: 4.6.6 '@anthropic-ai/sdk@0.93.0': resolution: {integrity: sha512-q9vaSZQVFx6B/gPxetGYfLXSJD5v0sOmh0OpZDq7yCrTSA+Rscvrtyol7JJTW40wEpQB4U1B4JXzxQitbQ3CAA==} hasBin: true peerDependencies: - zod: ^3.25.0 || ^4.0.0 + zod: 4.6.6 peerDependenciesMeta: zod: optional: true @@ -4426,7 +4430,7 @@ packages: engines: {node: '>=18'} peerDependencies: '@cfworker/json-schema': ^4.1.1 - zod: ^3.25 || ^4.0 + zod: 4.6.6 peerDependenciesMeta: '@cfworker/json-schema': optional: true @@ -7392,8 +7396,8 @@ packages: bluebird@3.7.2: resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} - body-parser@2.3.0: - resolution: {integrity: sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw==} + body-parser@2.4.0: + resolution: {integrity: sha512-Ifk1KcLrxaGt1occQagQNFNNOqRt1LFuehEnHHzB8Z6cRgIxRU1TBaiIsUiCdA+gy5PL7Y1IX31DNKkRmxtXjQ==} engines: {node: '>=18'} boolbase@1.0.0: @@ -7716,6 +7720,10 @@ packages: resolution: {integrity: sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==} engines: {node: '>=18'} + content-type@2.1.0: + resolution: {integrity: sha512-mj7UPXE0jaqaOsukNZRUEfEi2AcL7C/vwmwcHV0O97eO1E1pxBZuyjlZrx5seTaNBg1U6+o35wpa35Qfcc+7ag==} + engines: {node: '>=18'} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -8026,7 +8034,7 @@ packages: sqlite3: '>=5' typebox: '>=1.2.0' valibot: '>=1.0.0-beta.7' - zod: ^3.25.0 || ^4.0.0 + zod: 4.6.6 peerDependenciesMeta: '@aws-sdk/client-rds-data': optional: true @@ -8179,8 +8187,8 @@ packages: resolution: {integrity: sha512-bO3y10YikuUwUuDUQRM4KfwNkKhnpVO7IPdbsrejwN9/AABJzzTQ4GeHwyzNSrVO+tEH3/Np255a3sVZpZDjvg==} engines: {node: '>=8.0.0'} - electron@44.9.3: - resolution: {integrity: sha512-Cv9/yMnZxNWsMlIe8T4v//NKHdUvbeyoTJoXE3BIcRxus2meeFaO9h/P3zB5d4cBXum51IgAYrT2QjpIDWKpJA==} + electron@44.10.0: + resolution: {integrity: sha512-ss4pCfrQKV4TWkuVYtWB4HmeysPZgB96cSYNKYZv1UVCRP4vQMGNW5oopFbvx6Bbfce1XtP5pm5RDuKehp0svQ==} engines: {node: '>= 22.12.0'} hasBin: true @@ -9053,6 +9061,10 @@ packages: resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} engines: {node: '>=0.10.0'} + iconv-lite@0.7.3: + resolution: {integrity: sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==} + engines: {node: '>=0.10.0'} + idb-keyval@6.2.1: resolution: {integrity: sha512-8Sb3veuYCyrZL+VBt9LJfZjLUPWVvqn8tG28VqYNFCo43KHcKuq+b4EiXGeuaLAQWL2YmyDgMp2aSpH9JHsEQg==} @@ -10524,6 +10536,10 @@ packages: resolution: {integrity: sha512-h6fhOIaRrID2CbEY2fqs+7t+UXZo+MLAnU5gRIq85uFtdiUPCdsApMlHhXogKVM4HM2DVbIjGNTTYH2OcmP1vA==} engines: {node: '>=0.6'} + qs@6.16.1: + resolution: {integrity: sha512-5Px6J7rfHBAGUhNQ3es4YzcOdBBw0SDcVtThJml4RdnKw4tKs2epA0kPZ+K8X+WiHktT93RHVcQ/3ym5aTCgtg==} + engines: {node: '>=0.6'} + quick-lru@5.1.1: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} @@ -11453,16 +11469,16 @@ packages: undici-types@7.16.0: resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} - undici@6.29.0: - resolution: {integrity: sha512-R+RODBqp6i2pPflGdq+xIOUkl+RNfGgHwoinecKu/JCuf2uO06cOKoDbI2P7Dn6KcswdKwrczbU6IYJ6K8X+wg==} + undici@6.29.1: + resolution: {integrity: sha512-EvRlUt/QqAEvXdQeRMYUfwOQsfzpDztykrG2owGEE/rBOBoYv9uF39ZzsNDh4lTFHhTr2XOZjKkYgueD12ZmGA==} engines: {node: '>=18.17'} - undici@7.29.1: - resolution: {integrity: sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q==} + undici@7.30.1: + resolution: {integrity: sha512-03KrMbjIFDWQR5RNPrSw3bd1r12JpyFQl9/yxjUbJtqkjmllqC5lFjZh6ujeuJCKr8EOQvRW872Oy/az+nLYxg==} engines: {node: '>=20.18.1'} - undici@8.11.2: - resolution: {integrity: sha512-u4UB2/IrKdU6lFxumHmmo1a3fCQO5tzQllRorfoRS63txhrB7xTpSn1PftwC4qEHkOaqP95fCWW4lJzwErwzhQ==} + undici@8.12.2: + resolution: {integrity: sha512-XtuDWVdqTLr3NAxm2ly9/hU6kUsJOgGh1RASzMBbsw6aWCOaQzHdW+QQDfdERjfJ2V5vL5pRPa4RetO9UfivDg==} engines: {node: '>=22.19.0'} unenv@2.0.0-rc.24: @@ -12068,19 +12084,13 @@ packages: zod-to-json-schema@3.25.2: resolution: {integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==} peerDependencies: - zod: ^3.25.28 || ^4 + zod: 4.6.6 zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.4.3: - resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} - - zod@4.5.4: - resolution: {integrity: sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA==} - - zod@4.6.5: - resolution: {integrity: sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==} + zod@4.6.6: + resolution: {integrity: sha512-4UmzQUF5fxvfcYHlbjBmejU+w+hbDnWFx4aS8kBx7nPBHcO2SqPbpAG8snbdg+Xse4pRefR98hgjFgIMCI/UhA==} zustand@5.0.14: resolution: {integrity: sha512-/8tAspM5LMPr28b3fwLYrtdj77ECpfZviaP75CMTnwO8ISyaE4GDIG/9rDDYq/cH9D2Xw2A2RXglLInmVBQB/g==} @@ -12114,13 +12124,13 @@ snapshots: optionalDependencies: typescript: '@tsc-rs/typescript@0.8.0' - '@ai-sdk/provider-utils@4.0.57(zod@4.4.3)': + '@ai-sdk/provider-utils@4.0.57(zod@4.6.6)': dependencies: '@ai-sdk/provider': 3.0.18 '@standard-schema/spec': 1.1.0 eventsource-parser: 3.1.0 - undici: 6.29.0 - zod: 4.4.3 + undici: 6.29.1 + zod: 4.6.6 '@ai-sdk/provider@3.0.15': dependencies: @@ -12167,17 +12177,17 @@ snapshots: '@types/react': 19.3.0 react-devtools-core: 6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6) - '@anthropic-ai/claude-agent-sdk@0.3.276(@anthropic-ai/sdk@0.93.0(zod@4.6.5))(@modelcontextprotocol/sdk@1.32.0(supports-color@8.1.1)(zod@4.6.5))(zod@4.6.5)': + '@anthropic-ai/claude-agent-sdk@0.3.276(@anthropic-ai/sdk@0.93.0(zod@4.6.6))(@modelcontextprotocol/sdk@1.32.0(supports-color@8.1.1)(zod@4.6.6))(zod@4.6.6)': dependencies: - '@anthropic-ai/sdk': 0.93.0(zod@4.6.5) - '@modelcontextprotocol/sdk': 1.32.0(supports-color@8.1.1)(zod@4.6.5) - zod: 4.6.5 + '@anthropic-ai/sdk': 0.93.0(zod@4.6.6) + '@modelcontextprotocol/sdk': 1.32.0(supports-color@8.1.1)(zod@4.6.6) + zod: 4.6.6 - '@anthropic-ai/sdk@0.93.0(zod@4.6.5)': + '@anthropic-ai/sdk@0.93.0(zod@4.6.6)': dependencies: json-schema-to-ts: 3.1.1 optionalDependencies: - zod: 4.6.5 + zod: 4.6.6 '@asamuzakjp/css-color@7.0.1': dependencies: @@ -13161,12 +13171,12 @@ snapshots: '@clerk/electron-passkeys-win32-arm64-msvc': 0.0.3 '@clerk/electron-passkeys-win32-x64-msvc': 0.0.3 - '@clerk/electron@0.1.3(@clerk/electron-passkeys@0.0.3)(electron-store@8.2.0)(electron@44.9.3(supports-color@8.1.1))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': + '@clerk/electron@0.1.3(@clerk/electron-passkeys@0.0.3)(electron-store@8.2.0)(electron@44.10.0(supports-color@8.1.1))(react-dom@19.3.0(react@19.3.0))(react@19.3.0)': dependencies: '@clerk/clerk-js': 6.40.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@clerk/react': 6.18.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@clerk/shared': 4.41.0(react-dom@19.3.0(react@19.3.0))(react@19.3.0) - electron: 44.9.3(supports-color@8.1.1) + electron: 44.10.0(supports-color@8.1.1) react: 19.3.0 tslib: 2.8.1 optionalDependencies: @@ -13253,7 +13263,7 @@ snapshots: '@coderabbitai/config@1.1.0': dependencies: - zod: 4.5.4 + zod: 4.6.6 '@connectrpc/connect-web@1.7.0(@bufbuild/protobuf@1.10.0)(@connectrpc/connect@1.7.0(@bufbuild/protobuf@1.10.0))': dependencies: @@ -13503,7 +13513,7 @@ snapshots: '@effect/platform-node-shared': 4.0.5(bufferutil@4.1.0)(effect@4.0.5)(utf-8-validate@6.0.6) effect: 4.0.5 redis: 6.2.1 - undici: 8.11.2 + undici: 8.12.2 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -13623,7 +13633,7 @@ snapshots: semver: 7.8.5 sumchecker: 3.0.1(supports-color@8.1.1) optionalDependencies: - undici: 7.29.1 + undici: 7.30.1 transitivePeerDependencies: - supports-color @@ -14665,7 +14675,7 @@ snapshots: '@material/material-color-utilities@0.3.0': {} - '@modelcontextprotocol/sdk@1.32.0(supports-color@8.1.1)(zod@4.6.5)': + '@modelcontextprotocol/sdk@1.32.0(supports-color@8.1.1)(zod@4.6.6)': dependencies: '@hono/node-server': 1.19.17(hono@4.13.7) ajv: 8.20.0 @@ -14682,8 +14692,8 @@ snapshots: json-schema-typed: 8.0.2 pkce-challenge: 5.0.1 raw-body: 3.0.2 - zod: 4.6.5 - zod-to-json-schema: 3.25.2(zod@4.6.5) + zod: 4.6.6 + zod-to-json-schema: 3.25.2(zod@4.6.6) transitivePeerDependencies: - supports-color @@ -15421,9 +15431,9 @@ snapshots: '@react-native-ai/apple@0.12.0(patch_hash=2d09870c2848d185cb05b53ed823a46e12dba519324d8dd8e584e28731990f9d)(react-native@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(@react-native/metro-config@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))(@types/react@19.3.0)(bufferutil@4.1.0)(react@19.3.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))': dependencies: '@ai-sdk/provider': 3.0.15 - '@ai-sdk/provider-utils': 4.0.57(zod@4.4.3) + '@ai-sdk/provider-utils': 4.0.57(zod@4.6.6) react-native: 0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(@react-native/metro-config@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))(@types/react@19.3.0)(bufferutil@4.1.0)(react@19.3.0)(supports-color@8.1.1)(utf-8-validate@6.0.6) - zod: 4.4.3 + zod: 4.6.6 '@react-native-async-storage/async-storage@3.1.1(react-native@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(@react-native/metro-config@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))(@types/react@19.3.0)(bufferutil@4.1.0)(react@19.3.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))(react@19.3.0)': dependencies: @@ -16029,7 +16039,7 @@ snapshots: jiti: 2.7.0 magic-string: 0.30.21 prettier: 3.8.3 - zod: 4.6.5 + zod: 4.6.6 transitivePeerDependencies: - supports-color @@ -16047,7 +16057,7 @@ snapshots: '@tanstack/virtual-file-routes': 1.162.0 chokidar: 5.0.0 unplugin: 3.0.0 - zod: 4.4.3 + zod: 4.6.6 optionalDependencies: '@tanstack/react-router': 1.170.10(react-dom@19.3.0(react@19.3.0))(react@19.3.0) vite: '@voidzero-dev/vite-plus-core@1.3.0(@tsc-rs/typescript@0.8.0)(@types/node@24.12.4)(@volar/typescript@2.4.28(@tsc-rs/typescript@0.8.0))(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(unrun@0.2.39)(yaml@2.9.0)' @@ -16973,7 +16983,7 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - alchemy@2.0.0-beta.80(patch_hash=bea1b6c0c0b23157fd5f439a1d7feff430f28ac1621ba135d8a13eeec60ccacd)(2676e7bf1eae706a0c10853e80d0a1b0): + alchemy@2.0.0-beta.80(patch_hash=bea1b6c0c0b23157fd5f439a1d7feff430f28ac1621ba135d8a13eeec60ccacd)(d38b7dbdc852fda9d5d25a0e88668dcb): dependencies: '@alchemy.run/cloudflare-runtime': 2.0.0-beta.80(@distilled.cloud/cloudflare@1.0.0-rc.13(effect@4.0.5))(@effect/platform-node@4.0.5(bufferutil@4.1.0)(effect@4.0.5)(redis@6.2.1)(utf-8-validate@6.0.6))(@tsc-rs/typescript@0.8.0)(@types/node@24.12.4)(@voidzero-dev/vite-plus-core@1.3.0(@tsc-rs/typescript@0.8.0)(@types/node@24.12.4)(@volar/typescript@2.4.28(@tsc-rs/typescript@0.8.0))(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(unrun@0.2.39)(yaml@2.9.0))(effect@4.0.5)(rolldown@1.2.5) '@alchemy.run/floci': 2.0.0-beta.80(effect@4.0.5) @@ -17016,7 +17026,7 @@ snapshots: '@effect/sql-pg': 4.0.5(effect@4.0.5) '@effect/vitest': 4.0.5(patch_hash=2731c9c3761c595f25ddc625a7d61ca376b389d5b3049ecb837c8940f21cfa02)(@astrojs/compiler-rs@0.5.1)(@tsc-rs/typescript@0.8.0)(@types/node@24.12.4)(@vitest/browser-playwright@5.0.5)(@vitest/ui@5.0.5)(@volar/typescript@2.4.28(@tsc-rs/typescript@0.8.0))(bufferutil@4.1.0)(effect@4.0.5)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.0))(playwright@1.60.0)(terser@5.48.0)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0) drizzle-kit: 1.0.0-rc.5-ab785fc - drizzle-orm: 1.0.0-rc.5-ab785fc(@cloudflare/workers-types@4.20260604.1)(@effect/sql-d1@4.0.0(effect@4.0.5))(@effect/sql-pg@4.0.5(effect@4.0.5))(@effect/sql-sqlite-bun@4.0.0-rc.112(effect@4.0.5))(@effect/sql-sqlite-do@4.0.5(effect@4.0.5))(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(bun-types@1.3.14)(effect@4.0.5)(expo-sqlite@58.0.13(expo@58.0.14)(react-native@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(@react-native/metro-config@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))(@types/react@19.3.0)(bufferutil@4.1.0)(react@19.3.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))(react@19.3.0))(pg@8.23.0)(zod@4.4.3) + drizzle-orm: 1.0.0-rc.5-ab785fc(@cloudflare/workers-types@4.20260604.1)(@effect/sql-d1@4.0.0(effect@4.0.5))(@effect/sql-pg@4.0.5(effect@4.0.5))(@effect/sql-sqlite-bun@4.0.0-rc.112(effect@4.0.5))(@effect/sql-sqlite-do@4.0.5(effect@4.0.5))(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(bun-types@1.3.14)(effect@4.0.5)(expo-sqlite@58.0.13(expo@58.0.14)(react-native@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(@react-native/metro-config@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))(@types/react@19.3.0)(bufferutil@4.1.0)(react@19.3.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))(react@19.3.0))(pg@8.23.0)(zod@4.6.6) mongodb: 6.21.0(@aws-sdk/credential-providers@3.1062.0)(socks@2.8.9) pg: 8.23.0 vite: '@voidzero-dev/vite-plus-core@1.3.0(@tsc-rs/typescript@0.8.0)(@types/node@24.12.4)(@volar/typescript@2.4.28(@tsc-rs/typescript@0.8.0))(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(unrun@0.2.39)(yaml@2.9.0)' @@ -17195,7 +17205,7 @@ snapshots: vitefu: 1.1.3(@types/node@24.12.4)(@volar/typescript@2.4.28(typescript@6.0.3))(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0) xxhash-wasm: 1.1.0 yargs-parser: 22.0.0 - zod: 4.6.5 + zod: 4.6.6 optionalDependencies: sharp: 0.35.5(@types/node@24.12.4) transitivePeerDependencies: @@ -17394,15 +17404,15 @@ snapshots: bluebird@3.7.2: {} - body-parser@2.3.0(supports-color@8.1.1): + body-parser@2.4.0(supports-color@8.1.1): dependencies: bytes: 3.1.2 - content-type: 2.0.0 + content-type: 2.1.0 debug: 4.4.3(supports-color@8.1.1) http-errors: 2.0.1 - iconv-lite: 0.7.2 + iconv-lite: 0.7.3 on-finished: 2.4.1 - qs: 6.16.0 + qs: 6.16.1 raw-body: 3.0.2 type-is: 2.1.0 transitivePeerDependencies: @@ -17722,6 +17732,8 @@ snapshots: content-type@2.0.0: {} + content-type@2.1.0: {} + convert-source-map@2.0.0: {} cookie-es@1.2.3: {} @@ -17982,7 +17994,7 @@ snapshots: get-tsconfig: 4.14.3 jiti: 2.7.0 - drizzle-orm@1.0.0-rc.5-ab785fc(@cloudflare/workers-types@4.20260604.1)(@effect/sql-d1@4.0.0(effect@4.0.5))(@effect/sql-pg@4.0.5(effect@4.0.5))(@effect/sql-sqlite-bun@4.0.0-rc.112(effect@4.0.5))(@effect/sql-sqlite-do@4.0.5(effect@4.0.5))(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(bun-types@1.3.14)(effect@4.0.5)(expo-sqlite@58.0.13(expo@58.0.14)(react-native@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(@react-native/metro-config@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))(@types/react@19.3.0)(bufferutil@4.1.0)(react@19.3.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))(react@19.3.0))(pg@8.23.0)(zod@4.4.3): + drizzle-orm@1.0.0-rc.5-ab785fc(@cloudflare/workers-types@4.20260604.1)(@effect/sql-d1@4.0.0(effect@4.0.5))(@effect/sql-pg@4.0.5(effect@4.0.5))(@effect/sql-sqlite-bun@4.0.0-rc.112(effect@4.0.5))(@effect/sql-sqlite-do@4.0.5(effect@4.0.5))(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(bun-types@1.3.14)(effect@4.0.5)(expo-sqlite@58.0.13(expo@58.0.14)(react-native@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(@react-native/metro-config@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))(@types/react@19.3.0)(bufferutil@4.1.0)(react@19.3.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))(react@19.3.0))(pg@8.23.0)(zod@4.6.6): optionalDependencies: '@cloudflare/workers-types': 4.20260604.1 '@effect/sql-d1': 4.0.0(effect@4.0.5) @@ -17995,7 +18007,7 @@ snapshots: effect: 4.0.5 expo-sqlite: 58.0.13(expo@58.0.14)(react-native@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(@react-native/metro-config@0.88.0(@babel/core@7.29.7(supports-color@8.1.1))(bufferutil@4.1.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))(@types/react@19.3.0)(bufferutil@4.1.0)(react@19.3.0)(supports-color@8.1.1)(utf-8-validate@6.0.6))(react@19.3.0) pg: 8.23.0 - zod: 4.4.3 + zod: 4.6.6 dset@3.1.4: {} @@ -18097,7 +18109,7 @@ snapshots: transitivePeerDependencies: - supports-color - electron@44.9.3(supports-color@8.1.1): + electron@44.10.0(supports-color@8.1.1): dependencies: '@electron-internal/extract-zip': 1.0.5 '@electron/get': 5.1.0(supports-color@8.1.1) @@ -18678,7 +18690,7 @@ snapshots: express@5.2.1(supports-color@8.1.1): dependencies: accepts: 2.0.0 - body-parser: 2.3.0(supports-color@8.1.1) + body-parser: 2.4.0(supports-color@8.1.1) content-disposition: 1.1.0 content-type: 1.0.5 cookie: 0.7.2 @@ -19205,6 +19217,10 @@ snapshots: dependencies: safer-buffer: 2.1.2 + iconv-lite@0.7.3: + dependencies: + safer-buffer: 2.1.2 + idb-keyval@6.2.1: optional: true @@ -19374,7 +19390,7 @@ snapshots: parse5: 8.0.1 saxes: 6.0.0 tough-cookie: 6.0.2 - undici: 8.11.2 + undici: 8.12.2 w3c-xmlserializer: 5.0.0 webidl-conversions: 8.0.1 whatwg-mimetype: 5.0.0 @@ -19457,7 +19473,7 @@ snapshots: tinyglobby: 0.2.17 unbash: 4.0.11 yaml: 2.9.0 - zod: 4.4.3 + zod: 4.6.6 lan-network@0.2.1: {} @@ -20365,7 +20381,7 @@ snapshots: semver: 7.8.5 tar: 7.5.22 tinyglobby: 0.2.17 - undici: 6.29.0 + undici: 6.29.1 which: 6.0.1 node-int64@0.4.0: {} @@ -21059,6 +21075,11 @@ snapshots: es-define-property: 1.0.1 side-channel: 1.1.1 + qs@6.16.1: + dependencies: + es-define-property: 1.0.1 + side-channel: 1.1.1 + quick-lru@5.1.1: {} radix3@1.1.2: {} @@ -22162,12 +22183,12 @@ snapshots: undici-types@7.16.0: {} - undici@6.29.0: {} + undici@6.29.1: {} - undici@7.29.1: + undici@7.30.1: optional: true - undici@8.11.2: {} + undici@8.12.2: {} unenv@2.0.0-rc.24: dependencies: @@ -22198,7 +22219,7 @@ snapshots: dependencies: css-tree: 3.2.1 ohash: 2.0.12 - undici: 8.11.2 + undici: 8.12.2 unist-util-is@6.0.1: dependencies: @@ -22798,17 +22819,13 @@ snapshots: '@yuku-toolchain/types': 0.19.0 yuku-core: 0.19.0 - zod-to-json-schema@3.25.2(zod@4.6.5): + zod-to-json-schema@3.25.2(zod@4.6.6): dependencies: - zod: 4.6.5 + zod: 4.6.6 zod@3.25.76: {} - zod@4.4.3: {} - - zod@4.5.4: {} - - zod@4.6.5: {} + zod@4.6.6: {} zustand@5.0.14(@types/react@19.3.0)(react@19.3.0)(use-sync-external-store@1.6.0(react@19.3.0)): optionalDependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index b9ec7827cc65d..4d302134bd4a7 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -71,7 +71,7 @@ catalog: tailwindcss: 4.3.3 tldts: 7.4.2 typescript: npm:@tsc-rs/typescript@0.8.0 - undici: 8.11.2 + undici: 8.12.2 vite: npm:@voidzero-dev/vite-plus-core@1.3.0 vite-plus: 1.3.0 ws: 8.22.0 @@ -153,7 +153,12 @@ minimumReleaseAgeExclude: - expo-sharing@58.0.19 - expo-sqlite@58.0.13 - expo-symbols@58.0.4 - - electron@44.9.3 + - electron@44.10.0 + - undici@8.12.2 + - undici@7.30.1 + - undici@6.29.1 + - zod@4.6.6 + - body-parser@2.4.0 - "@anthropic-ai/claude-agent-sdk@0.3.276" - "@alchemy.run/cloudflare-runtime@2.0.0-beta.80" - "@alchemy.run/floci@2.0.0-beta.80" @@ -308,10 +313,13 @@ overrides: "@electron-webauthn/macos>objc-js": "catalog:" lightningcss: "catalog:" tailwindcss: "catalog:" - # Ranges from @effect/platform-node, jsdom, unifont, Expo and libsql otherwise - # settle on two patch releases of each major. Older majors stay as they are. + # Collapse transport type versions and keep each Undici major on its security-fixed release. "@types/ws@^8": "catalog:" "undici@^8": "catalog:" + "undici@^7": 7.30.1 + "undici@^6": 6.29.1 + "zod@^4": 4.6.6 + "body-parser@^2": 2.4.0 "ws@^8": "catalog:" vite: "catalog:" vite-plus: "catalog:" From 9accbf53ffb8241efc6037d84b413e4afb9ca1e6 Mon Sep 17 00:00:00 2001 From: Unlock Digital <134563073+unlockdigital@users.noreply.github.com> Date: Tue, 27 Oct 2026 17:09:08 -0500 Subject: [PATCH 3/3] fix(release): scope fresh trials to qualified providers --- docs/unlock-digital/PORTABLE_TRIAL.md | 2 ++ packaging/fork/Launch Unlock Digital Trial.command | 14 +++++++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/docs/unlock-digital/PORTABLE_TRIAL.md b/docs/unlock-digital/PORTABLE_TRIAL.md index 001366869e5ab..b920342ab531f 100644 --- a/docs/unlock-digital/PORTABLE_TRIAL.md +++ b/docs/unlock-digital/PORTABLE_TRIAL.md @@ -19,6 +19,8 @@ The package carries the fork's code, interface, and bundled application runtime. In Settings, configure the providers you want to test and follow their supported sign-in flow on this Mac. Follow the bundled [provider setup guidance](../user/install.md#providers) for provider CLIs. If this Mac already has CLI accounts, create separate connection homes when testing fresh account sign-ins. Select the intended connection explicitly before running a task. +Use Codex or Claude for the initial qualification. The starter profile keeps Cursor disabled while its legacy Zod v3 input-validation path receives further advisory and transport-limit review. Existing trial settings are preserved. Enabling Cursor expands beyond this preview's qualified trial scope. + Usage windows and billing links describe provider-reported evidence. Account routing supplies a preview and keeps automatic dispatch disabled. Grant coordinator approval authority explicitly to the chosen thread, and check its destination and permission limits. Replacing or resetting that shortcut requires successful revocation of the previous environment's grant. N2ition is optional and starts without a live grant on a clean installation. An owner must qualify and enroll the destination's inference route and connector separately. A grant's approved route must match the effective provider configuration; route changes require requalification. Personal project launch restrictions are environment-local policy and can be provisioned separately by the owner. diff --git a/packaging/fork/Launch Unlock Digital Trial.command b/packaging/fork/Launch Unlock Digital Trial.command index 9b25b823aa3fc..e4581fdbe65fa 100755 --- a/packaging/fork/Launch Unlock Digital Trial.command +++ b/packaging/fork/Launch Unlock Digital Trial.command @@ -1,7 +1,7 @@ #!/bin/zsh set -euo pipefail -T3_TRIAL_ROOT="${HOME}/Library/Application Support/T3 Code Unlock Digital Trial" +T3_TRIAL_ROOT="${T3CODE_TRIAL_PROFILE_DIR:-${HOME}/Library/Application Support/T3 Code Unlock Digital Trial}" T3_TRIAL_APP="${T3CODE_TRIAL_APP_PATH:-/Applications/T3 Code Unlock Digital Preview.app}" if [[ ! -d "$T3_TRIAL_APP" ]]; then print -u2 'Install the fork preview as /Applications/T3 Code Unlock Digital Preview.app, then run this launcher again.' @@ -15,6 +15,18 @@ fi T3_TRIAL_EXECUTABLE="$(/usr/libexec/PlistBuddy -c 'Print :CFBundleExecutable' "$T3_TRIAL_APP/Contents/Info.plist")" mkdir -p "$T3_TRIAL_ROOT" chmod 700 "$T3_TRIAL_ROOT" +mkdir -p "$T3_TRIAL_ROOT/server/userdata" +chmod 700 "$T3_TRIAL_ROOT/server" "$T3_TRIAL_ROOT/server/userdata" +if [[ ! -e "$T3_TRIAL_ROOT/server/userdata/settings.json" ]]; then + # Keep the initial trial within the qualified provider scope; retain existing owner settings. + ( + umask 077 + set -o noclobber + cat > "$T3_TRIAL_ROOT/server/userdata/settings.json" <<'JSON' +{"providerInstances":{"cursor":{"driver":"cursor","enabled":false}}} +JSON + ) +fi export T3CODE_HOME="$T3_TRIAL_ROOT/server" export T3CODE_DESKTOP_APP_DATA_DIR="$T3_TRIAL_ROOT/desktop" export T3CODE_TELEMETRY_ENABLED=false