@tuturuuu/utils 0.18.0 → 0.20.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 +46 -0
- package/package.json +3 -3
- package/src/__tests__/app-url.test.ts +1 -0
- package/src/common/metadata.test.ts +1 -1
- package/src/internal-domains.ts +12 -0
- package/src/launchable-apps.ts +13 -0
- package/src/permissions.tsx +64 -0
- package/src/platform-release.test.ts +1 -1
- package/src/platform-release.ts +1 -1
- package/src/portless.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,51 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.20.0](https://github.com/tutur3u/platform/compare/utils-v0.19.0...utils-v0.20.0) (2026-07-27)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **ai:** add workspace AI Studio and legal coverage ([6de4e39](https://github.com/tutur3u/platform/commit/6de4e395cc5568f4943604ac667e3cebf324be13))
|
|
9
|
+
* **apps:** unify and redesign app catalog ([b679068](https://github.com/tutur3u/platform/commit/b679068339143a83b38610f363bec7f53ddc3706))
|
|
10
|
+
* **contacts:** migrate users attendance; add satellite-safe workspace-user link helper ([8f53453](https://github.com/tutur3u/platform/commit/8f534533793af8d25e7c2eca6e0147e459d78bbe))
|
|
11
|
+
* **contacts:** migrate users topic-announcements module ([01e19ab](https://github.com/tutur3u/platform/commit/01e19ab60461ccd94a0374bed74ce6e4d5d38a3b))
|
|
12
|
+
* **forms:** merge satellite migration ([e739f1b](https://github.com/tutur3u/platform/commit/e739f1bead568905458a42373ae24d13cd778907))
|
|
13
|
+
* **forms:** migrate product to satellite app ([51b9392](https://github.com/tutur3u/platform/commit/51b93928f1a12ebd4f4c753595fb33902ebfa66c))
|
|
14
|
+
* **infrastructure:** manage internal accounts ([02fd9f3](https://github.com/tutur3u/platform/commit/02fd9f3d1b4edb23c881e2dbb04bf244b36e6ed0))
|
|
15
|
+
* **inventory:** secure Square POS event checkout ([532b463](https://github.com/tutur3u/platform/commit/532b46372116ee0bebfd83ba2af762cc9f668c3c))
|
|
16
|
+
* **offline:** own service worker runtime and refresh dependencies ([ae44477](https://github.com/tutur3u/platform/commit/ae44477603c39f0513244514771653287338a89f))
|
|
17
|
+
* **reports:** add periodic reporting automation ([ec7bd5e](https://github.com/tutur3u/platform/commit/ec7bd5e10abb137e217d1dcf143624530276392f))
|
|
18
|
+
* **seo:** improve discovery metadata ([a574409](https://github.com/tutur3u/platform/commit/a57440984df45086c4989db07b02d402dd93c828))
|
|
19
|
+
* **seo:** improve discovery metadata ([8e2420d](https://github.com/tutur3u/platform/commit/8e2420d49e7b94c462d92222ea8f239ab92564f6))
|
|
20
|
+
* **seo:** improve page metadata ([0c621cb](https://github.com/tutur3u/platform/commit/0c621cb7fc1253b0a11ea21992503274052c6be0))
|
|
21
|
+
* **seo:** standardize app metadata ([6523d91](https://github.com/tutur3u/platform/commit/6523d91fedf38e19804d10ea3b82890db180bc6f))
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Bug Fixes
|
|
25
|
+
|
|
26
|
+
* **chat:** harden personal Zalo integration ([f1d12c6](https://github.com/tutur3u/platform/commit/f1d12c60fe12ab3b01a1be3f0381573d44a32226))
|
|
27
|
+
* **ci:** keep task helper collection source-only ([7355a05](https://github.com/tutur3u/platform/commit/7355a05385ccd8d1e2d1bcf6ac15ae5297e057ad))
|
|
28
|
+
* **contacts:** restore group post mutations ([fe621e4](https://github.com/tutur3u/platform/commit/fe621e4d7e4126f705082cc3e815aafdeebe535a))
|
|
29
|
+
* **e2e:** run tasks lifecycle in CI ([bed2cd5](https://github.com/tutur3u/platform/commit/bed2cd590572748f65e75fcb15b7e4b714b9034c))
|
|
30
|
+
* **inventory:** harden sales analytics and access ([53968d3](https://github.com/tutur3u/platform/commit/53968d38a0c5425a3c1065ab2f645e30a0145c8f))
|
|
31
|
+
* **mobile:** preserve bearer auth across satellites ([f890170](https://github.com/tutur3u/platform/commit/f89017044cf3aaaa6a1b15c31c64a81d75cfdab2))
|
|
32
|
+
* resolve code quality findings ([63f10b5](https://github.com/tutur3u/platform/commit/63f10b5ec22a4194f48f448ee2b1b088b5da8f08))
|
|
33
|
+
* **security:** prevent clickjacking across apps ([c8ed36e](https://github.com/tutur3u/platform/commit/c8ed36e708c08ebe3b17ee7f6249513644108c48))
|
|
34
|
+
* **security:** remediate code scanning findings ([023db2e](https://github.com/tutur3u/platform/commit/023db2edf4b0557be108a9d772cbc7e2223af947))
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
### Performance Improvements
|
|
38
|
+
|
|
39
|
+
* **ci:** enable repository-wide remote caching ([6250f91](https://github.com/tutur3u/platform/commit/6250f91d745ef987a4fc86c797aedf41542f421b))
|
|
40
|
+
* **storefront:** share customer navigation shell ([21cb78d](https://github.com/tutur3u/platform/commit/21cb78db484d1e1fdb9f2469fcac4e3a948bd176))
|
|
41
|
+
|
|
42
|
+
## [0.19.0](https://github.com/tutur3u/platform/compare/utils-v0.18.0...utils-v0.19.0) (2026-07-27)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
### Features
|
|
46
|
+
|
|
47
|
+
* **ai:** add workspace AI Studio and legal coverage ([6de4e39](https://github.com/tutur3u/platform/commit/6de4e395cc5568f4943604ac667e3cebf324be13))
|
|
48
|
+
|
|
3
49
|
## [0.18.0](https://github.com/tutur3u/platform/compare/utils-v0.17.0...utils-v0.18.0) (2026-07-25)
|
|
4
50
|
|
|
5
51
|
|
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.20.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.28.0",
|
|
25
25
|
"@tuturuuu/google": "0.1.0",
|
|
26
26
|
"@tuturuuu/icons": "0.1.0",
|
|
27
|
-
"@tuturuuu/internal-api": "0.
|
|
27
|
+
"@tuturuuu/internal-api": "0.24.0",
|
|
28
28
|
"@tuturuuu/supabase": "0.5.0",
|
|
29
29
|
"@upstash/ratelimit": "^2.0.8",
|
|
30
30
|
"@upstash/redis": "^1.38.0",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"zod": "^4.4.3"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@tuturuuu/types": "0.
|
|
48
|
+
"@tuturuuu/types": "0.23.0",
|
|
49
49
|
"@tuturuuu/typescript-config": "0.1.1",
|
|
50
50
|
"@types/diff": "^8.0.0",
|
|
51
51
|
"@types/node": "^26.1.1",
|
|
@@ -287,6 +287,7 @@ describe('Portless app origin registry', () => {
|
|
|
287
287
|
'*.tuturuuu.localhost',
|
|
288
288
|
]);
|
|
289
289
|
expect(Object.values(TUTURUUU_PORTLESS_APP_ORIGINS)).toEqual([
|
|
290
|
+
'https://ai.tuturuuu.localhost',
|
|
290
291
|
'https://apps.tuturuuu.localhost',
|
|
291
292
|
'https://calendar.tuturuuu.localhost',
|
|
292
293
|
'https://chat.tuturuuu.localhost',
|
|
@@ -326,7 +326,7 @@ describe('application metadata coverage', () => {
|
|
|
326
326
|
)
|
|
327
327
|
.map((entry) => resolve(entry.parentPath, entry.name));
|
|
328
328
|
|
|
329
|
-
expect(marketingLayouts).toHaveLength(
|
|
329
|
+
expect(marketingLayouts).toHaveLength(37);
|
|
330
330
|
for (const layoutPath of marketingLayouts) {
|
|
331
331
|
expect(readFileSync(layoutPath, 'utf8')).toMatch(/pathname:\s*['`]/);
|
|
332
332
|
}
|
package/src/internal-domains.ts
CHANGED
|
@@ -4,6 +4,10 @@ import {
|
|
|
4
4
|
} from './portless';
|
|
5
5
|
|
|
6
6
|
export const PRODUCTION_INTERNAL_APP_DOMAINS = [
|
|
7
|
+
{
|
|
8
|
+
name: 'ai',
|
|
9
|
+
url: 'https://ai.tuturuuu.com',
|
|
10
|
+
},
|
|
7
11
|
{
|
|
8
12
|
name: 'apps',
|
|
9
13
|
url: 'https://apps.tuturuuu.com',
|
|
@@ -123,6 +127,10 @@ export const PRODUCTION_INTERNAL_APP_DOMAINS = [
|
|
|
123
127
|
] as const;
|
|
124
128
|
|
|
125
129
|
export const PORTLESS_INTERNAL_APP_DOMAINS = [
|
|
130
|
+
{
|
|
131
|
+
name: 'ai',
|
|
132
|
+
url: getTuturuuuPortlessAppOrigin('ai'),
|
|
133
|
+
},
|
|
126
134
|
{
|
|
127
135
|
name: 'apps',
|
|
128
136
|
url: getTuturuuuPortlessAppOrigin('apps'),
|
|
@@ -234,6 +242,10 @@ export const PORTLESS_INTERNAL_APP_DOMAINS = [
|
|
|
234
242
|
] as const;
|
|
235
243
|
|
|
236
244
|
export const LOCALHOST_INTERNAL_APP_DOMAINS = [
|
|
245
|
+
{
|
|
246
|
+
name: 'ai',
|
|
247
|
+
url: 'http://localhost:7829',
|
|
248
|
+
},
|
|
237
249
|
{
|
|
238
250
|
name: 'apps',
|
|
239
251
|
url: 'http://localhost:7818',
|
package/src/launchable-apps.ts
CHANGED
|
@@ -237,6 +237,19 @@ export const LAUNCHABLE_APPS = [
|
|
|
237
237
|
title: 'Mind',
|
|
238
238
|
workspacePathResolver: workspaceRootPath,
|
|
239
239
|
},
|
|
240
|
+
{
|
|
241
|
+
aliases: ['AI Studio', 'API', 'Models', 'Agents', 'Evaluations'],
|
|
242
|
+
appRoot: 'apps/ai',
|
|
243
|
+
category: 'ai',
|
|
244
|
+
defaultPath: '/playground',
|
|
245
|
+
localhostOrigin: 'http://localhost:7829',
|
|
246
|
+
packageName: '@tuturuuu/ai-studio',
|
|
247
|
+
portlessApp: 'ai',
|
|
248
|
+
productionUrl: 'https://ai.tuturuuu.com',
|
|
249
|
+
slug: 'ai',
|
|
250
|
+
title: 'AI Studio',
|
|
251
|
+
workspacePathResolver: workspaceRootPath,
|
|
252
|
+
},
|
|
240
253
|
{
|
|
241
254
|
aliases: ['Prompt', 'Challenges'],
|
|
242
255
|
appRoot: 'apps/nova',
|
package/src/permissions.tsx
CHANGED
|
@@ -315,6 +315,70 @@ export const permissionGroups = ({
|
|
|
315
315
|
disableOnProduction: false,
|
|
316
316
|
disabled: false,
|
|
317
317
|
},
|
|
318
|
+
{
|
|
319
|
+
id: 'use_ai_studio',
|
|
320
|
+
icon: <Sparkles />,
|
|
321
|
+
title: t('ws-roles.use_ai_studio'),
|
|
322
|
+
description: t('ws-roles.use_ai_studio_description'),
|
|
323
|
+
disableOnProduction: false,
|
|
324
|
+
disabled: false,
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
id: 'manage_ai_keys',
|
|
328
|
+
icon: <KeyRound />,
|
|
329
|
+
title: t('ws-roles.manage_ai_keys'),
|
|
330
|
+
description: t('ws-roles.manage_ai_keys_description'),
|
|
331
|
+
disableOnProduction: false,
|
|
332
|
+
disabled: false,
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
id: 'manage_ai_policy',
|
|
336
|
+
icon: <Settings2 />,
|
|
337
|
+
title: t('ws-roles.manage_ai_policy'),
|
|
338
|
+
description: t('ws-roles.manage_ai_policy_description'),
|
|
339
|
+
disableOnProduction: false,
|
|
340
|
+
disabled: false,
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
id: 'manage_ai_prompts',
|
|
344
|
+
icon: <FileText />,
|
|
345
|
+
title: t('ws-roles.manage_ai_prompts'),
|
|
346
|
+
description: t('ws-roles.manage_ai_prompts_description'),
|
|
347
|
+
disableOnProduction: false,
|
|
348
|
+
disabled: false,
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
id: 'manage_ai_agents',
|
|
352
|
+
icon: <CircuitBoard />,
|
|
353
|
+
title: t('ws-roles.manage_ai_agents'),
|
|
354
|
+
description: t('ws-roles.manage_ai_agents_description'),
|
|
355
|
+
disableOnProduction: false,
|
|
356
|
+
disabled: false,
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
id: 'manage_ai_evaluations',
|
|
360
|
+
icon: <FlaskConical />,
|
|
361
|
+
title: t('ws-roles.manage_ai_evaluations'),
|
|
362
|
+
description: t('ws-roles.manage_ai_evaluations_description'),
|
|
363
|
+
disableOnProduction: false,
|
|
364
|
+
disabled: false,
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
id: 'view_ai_usage',
|
|
368
|
+
icon: <ChartBar />,
|
|
369
|
+
title: t('ws-roles.view_ai_usage'),
|
|
370
|
+
description: t('ws-roles.view_ai_usage_description'),
|
|
371
|
+
disableOnProduction: false,
|
|
372
|
+
disabled: false,
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
id: 'view_ai_logs',
|
|
376
|
+
icon: <ScrollText />,
|
|
377
|
+
title: t('ws-roles.view_ai_logs'),
|
|
378
|
+
description: t('ws-roles.view_ai_logs_description'),
|
|
379
|
+
disableOnProduction: false,
|
|
380
|
+
disabled: false,
|
|
381
|
+
},
|
|
318
382
|
],
|
|
319
383
|
},
|
|
320
384
|
{
|
|
@@ -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.29.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.29.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. */
|
package/src/portless.ts
CHANGED
|
@@ -6,6 +6,7 @@ export const TUTURUUU_PORTLESS_ALLOWED_DEV_ORIGINS = [
|
|
|
6
6
|
] as const;
|
|
7
7
|
|
|
8
8
|
export const TUTURUUU_PORTLESS_APP_ORIGINS = {
|
|
9
|
+
ai: `https://ai.${TUTURUUU_PORTLESS_ROOT_HOST}`,
|
|
9
10
|
apps: `https://apps.${TUTURUUU_PORTLESS_ROOT_HOST}`,
|
|
10
11
|
calendar: `https://calendar.${TUTURUUU_PORTLESS_ROOT_HOST}`,
|
|
11
12
|
chat: `https://chat.${TUTURUUU_PORTLESS_ROOT_HOST}`,
|