@tuturuuu/utils 0.30.0 → 0.32.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 +32 -0
- package/package.json +3 -3
- package/src/commercial-comparison.ts +14 -0
- package/src/devbox-control.ts +23 -0
- package/src/platform-release.test.ts +1 -1
- package/src/platform-release.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.32.0](https://github.com/tutur3u/platform/compare/utils-v0.31.0...utils-v0.32.0) (2026-09-29)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **cron:** gate immediate recovery on Cloudflare ([546f389](https://github.com/tutur3u/platform/commit/546f3899143c09d52dfa198698b1c4310b860db2)) ([#5615](https://github.com/tutur3u/platform/issues/5615)) ([8eac476](https://github.com/tutur3u/platform/commit/8eac47606da1e1295cb3e6c80c96e5b4d3750068))
|
|
9
|
+
* **devboxes:** route agent control through Cloudflare ([98d4580](https://github.com/tutur3u/platform/commit/98d4580b39308fdd835e1762ebad102fe6ca3f02)) ([#5614](https://github.com/tutur3u/platform/issues/5614)) ([cbd18fa](https://github.com/tutur3u/platform/commit/cbd18fa70ee2d88c8b7e607ab56631c581b723c9))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* **devboxes:** load Durable Object base and register internal app ([50a4ed0](https://github.com/tutur3u/platform/commit/50a4ed0dd5f639c44f513e6d7e2ca663452b76bb))
|
|
15
|
+
|
|
16
|
+
## [0.31.0](https://github.com/tutur3u/platform/compare/utils-v0.30.0...utils-v0.31.0) (2026-09-25)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Features
|
|
20
|
+
|
|
21
|
+
* **auth:** enforce required account MFA lifecycle ([e08f27d](https://github.com/tutur3u/platform/commit/e08f27dbc082f7d9c951bb0792357638f3dcfb0a)) ([#5448](https://github.com/tutur3u/platform/issues/5448)) ([d7a5ed4](https://github.com/tutur3u/platform/commit/d7a5ed453963e619bd1dc3bd8c8a18c5e027317c))
|
|
22
|
+
* **calendar:** add provider invitation and RSVP adapters ([90aa756](https://github.com/tutur3u/platform/commit/90aa756e4834f9ee441182a64cb4ca003fa8e867))
|
|
23
|
+
* **calendar:** deliver retry-safe meeting invitations and RSVP ([#5410](https://github.com/tutur3u/platform/issues/5410)) ([40fa0cc](https://github.com/tutur3u/platform/commit/40fa0cccd4b068cb26787a7b7d7cd55eef86782e))
|
|
24
|
+
* **infrastructure:** coordinate authenticator and meeting leases on Cloudflare ([2582bf2](https://github.com/tutur3u/platform/commit/2582bf2f72670e1f2696de80820eddd118c27d29))
|
|
25
|
+
* **infrastructure:** use Cloudflare for authenticator and meeting coordination ([#5411](https://github.com/tutur3u/platform/issues/5411)) ([a154602](https://github.com/tutur3u/platform/commit/a15460282959831fe617494126d9955b772957aa))
|
|
26
|
+
* **parley:** add private multiplayer training and shared AI Hub billing ([#5505](https://github.com/tutur3u/platform/issues/5505)) ([038e05c](https://github.com/tutur3u/platform/commit/038e05c69a0e4a080f62d6441ae4dd2b15721dba))
|
|
27
|
+
* **parley:** share Meet runtime and integrate private training with AI Hub billing ([66d40e2](https://github.com/tutur3u/platform/commit/66d40e23a8110bd43be652e1181205cf50e506ab))
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### Bug Fixes
|
|
31
|
+
|
|
32
|
+
* **auth:** reuse completed session-bound challenges ([b63d510](https://github.com/tutur3u/platform/commit/b63d51046b427350d959137cf37058223e544788))
|
|
33
|
+
* **mobile:** repair Live persistence and reuse session verification ([#5436](https://github.com/tutur3u/platform/issues/5436)) ([cb452e1](https://github.com/tutur3u/platform/commit/cb452e1908eab3db2dce9dfd1d57d721284a2e49))
|
|
34
|
+
|
|
3
35
|
## [0.30.0](https://github.com/tutur3u/platform/compare/utils-v0.29.1...utils-v0.30.0) (2026-09-25)
|
|
4
36
|
|
|
5
37
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tuturuuu/utils",
|
|
3
3
|
"license": "MIT",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.32.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/tutur3u/platform",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@tiptap/react": "3.31.3",
|
|
25
25
|
"@tuturuuu/google": "0.1.1",
|
|
26
26
|
"@tuturuuu/icons": "0.1.1",
|
|
27
|
-
"@tuturuuu/internal-api": "0.
|
|
27
|
+
"@tuturuuu/internal-api": "0.46.0",
|
|
28
28
|
"@tuturuuu/supabase": "0.5.2",
|
|
29
29
|
"@upstash/ratelimit": "^2.0.8",
|
|
30
30
|
"@upstash/redis": "^1.38.4",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"zod": "^4.6.2"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@tuturuuu/types": "0.
|
|
48
|
+
"@tuturuuu/types": "0.33.0",
|
|
49
49
|
"@tuturuuu/typescript-config": "0.1.2",
|
|
50
50
|
"@types/diff": "^8.0.0",
|
|
51
51
|
"@types/node": "^26.5.1",
|
|
@@ -9,6 +9,20 @@ import { features2 } from './commercial-comparison-2';
|
|
|
9
9
|
|
|
10
10
|
const gateOrder = ['FREE', 'PLUS', 'PRO', 'ENTERPRISE'];
|
|
11
11
|
const advanced: ComparisonFeature[] = [
|
|
12
|
+
{
|
|
13
|
+
id: 'cronControl',
|
|
14
|
+
app: 'cron-control',
|
|
15
|
+
category: 'internal',
|
|
16
|
+
detail: 'standard',
|
|
17
|
+
values: ['internal', 'internal', 'internal', 'internal'],
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
id: 'devboxControl',
|
|
21
|
+
app: 'devbox-control',
|
|
22
|
+
category: 'internal',
|
|
23
|
+
detail: 'standard',
|
|
24
|
+
values: ['internal', 'internal', 'internal', 'internal'],
|
|
25
|
+
},
|
|
12
26
|
{
|
|
13
27
|
id: 'parley_0',
|
|
14
28
|
app: 'parley',
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** Best-effort wake signal. The runner also polls, so enqueue never depends on it. */
|
|
2
|
+
export async function notifyDevboxRun(runId: string) {
|
|
3
|
+
const origin = process.env.TUTURUUU_DEVBOX_CONTROL_URL?.trim();
|
|
4
|
+
const token = process.env.TUTURUUU_DEVBOX_CONTROL_TOKEN?.trim();
|
|
5
|
+
if (!origin || !token) return;
|
|
6
|
+
try {
|
|
7
|
+
const url = new URL('/v1/notify', origin);
|
|
8
|
+
if (url.protocol !== 'https:') throw new Error('Invalid control URL');
|
|
9
|
+
const response = await fetch(url, {
|
|
10
|
+
method: 'POST',
|
|
11
|
+
headers: {
|
|
12
|
+
Authorization: `Bearer ${token}`,
|
|
13
|
+
'Content-Type': 'application/json',
|
|
14
|
+
},
|
|
15
|
+
body: JSON.stringify({ runId }),
|
|
16
|
+
signal: AbortSignal.timeout(2000),
|
|
17
|
+
});
|
|
18
|
+
if (!response.ok)
|
|
19
|
+
console.warn('Devbox wake signal rejected', response.status);
|
|
20
|
+
} catch {
|
|
21
|
+
console.warn('Devbox wake signal unavailable');
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
|
|
8
8
|
describe('platform release metadata', () => {
|
|
9
9
|
it('uses the centralized shared browser app version', () => {
|
|
10
|
-
expect(TUTURUUU_PLATFORM_VERSION).toBe('0.
|
|
10
|
+
expect(TUTURUUU_PLATFORM_VERSION).toBe('0.61.0'); // x-release-please-version
|
|
11
11
|
});
|
|
12
12
|
|
|
13
13
|
it('preserves the source timestamp in builtAt and derives a short hash', () => {
|
package/src/platform-release.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PLATFORM_BUILD_METADATA } from './generated/platform-build-metadata';
|
|
2
2
|
|
|
3
|
-
export const TUTURUUU_PLATFORM_VERSION = '0.
|
|
3
|
+
export const TUTURUUU_PLATFORM_VERSION = '0.61.0'; // x-release-please-version
|
|
4
4
|
|
|
5
5
|
export type PlatformBuildMetadataInput = {
|
|
6
6
|
/** ISO timestamp of the source commit used for the build, not deployment time. */
|