@tuturuuu/utils 0.17.0 → 0.18.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 +12 -0
- package/biome.json +1 -1
- package/package.json +12 -12
- package/src/__tests__/app-url.test.ts +1 -0
- package/src/internal-domains.ts +12 -0
- package/src/launchable-apps.test.ts +6 -0
- package/src/launchable-apps.ts +13 -0
- package/src/permissions.tsx +28 -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,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.18.0](https://github.com/tutur3u/platform/compare/utils-v0.17.0...utils-v0.18.0) (2026-07-25)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **apps:** unify and redesign app catalog ([b679068](https://github.com/tutur3u/platform/commit/b679068339143a83b38610f363bec7f53ddc3706))
|
|
9
|
+
* **forms:** merge satellite migration ([e739f1b](https://github.com/tutur3u/platform/commit/e739f1bead568905458a42373ae24d13cd778907))
|
|
10
|
+
* **forms:** migrate product to satellite app ([51b9392](https://github.com/tutur3u/platform/commit/51b93928f1a12ebd4f4c753595fb33902ebfa66c))
|
|
11
|
+
* **inventory:** secure Square POS event checkout ([532b463](https://github.com/tutur3u/platform/commit/532b46372116ee0bebfd83ba2af762cc9f668c3c))
|
|
12
|
+
* **offline:** own service worker runtime and refresh dependencies ([ae44477](https://github.com/tutur3u/platform/commit/ae44477603c39f0513244514771653287338a89f))
|
|
13
|
+
* **reports:** add periodic reporting automation ([ec7bd5e](https://github.com/tutur3u/platform/commit/ec7bd5e10abb137e217d1dcf143624530276392f))
|
|
14
|
+
|
|
3
15
|
## [0.17.0](https://github.com/tutur3u/platform/compare/utils-v0.16.0...utils-v0.17.0) (2026-07-21)
|
|
4
16
|
|
|
5
17
|
|
package/biome.json
CHANGED
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.18.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/tutur3u/platform",
|
|
@@ -19,25 +19,25 @@
|
|
|
19
19
|
"@dnd-kit/core": "^6.3.1",
|
|
20
20
|
"@noble/ciphers": "^2.2.0",
|
|
21
21
|
"@noble/hashes": "^2.2.0",
|
|
22
|
-
"@tanstack/react-query": "^5.101.
|
|
22
|
+
"@tanstack/react-query": "^5.101.4",
|
|
23
23
|
"@tiptap/core": "3.28.0",
|
|
24
24
|
"@tiptap/react": "3.28.0",
|
|
25
|
-
"@tuturuuu/google": "0.0
|
|
26
|
-
"@tuturuuu/icons": "0.0
|
|
27
|
-
"@tuturuuu/internal-api": "0.
|
|
28
|
-
"@tuturuuu/supabase": "0.
|
|
25
|
+
"@tuturuuu/google": "0.1.0",
|
|
26
|
+
"@tuturuuu/icons": "0.1.0",
|
|
27
|
+
"@tuturuuu/internal-api": "0.21.0",
|
|
28
|
+
"@tuturuuu/supabase": "0.5.0",
|
|
29
29
|
"@upstash/ratelimit": "^2.0.8",
|
|
30
30
|
"@upstash/redis": "^1.38.0",
|
|
31
31
|
"clsx": "^2.1.1",
|
|
32
32
|
"date-fns": "^4.4.0",
|
|
33
|
-
"dayjs": "^1.11.
|
|
33
|
+
"dayjs": "^1.11.21",
|
|
34
34
|
"diff": "^9.0.0",
|
|
35
35
|
"effect": "^3.22.0",
|
|
36
36
|
"moment": "^2.30.1",
|
|
37
|
-
"next": "^16.3.0-preview.
|
|
37
|
+
"next": "^16.3.0-preview.9",
|
|
38
38
|
"prosemirror-model": "^1.25.11",
|
|
39
|
-
"react": "^19.2.
|
|
40
|
-
"react-dom": "^19.2.
|
|
39
|
+
"react": "^19.2.8",
|
|
40
|
+
"react-dom": "^19.2.8",
|
|
41
41
|
"tailwind-merge": "^3.6.0",
|
|
42
42
|
"uuid": "^14.0.1",
|
|
43
43
|
"y-prosemirror": "^1.3.7",
|
|
@@ -45,12 +45,12 @@
|
|
|
45
45
|
"zod": "^4.4.3"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@tuturuuu/types": "0.
|
|
48
|
+
"@tuturuuu/types": "0.20.0",
|
|
49
49
|
"@tuturuuu/typescript-config": "0.1.1",
|
|
50
50
|
"@types/diff": "^8.0.0",
|
|
51
51
|
"@types/node": "^26.1.1",
|
|
52
52
|
"@types/react": "^19.2.17",
|
|
53
|
-
"@vitejs/plugin-react": "^6.0.
|
|
53
|
+
"@vitejs/plugin-react": "^6.0.4",
|
|
54
54
|
"typescript": "7.0.2",
|
|
55
55
|
"vite": "^8.1.5",
|
|
56
56
|
"vitest": "^4.1.10"
|
|
@@ -296,6 +296,7 @@ describe('Portless app origin registry', () => {
|
|
|
296
296
|
'https://drive.tuturuuu.localhost',
|
|
297
297
|
'https://external.tuturuuu.localhost',
|
|
298
298
|
'https://finance.tuturuuu.localhost',
|
|
299
|
+
'https://forms.tuturuuu.localhost',
|
|
299
300
|
'https://hive.tuturuuu.localhost',
|
|
300
301
|
'https://realtime.hive.tuturuuu.localhost',
|
|
301
302
|
'https://infra.tuturuuu.localhost',
|
package/src/internal-domains.ts
CHANGED
|
@@ -108,6 +108,10 @@ export const PRODUCTION_INTERNAL_APP_DOMAINS = [
|
|
|
108
108
|
name: 'contacts',
|
|
109
109
|
url: 'https://contacts.tuturuuu.com',
|
|
110
110
|
},
|
|
111
|
+
{
|
|
112
|
+
name: 'forms',
|
|
113
|
+
url: 'https://forms.tuturuuu.com',
|
|
114
|
+
},
|
|
111
115
|
{
|
|
112
116
|
name: 'hive',
|
|
113
117
|
url: 'https://hive.tuturuuu.com',
|
|
@@ -215,6 +219,10 @@ export const PORTLESS_INTERNAL_APP_DOMAINS = [
|
|
|
215
219
|
name: 'contacts',
|
|
216
220
|
url: getTuturuuuPortlessAppOrigin('contacts'),
|
|
217
221
|
},
|
|
222
|
+
{
|
|
223
|
+
name: 'forms',
|
|
224
|
+
url: getTuturuuuPortlessAppOrigin('forms'),
|
|
225
|
+
},
|
|
218
226
|
{
|
|
219
227
|
name: 'hive',
|
|
220
228
|
url: getTuturuuuPortlessAppOrigin('hive'),
|
|
@@ -318,6 +326,10 @@ export const LOCALHOST_INTERNAL_APP_DOMAINS = [
|
|
|
318
326
|
name: 'contacts',
|
|
319
327
|
url: 'http://localhost:7827',
|
|
320
328
|
},
|
|
329
|
+
{
|
|
330
|
+
name: 'forms',
|
|
331
|
+
url: 'http://localhost:7828',
|
|
332
|
+
},
|
|
321
333
|
{
|
|
322
334
|
name: 'hive',
|
|
323
335
|
url: 'http://localhost:7814',
|
|
@@ -25,7 +25,13 @@ const teamWorkspace: LaunchableWorkspace = {
|
|
|
25
25
|
describe('launchable apps', () => {
|
|
26
26
|
it('resolves apps by slug, title, and aliases', () => {
|
|
27
27
|
expect(getLaunchableApp('calendar')?.title).toBe('Calendar');
|
|
28
|
+
expect(getLaunchableApp('forms')).toMatchObject({
|
|
29
|
+
appRoot: 'apps/forms',
|
|
30
|
+
productionUrl: 'https://forms.tuturuuu.com',
|
|
31
|
+
title: 'Forms',
|
|
32
|
+
});
|
|
28
33
|
expect(getLaunchableAppByTitle('Tuturuuu')?.slug).toBe('platform');
|
|
34
|
+
expect(getLaunchableAppByTitle('questionnaires')?.slug).toBe('forms');
|
|
29
35
|
expect(getLaunchableAppByTitle('apps gateway')?.slug).toBe('apps');
|
|
30
36
|
});
|
|
31
37
|
|
package/src/launchable-apps.ts
CHANGED
|
@@ -336,6 +336,19 @@ export const LAUNCHABLE_APPS = [
|
|
|
336
336
|
title: 'Contacts',
|
|
337
337
|
workspacePathResolver: workspaceRootPath,
|
|
338
338
|
},
|
|
339
|
+
{
|
|
340
|
+
aliases: ['Surveys', 'Questionnaires', 'Responses', 'Form Builder'],
|
|
341
|
+
appRoot: 'apps/forms',
|
|
342
|
+
category: 'operations',
|
|
343
|
+
defaultPath: '/personal',
|
|
344
|
+
localhostOrigin: 'http://localhost:7828',
|
|
345
|
+
packageName: '@tuturuuu/forms',
|
|
346
|
+
portlessApp: 'forms',
|
|
347
|
+
productionUrl: 'https://forms.tuturuuu.com',
|
|
348
|
+
slug: 'forms',
|
|
349
|
+
title: 'Forms',
|
|
350
|
+
workspacePathResolver: workspaceRootPath,
|
|
351
|
+
},
|
|
339
352
|
{
|
|
340
353
|
aliases: ['Time Tracking', 'Timer'],
|
|
341
354
|
appRoot: 'apps/track',
|
package/src/permissions.tsx
CHANGED
|
@@ -719,6 +719,26 @@ export const permissionGroups = ({
|
|
|
719
719
|
disableOnProduction: false,
|
|
720
720
|
disabled: false,
|
|
721
721
|
},
|
|
722
|
+
{
|
|
723
|
+
id: 'manage_user_report_automation',
|
|
724
|
+
icon: <Settings2 />,
|
|
725
|
+
title: t('ws-roles.manage_user_report_automation'),
|
|
726
|
+
description: t(
|
|
727
|
+
'ws-roles.manage_user_report_automation_description'
|
|
728
|
+
),
|
|
729
|
+
disableOnProduction: false,
|
|
730
|
+
disabled: false,
|
|
731
|
+
},
|
|
732
|
+
{
|
|
733
|
+
id: 'send_user_group_report_emails',
|
|
734
|
+
icon: <Send />,
|
|
735
|
+
title: t('ws-roles.send_user_group_report_emails'),
|
|
736
|
+
description: t(
|
|
737
|
+
'ws-roles.send_user_group_report_emails_description'
|
|
738
|
+
),
|
|
739
|
+
disableOnProduction: false,
|
|
740
|
+
disabled: false,
|
|
741
|
+
},
|
|
722
742
|
{
|
|
723
743
|
id: 'approve_reports',
|
|
724
744
|
icon: <ShieldCheck />,
|
|
@@ -877,6 +897,14 @@ export const permissionGroups = ({
|
|
|
877
897
|
disableOnProduction: false,
|
|
878
898
|
disabled: false,
|
|
879
899
|
},
|
|
900
|
+
{
|
|
901
|
+
id: 'initiate_pos_checkout',
|
|
902
|
+
icon: <CreditCard />,
|
|
903
|
+
title: t('ws-roles.initiate_pos_checkout'),
|
|
904
|
+
description: t('ws-roles.initiate_pos_checkout_description'),
|
|
905
|
+
disableOnProduction: false,
|
|
906
|
+
disabled: false,
|
|
907
|
+
},
|
|
880
908
|
{
|
|
881
909
|
id: 'view_inventory_analytics',
|
|
882
910
|
icon: <ChartBar />,
|
|
@@ -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.26.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.26.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
|
@@ -15,6 +15,7 @@ export const TUTURUUU_PORTLESS_APP_ORIGINS = {
|
|
|
15
15
|
drive: `https://drive.${TUTURUUU_PORTLESS_ROOT_HOST}`,
|
|
16
16
|
external: `https://external.${TUTURUUU_PORTLESS_ROOT_HOST}`,
|
|
17
17
|
finance: `https://finance.${TUTURUUU_PORTLESS_ROOT_HOST}`,
|
|
18
|
+
forms: `https://forms.${TUTURUUU_PORTLESS_ROOT_HOST}`,
|
|
18
19
|
hive: `https://hive.${TUTURUUU_PORTLESS_ROOT_HOST}`,
|
|
19
20
|
'hive-realtime': `https://realtime.hive.${TUTURUUU_PORTLESS_ROOT_HOST}`,
|
|
20
21
|
infra: `https://infra.${TUTURUUU_PORTLESS_ROOT_HOST}`,
|