@jskit-ai/jskit-catalog 0.1.40 → 0.1.42
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/catalog/packages.json +425 -231
- package/package.json +1 -1
package/catalog/packages.json
CHANGED
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
"packages": [
|
|
7
7
|
{
|
|
8
8
|
"packageId": "@jskit-ai/assistant",
|
|
9
|
-
"version": "0.1.
|
|
9
|
+
"version": "0.1.43",
|
|
10
10
|
"descriptor": {
|
|
11
11
|
"packageVersion": 1,
|
|
12
12
|
"packageId": "@jskit-ai/assistant",
|
|
13
|
-
"version": "0.1.
|
|
13
|
+
"version": "0.1.43",
|
|
14
14
|
"kind": "generator",
|
|
15
15
|
"description": "Install assistant runtime/config for one surface and scaffold assistant pages at explicit target files.",
|
|
16
16
|
"options": {
|
|
@@ -28,8 +28,7 @@
|
|
|
28
28
|
"inputType": "text",
|
|
29
29
|
"validationType": "enabled-surface-id",
|
|
30
30
|
"defaultValue": "",
|
|
31
|
-
"promptLabel": "
|
|
32
|
-
"promptHint": "Enabled settings host surface id used by assistant setup.",
|
|
31
|
+
"promptLabel": "Which enabled surface should host the assistant settings UI?",
|
|
33
32
|
"helpHint": "Surface that hosts the settings UI for the selected assistant runtime."
|
|
34
33
|
},
|
|
35
34
|
"config-scope": {
|
|
@@ -59,7 +58,7 @@
|
|
|
59
58
|
"inputType": "text",
|
|
60
59
|
"defaultValue": "",
|
|
61
60
|
"promptLabel": "Link placement",
|
|
62
|
-
"promptHint": "Optional
|
|
61
|
+
"promptHint": "Optional target for the generated page link placement (format: host:position)."
|
|
63
62
|
},
|
|
64
63
|
"link-component-token": {
|
|
65
64
|
"required": false,
|
|
@@ -78,7 +77,7 @@
|
|
|
78
77
|
"ai-config-prefix": {
|
|
79
78
|
"required": false,
|
|
80
79
|
"inputType": "text",
|
|
81
|
-
"
|
|
80
|
+
"defaultFromOptionTemplate": "${option:surface|snake|upper}_ASSISTANT",
|
|
82
81
|
"promptLabel": "AI config prefix",
|
|
83
82
|
"promptHint": "Optional env/config prefix override. Defaults to <SURFACE>_ASSISTANT."
|
|
84
83
|
},
|
|
@@ -96,8 +95,7 @@
|
|
|
96
95
|
"promptHint": "Leave empty to keep the assistant disabled until you add a key."
|
|
97
96
|
},
|
|
98
97
|
"ai-base-url": {
|
|
99
|
-
"required":
|
|
100
|
-
"allowEmpty": true,
|
|
98
|
+
"required": false,
|
|
101
99
|
"defaultValue": "",
|
|
102
100
|
"promptLabel": "AI base URL",
|
|
103
101
|
"promptHint": "Optional provider-compatible base URL override."
|
|
@@ -173,6 +171,7 @@
|
|
|
173
171
|
]
|
|
174
172
|
},
|
|
175
173
|
"page": {
|
|
174
|
+
"requiresShellWeb": true,
|
|
176
175
|
"entrypoint": "src/server/subcommands/page.js",
|
|
177
176
|
"export": "runGeneratorSubcommand",
|
|
178
177
|
"description": "Create an assistant runtime page at an explicit target file relative to src/pages/.",
|
|
@@ -215,6 +214,7 @@
|
|
|
215
214
|
]
|
|
216
215
|
},
|
|
217
216
|
"settings-page": {
|
|
217
|
+
"requiresShellWeb": true,
|
|
218
218
|
"entrypoint": "src/server/subcommands/settingsPage.js",
|
|
219
219
|
"export": "runGeneratorSubcommand",
|
|
220
220
|
"description": "Create an assistant settings page at an explicit target file relative to src/pages/.",
|
|
@@ -315,18 +315,40 @@
|
|
|
315
315
|
}
|
|
316
316
|
},
|
|
317
317
|
{
|
|
318
|
-
"op": "append-text",
|
|
319
318
|
"file": ".env",
|
|
320
|
-
"
|
|
321
|
-
"
|
|
322
|
-
"value": "
|
|
323
|
-
"reason": "
|
|
319
|
+
"op": "upsert-env",
|
|
320
|
+
"key": "${option:ai-config-prefix}_AI_PROVIDER",
|
|
321
|
+
"value": "${option:ai-provider}",
|
|
322
|
+
"reason": "Configure the assistant AI provider for the selected surface.",
|
|
324
323
|
"category": "runtime-config",
|
|
325
|
-
"id": "assistant-ai-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
324
|
+
"id": "assistant-ai-provider"
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
"file": ".env",
|
|
328
|
+
"op": "upsert-env",
|
|
329
|
+
"key": "${option:ai-config-prefix}_AI_API_KEY",
|
|
330
|
+
"value": "${option:ai-api-key}",
|
|
331
|
+
"reason": "Configure the assistant AI API key for the selected surface.",
|
|
332
|
+
"category": "runtime-config",
|
|
333
|
+
"id": "assistant-ai-api-key"
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
"file": ".env",
|
|
337
|
+
"op": "upsert-env",
|
|
338
|
+
"key": "${option:ai-config-prefix}_AI_BASE_URL",
|
|
339
|
+
"value": "${option:ai-base-url}",
|
|
340
|
+
"reason": "Configure the optional assistant AI base URL override for the selected surface.",
|
|
341
|
+
"category": "runtime-config",
|
|
342
|
+
"id": "assistant-ai-base-url"
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"file": ".env",
|
|
346
|
+
"op": "upsert-env",
|
|
347
|
+
"key": "${option:ai-config-prefix}_AI_TIMEOUT_MS",
|
|
348
|
+
"value": "${option:ai-timeout-ms}",
|
|
349
|
+
"reason": "Configure the assistant AI timeout for the selected surface.",
|
|
350
|
+
"category": "runtime-config",
|
|
351
|
+
"id": "assistant-ai-timeout-ms"
|
|
330
352
|
}
|
|
331
353
|
]
|
|
332
354
|
}
|
|
@@ -334,11 +356,11 @@
|
|
|
334
356
|
},
|
|
335
357
|
{
|
|
336
358
|
"packageId": "@jskit-ai/assistant-core",
|
|
337
|
-
"version": "0.1.
|
|
359
|
+
"version": "0.1.10",
|
|
338
360
|
"descriptor": {
|
|
339
361
|
"packageVersion": 1,
|
|
340
362
|
"packageId": "@jskit-ai/assistant-core",
|
|
341
|
-
"version": "0.1.
|
|
363
|
+
"version": "0.1.10",
|
|
342
364
|
"kind": "runtime",
|
|
343
365
|
"description": "Reusable assistant client/server/shared primitives without surface-specific routes or settings ownership.",
|
|
344
366
|
"dependsOn": [
|
|
@@ -384,9 +406,9 @@
|
|
|
384
406
|
"mutations": {
|
|
385
407
|
"dependencies": {
|
|
386
408
|
"runtime": {
|
|
387
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
388
|
-
"@jskit-ai/kernel": "0.1.
|
|
389
|
-
"@jskit-ai/users-core": "0.1.
|
|
409
|
+
"@jskit-ai/http-runtime": "0.1.33",
|
|
410
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
411
|
+
"@jskit-ai/users-core": "0.1.44",
|
|
390
412
|
"@tanstack/vue-query": "^5.90.5",
|
|
391
413
|
"dompurify": "^3.3.3",
|
|
392
414
|
"marked": "^17.0.4",
|
|
@@ -407,11 +429,11 @@
|
|
|
407
429
|
},
|
|
408
430
|
{
|
|
409
431
|
"packageId": "@jskit-ai/assistant-runtime",
|
|
410
|
-
"version": "0.1.
|
|
432
|
+
"version": "0.1.5",
|
|
411
433
|
"descriptor": {
|
|
412
434
|
"packageVersion": 1,
|
|
413
435
|
"packageId": "@jskit-ai/assistant-runtime",
|
|
414
|
-
"version": "0.1.
|
|
436
|
+
"version": "0.1.5",
|
|
415
437
|
"kind": "runtime",
|
|
416
438
|
"description": "Shared assistant runtime with per-surface assistant registration.",
|
|
417
439
|
"dependsOn": [
|
|
@@ -486,13 +508,13 @@
|
|
|
486
508
|
"mutations": {
|
|
487
509
|
"dependencies": {
|
|
488
510
|
"runtime": {
|
|
489
|
-
"@jskit-ai/assistant-core": "0.1.
|
|
490
|
-
"@jskit-ai/database-runtime": "0.1.
|
|
491
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
492
|
-
"@jskit-ai/kernel": "0.1.
|
|
493
|
-
"@jskit-ai/shell-web": "0.1.
|
|
494
|
-
"@jskit-ai/users-core": "0.1.
|
|
495
|
-
"@jskit-ai/users-web": "0.1.
|
|
511
|
+
"@jskit-ai/assistant-core": "0.1.10",
|
|
512
|
+
"@jskit-ai/database-runtime": "0.1.34",
|
|
513
|
+
"@jskit-ai/http-runtime": "0.1.33",
|
|
514
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
515
|
+
"@jskit-ai/shell-web": "0.1.33",
|
|
516
|
+
"@jskit-ai/users-core": "0.1.44",
|
|
517
|
+
"@jskit-ai/users-web": "0.1.49",
|
|
496
518
|
"@tanstack/vue-query": "^5.90.5",
|
|
497
519
|
"vuetify": "^4.0.0"
|
|
498
520
|
},
|
|
@@ -549,11 +571,11 @@
|
|
|
549
571
|
},
|
|
550
572
|
{
|
|
551
573
|
"packageId": "@jskit-ai/auth-core",
|
|
552
|
-
"version": "0.1.
|
|
574
|
+
"version": "0.1.33",
|
|
553
575
|
"descriptor": {
|
|
554
576
|
"packageVersion": 1,
|
|
555
577
|
"packageId": "@jskit-ai/auth-core",
|
|
556
|
-
"version": "0.1.
|
|
578
|
+
"version": "0.1.33",
|
|
557
579
|
"kind": "runtime",
|
|
558
580
|
"dependsOn": [
|
|
559
581
|
"@jskit-ai/value-app-config-shared"
|
|
@@ -621,7 +643,7 @@
|
|
|
621
643
|
"mutations": {
|
|
622
644
|
"dependencies": {
|
|
623
645
|
"runtime": {
|
|
624
|
-
"@jskit-ai/kernel": "0.1.
|
|
646
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
625
647
|
"@fastify/cookie": "^11.0.2",
|
|
626
648
|
"@fastify/csrf-protection": "^7.1.0",
|
|
627
649
|
"@fastify/rate-limit": "^10.3.0"
|
|
@@ -639,11 +661,11 @@
|
|
|
639
661
|
},
|
|
640
662
|
{
|
|
641
663
|
"packageId": "@jskit-ai/auth-provider-supabase-core",
|
|
642
|
-
"version": "0.1.
|
|
664
|
+
"version": "0.1.33",
|
|
643
665
|
"descriptor": {
|
|
644
666
|
"packageVersion": 1,
|
|
645
667
|
"packageId": "@jskit-ai/auth-provider-supabase-core",
|
|
646
|
-
"version": "0.1.
|
|
668
|
+
"version": "0.1.33",
|
|
647
669
|
"kind": "runtime",
|
|
648
670
|
"options": {
|
|
649
671
|
"auth-supabase-url": {
|
|
@@ -725,8 +747,8 @@
|
|
|
725
747
|
"mutations": {
|
|
726
748
|
"dependencies": {
|
|
727
749
|
"runtime": {
|
|
728
|
-
"@jskit-ai/auth-core": "0.1.
|
|
729
|
-
"@jskit-ai/kernel": "0.1.
|
|
750
|
+
"@jskit-ai/auth-core": "0.1.33",
|
|
751
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
730
752
|
"dotenv": "^16.4.5",
|
|
731
753
|
"@supabase/supabase-js": "^2.57.4",
|
|
732
754
|
"jose": "^6.1.0"
|
|
@@ -791,11 +813,11 @@
|
|
|
791
813
|
},
|
|
792
814
|
{
|
|
793
815
|
"packageId": "@jskit-ai/auth-web",
|
|
794
|
-
"version": "0.1.
|
|
816
|
+
"version": "0.1.35",
|
|
795
817
|
"descriptor": {
|
|
796
818
|
"packageVersion": 1,
|
|
797
819
|
"packageId": "@jskit-ai/auth-web",
|
|
798
|
-
"version": "0.1.
|
|
820
|
+
"version": "0.1.35",
|
|
799
821
|
"kind": "runtime",
|
|
800
822
|
"description": "Auth web module: Fastify auth routes plus web login/sign-out scaffolds.",
|
|
801
823
|
"dependsOn": [
|
|
@@ -971,8 +993,8 @@
|
|
|
971
993
|
"placements": {
|
|
972
994
|
"outlets": [
|
|
973
995
|
{
|
|
974
|
-
"
|
|
975
|
-
"
|
|
996
|
+
"target": "auth-profile-menu:primary-menu",
|
|
997
|
+
"defaultLinkComponentToken": "auth.web.profile.menu.link-item",
|
|
976
998
|
"surfaces": [
|
|
977
999
|
"*"
|
|
978
1000
|
],
|
|
@@ -982,8 +1004,7 @@
|
|
|
982
1004
|
"contributions": [
|
|
983
1005
|
{
|
|
984
1006
|
"id": "auth.profile.widget",
|
|
985
|
-
"
|
|
986
|
-
"position": "top-right",
|
|
1007
|
+
"target": "shell-layout:top-right",
|
|
987
1008
|
"surfaces": [
|
|
988
1009
|
"*"
|
|
989
1010
|
],
|
|
@@ -993,8 +1014,7 @@
|
|
|
993
1014
|
},
|
|
994
1015
|
{
|
|
995
1016
|
"id": "auth.profile.menu.sign-in",
|
|
996
|
-
"
|
|
997
|
-
"position": "primary-menu",
|
|
1017
|
+
"target": "auth-profile-menu:primary-menu",
|
|
998
1018
|
"surfaces": [
|
|
999
1019
|
"*"
|
|
1000
1020
|
],
|
|
@@ -1005,8 +1025,7 @@
|
|
|
1005
1025
|
},
|
|
1006
1026
|
{
|
|
1007
1027
|
"id": "auth.profile.menu.sign-out",
|
|
1008
|
-
"
|
|
1009
|
-
"position": "primary-menu",
|
|
1028
|
+
"target": "auth-profile-menu:primary-menu",
|
|
1010
1029
|
"surfaces": [
|
|
1011
1030
|
"*"
|
|
1012
1031
|
],
|
|
@@ -1025,10 +1044,10 @@
|
|
|
1025
1044
|
"@tanstack/vue-query": "5.92.12",
|
|
1026
1045
|
"@mdi/js": "^7.4.47",
|
|
1027
1046
|
"@fastify/type-provider-typebox": "^6.1.0",
|
|
1028
|
-
"@jskit-ai/auth-core": "0.1.
|
|
1029
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
1030
|
-
"@jskit-ai/kernel": "0.1.
|
|
1031
|
-
"@jskit-ai/shell-web": "0.1.
|
|
1047
|
+
"@jskit-ai/auth-core": "0.1.33",
|
|
1048
|
+
"@jskit-ai/http-runtime": "0.1.33",
|
|
1049
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
1050
|
+
"@jskit-ai/shell-web": "0.1.33",
|
|
1032
1051
|
"vuetify": "^4.0.0"
|
|
1033
1052
|
},
|
|
1034
1053
|
"dev": {}
|
|
@@ -1087,7 +1106,7 @@
|
|
|
1087
1106
|
"file": "src/placement.js",
|
|
1088
1107
|
"position": "bottom",
|
|
1089
1108
|
"skipIfContains": "id: \"auth.profile.widget\"",
|
|
1090
|
-
"value": "\naddPlacement({\n id: \"auth.profile.widget\",\n
|
|
1109
|
+
"value": "\naddPlacement({\n id: \"auth.profile.widget\",\n target: \"shell-layout:top-right\",\n surfaces: [\"*\"],\n order: 1000,\n componentToken: \"auth.web.profile.widget\"\n});\n\naddPlacement({\n id: \"auth.profile.menu.sign-in\",\n target: \"auth-profile-menu:primary-menu\",\n surfaces: [\"*\"],\n order: 200,\n componentToken: \"auth.web.profile.menu.link-item\",\n props: {\n label: \"Sign in\",\n to: \"/auth/login\"\n },\n when: ({ auth }) => !Boolean(auth?.authenticated)\n});\n\naddPlacement({\n id: \"auth.profile.menu.sign-out\",\n target: \"auth-profile-menu:primary-menu\",\n surfaces: [\"*\"],\n order: 1000,\n componentToken: \"auth.web.profile.menu.link-item\",\n props: {\n label: \"Sign out\",\n to: \"/auth/signout\"\n },\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
|
|
1091
1110
|
"reason": "Append auth profile placement entries into app-owned placement registry.",
|
|
1092
1111
|
"category": "auth-web",
|
|
1093
1112
|
"id": "auth-web-placement-block"
|
|
@@ -1098,11 +1117,11 @@
|
|
|
1098
1117
|
},
|
|
1099
1118
|
{
|
|
1100
1119
|
"packageId": "@jskit-ai/crud-core",
|
|
1101
|
-
"version": "0.1.
|
|
1120
|
+
"version": "0.1.42",
|
|
1102
1121
|
"descriptor": {
|
|
1103
1122
|
"packageVersion": 1,
|
|
1104
1123
|
"packageId": "@jskit-ai/crud-core",
|
|
1105
|
-
"version": "0.1.
|
|
1124
|
+
"version": "0.1.42",
|
|
1106
1125
|
"kind": "runtime",
|
|
1107
1126
|
"description": "Shared CRUD helpers used by CRUD modules.",
|
|
1108
1127
|
"dependsOn": [
|
|
@@ -1129,7 +1148,7 @@
|
|
|
1129
1148
|
"mutations": {
|
|
1130
1149
|
"dependencies": {
|
|
1131
1150
|
"runtime": {
|
|
1132
|
-
"@jskit-ai/crud-core": "0.1.
|
|
1151
|
+
"@jskit-ai/crud-core": "0.1.42"
|
|
1133
1152
|
},
|
|
1134
1153
|
"dev": {}
|
|
1135
1154
|
},
|
|
@@ -1143,11 +1162,11 @@
|
|
|
1143
1162
|
},
|
|
1144
1163
|
{
|
|
1145
1164
|
"packageId": "@jskit-ai/crud-server-generator",
|
|
1146
|
-
"version": "0.1.
|
|
1165
|
+
"version": "0.1.42",
|
|
1147
1166
|
"descriptor": {
|
|
1148
1167
|
"packageVersion": 1,
|
|
1149
1168
|
"packageId": "@jskit-ai/crud-server-generator",
|
|
1150
|
-
"version": "0.1.
|
|
1169
|
+
"version": "0.1.42",
|
|
1151
1170
|
"kind": "generator",
|
|
1152
1171
|
"description": "CRUD server generator with routes, actions, and persistence scaffolding.",
|
|
1153
1172
|
"options": {
|
|
@@ -1159,16 +1178,24 @@
|
|
|
1159
1178
|
"promptHint": "Required slug (example: customers, appointments, vendors)."
|
|
1160
1179
|
},
|
|
1161
1180
|
"surface": {
|
|
1162
|
-
"required":
|
|
1181
|
+
"required": false,
|
|
1163
1182
|
"inputType": "text",
|
|
1164
1183
|
"validationType": "enabled-surface-id",
|
|
1165
1184
|
"promptLabel": "Target surface",
|
|
1166
|
-
"promptHint": "
|
|
1185
|
+
"promptHint": "Optional for non-workspace apps; otherwise must match an enabled surface id."
|
|
1167
1186
|
},
|
|
1168
1187
|
"ownership-filter": {
|
|
1169
1188
|
"required": true,
|
|
1170
1189
|
"inputType": "text",
|
|
1171
1190
|
"defaultValue": "auto",
|
|
1191
|
+
"validationType": "enum",
|
|
1192
|
+
"allowedValues": [
|
|
1193
|
+
"auto",
|
|
1194
|
+
"public",
|
|
1195
|
+
"user",
|
|
1196
|
+
"workspace",
|
|
1197
|
+
"workspace_user"
|
|
1198
|
+
],
|
|
1172
1199
|
"promptLabel": "Ownership filter",
|
|
1173
1200
|
"promptHint": "auto | public | user | workspace | workspace_user"
|
|
1174
1201
|
},
|
|
@@ -1180,11 +1207,12 @@
|
|
|
1180
1207
|
"promptHint": "Optional subpath prepended to the CRUD route path (example: crm or ops/team-a)."
|
|
1181
1208
|
},
|
|
1182
1209
|
"table-name": {
|
|
1183
|
-
"required":
|
|
1210
|
+
"required": false,
|
|
1184
1211
|
"inputType": "text",
|
|
1185
1212
|
"defaultValue": "",
|
|
1213
|
+
"defaultFromOptionTemplate": "${option:namespace}",
|
|
1186
1214
|
"promptLabel": "Table name",
|
|
1187
|
-
"promptHint": "
|
|
1215
|
+
"promptHint": "Existing MySQL table to introspect for CRUD schema generation (defaults to namespace)."
|
|
1188
1216
|
},
|
|
1189
1217
|
"id-column": {
|
|
1190
1218
|
"required": false,
|
|
@@ -1296,13 +1324,13 @@
|
|
|
1296
1324
|
"mutations": {
|
|
1297
1325
|
"dependencies": {
|
|
1298
1326
|
"runtime": {
|
|
1299
|
-
"@jskit-ai/auth-core": "0.1.
|
|
1300
|
-
"@jskit-ai/crud-core": "0.1.
|
|
1301
|
-
"@jskit-ai/database-runtime": "0.1.
|
|
1302
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
1303
|
-
"@jskit-ai/kernel": "0.1.
|
|
1304
|
-
"@jskit-ai/realtime": "0.1.
|
|
1305
|
-
"@jskit-ai/users-core": "0.1.
|
|
1327
|
+
"@jskit-ai/auth-core": "0.1.33",
|
|
1328
|
+
"@jskit-ai/crud-core": "0.1.42",
|
|
1329
|
+
"@jskit-ai/database-runtime": "0.1.34",
|
|
1330
|
+
"@jskit-ai/http-runtime": "0.1.33",
|
|
1331
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
1332
|
+
"@jskit-ai/realtime": "0.1.33",
|
|
1333
|
+
"@jskit-ai/users-core": "0.1.44",
|
|
1306
1334
|
"@local/${option:namespace|kebab}": "file:packages/${option:namespace|kebab}",
|
|
1307
1335
|
"typebox": "^1.0.81"
|
|
1308
1336
|
},
|
|
@@ -1356,7 +1384,11 @@
|
|
|
1356
1384
|
"to": "packages/${option:namespace|kebab}/src/server/actions.js",
|
|
1357
1385
|
"reason": "Install app-local CRUD action definitions.",
|
|
1358
1386
|
"category": "crud",
|
|
1359
|
-
"id": "crud-local-package-server-actions-${option:namespace|snake}"
|
|
1387
|
+
"id": "crud-local-package-server-actions-${option:namespace|snake}",
|
|
1388
|
+
"templateContext": {
|
|
1389
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
1390
|
+
"export": "buildTemplateContext"
|
|
1391
|
+
}
|
|
1360
1392
|
},
|
|
1361
1393
|
{
|
|
1362
1394
|
"from": "templates/src/local-package/server/actionIds.js",
|
|
@@ -1365,12 +1397,27 @@
|
|
|
1365
1397
|
"category": "crud",
|
|
1366
1398
|
"id": "crud-local-package-server-action-ids-${option:namespace|snake}"
|
|
1367
1399
|
},
|
|
1400
|
+
{
|
|
1401
|
+
"from": "templates/src/local-package/server/listConfig.js",
|
|
1402
|
+
"to": "packages/${option:namespace|kebab}/src/server/listConfig.js",
|
|
1403
|
+
"reason": "Install app-local CRUD list configuration.",
|
|
1404
|
+
"category": "crud",
|
|
1405
|
+
"id": "crud-local-package-server-list-config-${option:namespace|snake}",
|
|
1406
|
+
"templateContext": {
|
|
1407
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
1408
|
+
"export": "buildTemplateContext"
|
|
1409
|
+
}
|
|
1410
|
+
},
|
|
1368
1411
|
{
|
|
1369
1412
|
"from": "templates/src/local-package/server/registerRoutes.js",
|
|
1370
1413
|
"to": "packages/${option:namespace|kebab}/src/server/registerRoutes.js",
|
|
1371
1414
|
"reason": "Install app-local CRUD route registration.",
|
|
1372
1415
|
"category": "crud",
|
|
1373
|
-
"id": "crud-local-package-server-routes-${option:namespace|snake}"
|
|
1416
|
+
"id": "crud-local-package-server-routes-${option:namespace|snake}",
|
|
1417
|
+
"templateContext": {
|
|
1418
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
1419
|
+
"export": "buildTemplateContext"
|
|
1420
|
+
}
|
|
1374
1421
|
},
|
|
1375
1422
|
{
|
|
1376
1423
|
"from": "templates/src/local-package/server/repository.js",
|
|
@@ -1415,10 +1462,14 @@
|
|
|
1415
1462
|
"file": "config/roles.js",
|
|
1416
1463
|
"position": "bottom",
|
|
1417
1464
|
"skipIfContains": "\"crud.${option:namespace|snake}.list\"",
|
|
1418
|
-
"value": "
|
|
1465
|
+
"value": "__JSKIT_CRUD_ROLE_CATALOG_PERMISSION_GRANTS__",
|
|
1419
1466
|
"reason": "Grant generated CRUD action permissions to the default member role in the app-owned role catalog.",
|
|
1420
1467
|
"category": "crud",
|
|
1421
|
-
"id": "crud-role-catalog-permissions-${option:namespace|snake}"
|
|
1468
|
+
"id": "crud-role-catalog-permissions-${option:namespace|snake}",
|
|
1469
|
+
"templateContext": {
|
|
1470
|
+
"entrypoint": "src/server/buildTemplateContext.js",
|
|
1471
|
+
"export": "buildTemplateContext"
|
|
1472
|
+
}
|
|
1422
1473
|
}
|
|
1423
1474
|
]
|
|
1424
1475
|
}
|
|
@@ -1426,11 +1477,11 @@
|
|
|
1426
1477
|
},
|
|
1427
1478
|
{
|
|
1428
1479
|
"packageId": "@jskit-ai/crud-ui-generator",
|
|
1429
|
-
"version": "0.1.
|
|
1480
|
+
"version": "0.1.17",
|
|
1430
1481
|
"descriptor": {
|
|
1431
1482
|
"packageVersion": 1,
|
|
1432
1483
|
"packageId": "@jskit-ai/crud-ui-generator",
|
|
1433
|
-
"version": "0.1.
|
|
1484
|
+
"version": "0.1.17",
|
|
1434
1485
|
"kind": "generator",
|
|
1435
1486
|
"description": "Generate CRUD route trees from resource validators at an explicit route root relative to src/pages/.",
|
|
1436
1487
|
"options": {
|
|
@@ -1453,6 +1504,13 @@
|
|
|
1453
1504
|
"required": false,
|
|
1454
1505
|
"inputType": "text",
|
|
1455
1506
|
"defaultValue": "list,view,new,edit",
|
|
1507
|
+
"validationType": "csv-enum",
|
|
1508
|
+
"allowedValues": [
|
|
1509
|
+
"list",
|
|
1510
|
+
"view",
|
|
1511
|
+
"new",
|
|
1512
|
+
"edit"
|
|
1513
|
+
],
|
|
1456
1514
|
"promptLabel": "Operations",
|
|
1457
1515
|
"promptHint": "Optional comma-separated values from: list, view, new, edit. Defaults to all four."
|
|
1458
1516
|
},
|
|
@@ -1482,7 +1540,14 @@
|
|
|
1482
1540
|
"inputType": "text",
|
|
1483
1541
|
"defaultValue": "",
|
|
1484
1542
|
"promptLabel": "Link placement",
|
|
1485
|
-
"promptHint": "Optional
|
|
1543
|
+
"promptHint": "Optional target override for the generated list-page link placement (format: host:position)."
|
|
1544
|
+
},
|
|
1545
|
+
"link-component-token": {
|
|
1546
|
+
"required": false,
|
|
1547
|
+
"inputType": "text",
|
|
1548
|
+
"defaultValue": "",
|
|
1549
|
+
"promptLabel": "Link component token",
|
|
1550
|
+
"promptHint": "Optional component token override for the generated list-page link placement (example: local.main.ui.tab-link-item)."
|
|
1486
1551
|
},
|
|
1487
1552
|
"namespace": {
|
|
1488
1553
|
"required": false,
|
|
@@ -1511,10 +1576,11 @@
|
|
|
1511
1576
|
"generatorPrimarySubcommand": "crud",
|
|
1512
1577
|
"generatorSubcommands": {
|
|
1513
1578
|
"crud": {
|
|
1579
|
+
"requiresShellWeb": true,
|
|
1514
1580
|
"description": "Create CRUD pages at an explicit route root relative to src/pages/.",
|
|
1515
1581
|
"longDescription": [
|
|
1516
1582
|
"CRUD generation follows the same page-placement model as `ui-generator page`.",
|
|
1517
|
-
"That means the generated list page link uses the same nearest-parent-
|
|
1583
|
+
"That means the generated list page link uses the same nearest-parent-target inference, tab-link inference, and relative `props.to` inference as a normal generated page. If you want the detailed target behavior, read `jskit generate ui-generator page help`."
|
|
1518
1584
|
],
|
|
1519
1585
|
"positionalArgs": [
|
|
1520
1586
|
{
|
|
@@ -1529,6 +1595,7 @@
|
|
|
1529
1595
|
"display-fields",
|
|
1530
1596
|
"id-param",
|
|
1531
1597
|
"link-placement",
|
|
1598
|
+
"link-component-token",
|
|
1532
1599
|
"namespace",
|
|
1533
1600
|
"force"
|
|
1534
1601
|
],
|
|
@@ -1568,6 +1635,7 @@
|
|
|
1568
1635
|
]
|
|
1569
1636
|
},
|
|
1570
1637
|
"field": {
|
|
1638
|
+
"requiresShellWeb": true,
|
|
1571
1639
|
"entrypoint": "src/server/subcommands/addField.js",
|
|
1572
1640
|
"export": "runGeneratorSubcommand"
|
|
1573
1641
|
}
|
|
@@ -1588,7 +1656,7 @@
|
|
|
1588
1656
|
"mutations": {
|
|
1589
1657
|
"dependencies": {
|
|
1590
1658
|
"runtime": {
|
|
1591
|
-
"@jskit-ai/users-web": "0.1.
|
|
1659
|
+
"@jskit-ai/users-web": "0.1.49"
|
|
1592
1660
|
},
|
|
1593
1661
|
"dev": {}
|
|
1594
1662
|
},
|
|
@@ -1800,7 +1868,7 @@
|
|
|
1800
1868
|
"file": "src/placement.js",
|
|
1801
1869
|
"position": "bottom",
|
|
1802
1870
|
"skipIfContains": "__JSKIT_UI_MENU_MARKER__",
|
|
1803
|
-
"value": "\n// __JSKIT_UI_MENU_MARKER__\n{\n addPlacement({\n id: \"__JSKIT_UI_MENU_PLACEMENT_ID__\",\n
|
|
1871
|
+
"value": "\n// __JSKIT_UI_MENU_MARKER__\n{\n addPlacement({\n id: \"__JSKIT_UI_MENU_PLACEMENT_ID__\",\n target: \"__JSKIT_UI_MENU_PLACEMENT_TARGET__\",\n surfaces: [\"__JSKIT_UI_SURFACE_ID__\"],\n order: 155,\n componentToken: \"__JSKIT_UI_MENU_COMPONENT_TOKEN__\",\n props: {\n label: \"__JSKIT_UI_MENU_LABEL__\",\n surface: \"__JSKIT_UI_SURFACE_ID__\",\n workspaceSuffix: \"__JSKIT_UI_MENU_WORKSPACE_SUFFIX__\",\n nonWorkspaceSuffix: \"__JSKIT_UI_MENU_NON_WORKSPACE_SUFFIX__\",\n__JSKIT_UI_MENU_TO_PROP_LINE__ },\n__JSKIT_UI_MENU_WHEN_LINE__ });\n}\n",
|
|
1804
1872
|
"reason": "Append generated CRUD list-page placement.",
|
|
1805
1873
|
"category": "crud-ui-generator",
|
|
1806
1874
|
"id": "crud-ui-placement-menu",
|
|
@@ -1821,11 +1889,11 @@
|
|
|
1821
1889
|
},
|
|
1822
1890
|
{
|
|
1823
1891
|
"packageId": "@jskit-ai/database-runtime",
|
|
1824
|
-
"version": "0.1.
|
|
1892
|
+
"version": "0.1.34",
|
|
1825
1893
|
"descriptor": {
|
|
1826
1894
|
"packageVersion": 1,
|
|
1827
1895
|
"packageId": "@jskit-ai/database-runtime",
|
|
1828
|
-
"version": "0.1.
|
|
1896
|
+
"version": "0.1.34",
|
|
1829
1897
|
"kind": "runtime",
|
|
1830
1898
|
"dependsOn": [
|
|
1831
1899
|
"@jskit-ai/kernel"
|
|
@@ -1882,7 +1950,7 @@
|
|
|
1882
1950
|
"mutations": {
|
|
1883
1951
|
"dependencies": {
|
|
1884
1952
|
"runtime": {
|
|
1885
|
-
"@jskit-ai/kernel": "0.1.
|
|
1953
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
1886
1954
|
"dotenv": "^16.4.5",
|
|
1887
1955
|
"knex": "^3.1.0"
|
|
1888
1956
|
},
|
|
@@ -1917,11 +1985,11 @@
|
|
|
1917
1985
|
},
|
|
1918
1986
|
{
|
|
1919
1987
|
"packageId": "@jskit-ai/database-runtime-mysql",
|
|
1920
|
-
"version": "0.1.
|
|
1988
|
+
"version": "0.1.33",
|
|
1921
1989
|
"descriptor": {
|
|
1922
1990
|
"packageVersion": 1,
|
|
1923
1991
|
"packageId": "@jskit-ai/database-runtime-mysql",
|
|
1924
|
-
"version": "0.1.
|
|
1992
|
+
"version": "0.1.33",
|
|
1925
1993
|
"kind": "runtime",
|
|
1926
1994
|
"options": {
|
|
1927
1995
|
"db-host": {
|
|
@@ -2011,7 +2079,7 @@
|
|
|
2011
2079
|
"mutations": {
|
|
2012
2080
|
"dependencies": {
|
|
2013
2081
|
"runtime": {
|
|
2014
|
-
"@jskit-ai/database-runtime": "0.1.
|
|
2082
|
+
"@jskit-ai/database-runtime": "0.1.34",
|
|
2015
2083
|
"mysql2": "^3.11.2"
|
|
2016
2084
|
},
|
|
2017
2085
|
"dev": {}
|
|
@@ -2082,11 +2150,11 @@
|
|
|
2082
2150
|
},
|
|
2083
2151
|
{
|
|
2084
2152
|
"packageId": "@jskit-ai/database-runtime-postgres",
|
|
2085
|
-
"version": "0.1.
|
|
2153
|
+
"version": "0.1.33",
|
|
2086
2154
|
"descriptor": {
|
|
2087
2155
|
"packageVersion": 1,
|
|
2088
2156
|
"packageId": "@jskit-ai/database-runtime-postgres",
|
|
2089
|
-
"version": "0.1.
|
|
2157
|
+
"version": "0.1.33",
|
|
2090
2158
|
"kind": "runtime",
|
|
2091
2159
|
"options": {
|
|
2092
2160
|
"db-host": {
|
|
@@ -2176,7 +2244,7 @@
|
|
|
2176
2244
|
"mutations": {
|
|
2177
2245
|
"dependencies": {
|
|
2178
2246
|
"runtime": {
|
|
2179
|
-
"@jskit-ai/database-runtime": "0.1.
|
|
2247
|
+
"@jskit-ai/database-runtime": "0.1.34",
|
|
2180
2248
|
"pg": "^8.13.1"
|
|
2181
2249
|
},
|
|
2182
2250
|
"dev": {}
|
|
@@ -2247,11 +2315,11 @@
|
|
|
2247
2315
|
},
|
|
2248
2316
|
{
|
|
2249
2317
|
"packageId": "@jskit-ai/http-runtime",
|
|
2250
|
-
"version": "0.1.
|
|
2318
|
+
"version": "0.1.33",
|
|
2251
2319
|
"descriptor": {
|
|
2252
2320
|
"packageVersion": 1,
|
|
2253
2321
|
"packageId": "@jskit-ai/http-runtime",
|
|
2254
|
-
"version": "0.1.
|
|
2322
|
+
"version": "0.1.33",
|
|
2255
2323
|
"kind": "runtime",
|
|
2256
2324
|
"dependsOn": [],
|
|
2257
2325
|
"capabilities": {
|
|
@@ -2317,7 +2385,7 @@
|
|
|
2317
2385
|
"mutations": {
|
|
2318
2386
|
"dependencies": {
|
|
2319
2387
|
"runtime": {
|
|
2320
|
-
"@jskit-ai/kernel": "0.1.
|
|
2388
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
2321
2389
|
"@fastify/type-provider-typebox": "^6.1.0",
|
|
2322
2390
|
"typebox": "^1.0.81"
|
|
2323
2391
|
},
|
|
@@ -2333,11 +2401,11 @@
|
|
|
2333
2401
|
},
|
|
2334
2402
|
{
|
|
2335
2403
|
"packageId": "@jskit-ai/realtime",
|
|
2336
|
-
"version": "0.1.
|
|
2404
|
+
"version": "0.1.33",
|
|
2337
2405
|
"descriptor": {
|
|
2338
2406
|
"packageVersion": 1,
|
|
2339
2407
|
"packageId": "@jskit-ai/realtime",
|
|
2340
|
-
"version": "0.1.
|
|
2408
|
+
"version": "0.1.33",
|
|
2341
2409
|
"kind": "runtime",
|
|
2342
2410
|
"description": "Thin, generic realtime runtime wrappers for socket.io server and client.",
|
|
2343
2411
|
"options": {
|
|
@@ -2417,8 +2485,7 @@
|
|
|
2417
2485
|
"contributions": [
|
|
2418
2486
|
{
|
|
2419
2487
|
"id": "realtime.connection.indicator",
|
|
2420
|
-
"
|
|
2421
|
-
"position": "top-right",
|
|
2488
|
+
"target": "shell-layout:top-right",
|
|
2422
2489
|
"surfaces": [
|
|
2423
2490
|
"*"
|
|
2424
2491
|
],
|
|
@@ -2433,7 +2500,7 @@
|
|
|
2433
2500
|
"mutations": {
|
|
2434
2501
|
"dependencies": {
|
|
2435
2502
|
"runtime": {
|
|
2436
|
-
"@jskit-ai/kernel": "0.1.
|
|
2503
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
2437
2504
|
"@socket.io/redis-adapter": "^8.3.0",
|
|
2438
2505
|
"redis": "^5.8.2",
|
|
2439
2506
|
"socket.io": "^4.8.3",
|
|
@@ -2471,7 +2538,7 @@
|
|
|
2471
2538
|
"file": "src/placement.js",
|
|
2472
2539
|
"position": "bottom",
|
|
2473
2540
|
"skipIfContains": "id: \"realtime.connection.indicator\"",
|
|
2474
|
-
"value": "\naddPlacement({\n id: \"realtime.connection.indicator\",\n
|
|
2541
|
+
"value": "\naddPlacement({\n id: \"realtime.connection.indicator\",\n target: \"shell-layout:top-right\",\n surfaces: [\"*\"],\n order: 950,\n componentToken: \"realtime.web.connection.indicator\"\n});\n",
|
|
2475
2542
|
"reason": "Append realtime connection indicator placement into app-owned placement registry.",
|
|
2476
2543
|
"category": "realtime-web",
|
|
2477
2544
|
"id": "realtime-placement-indicator"
|
|
@@ -2482,11 +2549,11 @@
|
|
|
2482
2549
|
},
|
|
2483
2550
|
{
|
|
2484
2551
|
"packageId": "@jskit-ai/shell-web",
|
|
2485
|
-
"version": "0.1.
|
|
2552
|
+
"version": "0.1.33",
|
|
2486
2553
|
"descriptor": {
|
|
2487
2554
|
"packageVersion": 1,
|
|
2488
2555
|
"packageId": "@jskit-ai/shell-web",
|
|
2489
|
-
"version": "0.1.
|
|
2556
|
+
"version": "0.1.33",
|
|
2490
2557
|
"kind": "runtime",
|
|
2491
2558
|
"description": "Web shell layout runtime with outlet-based placement contributions.",
|
|
2492
2559
|
"dependsOn": [],
|
|
@@ -2515,7 +2582,7 @@
|
|
|
2515
2582
|
"surfaces": [
|
|
2516
2583
|
{
|
|
2517
2584
|
"subpath": "./client",
|
|
2518
|
-
"summary": "Exports shell layout/outlet/error-host components and ShellWebClientProvider."
|
|
2585
|
+
"summary": "Exports shell layout/outlet/outlet-menu/error-host components and ShellWebClientProvider."
|
|
2519
2586
|
},
|
|
2520
2587
|
{
|
|
2521
2588
|
"subpath": "./client/placement",
|
|
@@ -2540,40 +2607,38 @@
|
|
|
2540
2607
|
"placements": {
|
|
2541
2608
|
"outlets": [
|
|
2542
2609
|
{
|
|
2543
|
-
"
|
|
2544
|
-
"position": "top-left",
|
|
2610
|
+
"target": "shell-layout:top-left",
|
|
2545
2611
|
"surfaces": [
|
|
2546
2612
|
"*"
|
|
2547
2613
|
],
|
|
2548
2614
|
"source": "src/client/components/ShellLayout.vue"
|
|
2549
2615
|
},
|
|
2550
2616
|
{
|
|
2551
|
-
"
|
|
2552
|
-
"position": "top-right",
|
|
2617
|
+
"target": "shell-layout:top-right",
|
|
2553
2618
|
"surfaces": [
|
|
2554
2619
|
"*"
|
|
2555
2620
|
],
|
|
2556
2621
|
"source": "src/client/components/ShellLayout.vue"
|
|
2557
2622
|
},
|
|
2558
2623
|
{
|
|
2559
|
-
"
|
|
2560
|
-
"
|
|
2624
|
+
"target": "shell-layout:primary-menu",
|
|
2625
|
+
"defaultLinkComponentToken": "local.main.ui.surface-aware-menu-link-item",
|
|
2561
2626
|
"surfaces": [
|
|
2562
2627
|
"*"
|
|
2563
2628
|
],
|
|
2564
2629
|
"source": "src/client/components/ShellLayout.vue"
|
|
2565
2630
|
},
|
|
2566
2631
|
{
|
|
2567
|
-
"
|
|
2568
|
-
"
|
|
2632
|
+
"target": "shell-layout:secondary-menu",
|
|
2633
|
+
"defaultLinkComponentToken": "local.main.ui.surface-aware-menu-link-item",
|
|
2569
2634
|
"surfaces": [
|
|
2570
2635
|
"*"
|
|
2571
2636
|
],
|
|
2572
2637
|
"source": "src/client/components/ShellLayout.vue"
|
|
2573
2638
|
},
|
|
2574
2639
|
{
|
|
2575
|
-
"
|
|
2576
|
-
"
|
|
2640
|
+
"target": "home-settings:primary-menu",
|
|
2641
|
+
"defaultLinkComponentToken": "local.main.ui.surface-aware-menu-link-item",
|
|
2577
2642
|
"surfaces": [
|
|
2578
2643
|
"home"
|
|
2579
2644
|
],
|
|
@@ -2587,8 +2652,9 @@
|
|
|
2587
2652
|
"mutations": {
|
|
2588
2653
|
"dependencies": {
|
|
2589
2654
|
"runtime": {
|
|
2655
|
+
"@mdi/js": "^7.4.47",
|
|
2590
2656
|
"@tanstack/vue-query": "^5.90.5",
|
|
2591
|
-
"@jskit-ai/kernel": "0.1.
|
|
2657
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
2592
2658
|
"vuetify": "^4.0.0"
|
|
2593
2659
|
},
|
|
2594
2660
|
"dev": {}
|
|
@@ -2601,11 +2667,74 @@
|
|
|
2601
2667
|
}
|
|
2602
2668
|
},
|
|
2603
2669
|
"procfile": {},
|
|
2604
|
-
"text": [
|
|
2670
|
+
"text": [
|
|
2671
|
+
{
|
|
2672
|
+
"op": "append-text",
|
|
2673
|
+
"file": "packages/main/src/client/providers/MainClientProvider.js",
|
|
2674
|
+
"position": "top",
|
|
2675
|
+
"skipIfContains": "import MenuLinkItem from \"/src/components/menus/MenuLinkItem.vue\";",
|
|
2676
|
+
"value": "import MenuLinkItem from \"/src/components/menus/MenuLinkItem.vue\";\n",
|
|
2677
|
+
"reason": "Bind app-owned shell menu link-item scaffold into local main client provider imports.",
|
|
2678
|
+
"category": "shell-web",
|
|
2679
|
+
"id": "shell-web-main-client-provider-menu-link-item-import"
|
|
2680
|
+
},
|
|
2681
|
+
{
|
|
2682
|
+
"op": "append-text",
|
|
2683
|
+
"file": "packages/main/src/client/providers/MainClientProvider.js",
|
|
2684
|
+
"position": "top",
|
|
2685
|
+
"skipIfContains": "import SurfaceAwareMenuLinkItem from \"/src/components/menus/SurfaceAwareMenuLinkItem.vue\";",
|
|
2686
|
+
"value": "import SurfaceAwareMenuLinkItem from \"/src/components/menus/SurfaceAwareMenuLinkItem.vue\";\n",
|
|
2687
|
+
"reason": "Bind app-owned shell surface-aware menu link-item scaffold into local main client provider imports.",
|
|
2688
|
+
"category": "shell-web",
|
|
2689
|
+
"id": "shell-web-main-client-provider-surface-aware-menu-link-item-import"
|
|
2690
|
+
},
|
|
2691
|
+
{
|
|
2692
|
+
"op": "append-text",
|
|
2693
|
+
"file": "packages/main/src/client/providers/MainClientProvider.js",
|
|
2694
|
+
"position": "top",
|
|
2695
|
+
"skipIfContains": "import TabLinkItem from \"/src/components/menus/TabLinkItem.vue\";",
|
|
2696
|
+
"value": "import TabLinkItem from \"/src/components/menus/TabLinkItem.vue\";\n",
|
|
2697
|
+
"reason": "Bind app-owned shell tab link-item scaffold into local main client provider imports.",
|
|
2698
|
+
"category": "shell-web",
|
|
2699
|
+
"id": "shell-web-main-client-provider-tab-link-item-import"
|
|
2700
|
+
},
|
|
2701
|
+
{
|
|
2702
|
+
"op": "append-text",
|
|
2703
|
+
"file": "packages/main/src/client/providers/MainClientProvider.js",
|
|
2704
|
+
"position": "bottom",
|
|
2705
|
+
"skipIfContains": "registerMainClientComponent(\"local.main.ui.menu-link-item\", () => MenuLinkItem);",
|
|
2706
|
+
"value": "\nregisterMainClientComponent(\"local.main.ui.menu-link-item\", () => MenuLinkItem);\n",
|
|
2707
|
+
"reason": "Bind app-owned shell menu link-item token into local main client provider registry.",
|
|
2708
|
+
"category": "shell-web",
|
|
2709
|
+
"id": "shell-web-main-client-provider-menu-link-item-register"
|
|
2710
|
+
},
|
|
2711
|
+
{
|
|
2712
|
+
"op": "append-text",
|
|
2713
|
+
"file": "packages/main/src/client/providers/MainClientProvider.js",
|
|
2714
|
+
"position": "bottom",
|
|
2715
|
+
"skipIfContains": "registerMainClientComponent(\"local.main.ui.surface-aware-menu-link-item\", () => SurfaceAwareMenuLinkItem);",
|
|
2716
|
+
"value": "\nregisterMainClientComponent(\"local.main.ui.surface-aware-menu-link-item\", () => SurfaceAwareMenuLinkItem);\n",
|
|
2717
|
+
"reason": "Bind app-owned shell surface-aware menu link-item token into local main client provider registry.",
|
|
2718
|
+
"category": "shell-web",
|
|
2719
|
+
"id": "shell-web-main-client-provider-surface-aware-menu-link-item-register"
|
|
2720
|
+
},
|
|
2721
|
+
{
|
|
2722
|
+
"op": "append-text",
|
|
2723
|
+
"file": "packages/main/src/client/providers/MainClientProvider.js",
|
|
2724
|
+
"position": "bottom",
|
|
2725
|
+
"skipIfContains": "registerMainClientComponent(\"local.main.ui.tab-link-item\", () => TabLinkItem);",
|
|
2726
|
+
"value": "\nregisterMainClientComponent(\"local.main.ui.tab-link-item\", () => TabLinkItem);\n",
|
|
2727
|
+
"reason": "Bind app-owned shell tab link-item token into local main client provider registry.",
|
|
2728
|
+
"category": "shell-web",
|
|
2729
|
+
"id": "shell-web-main-client-provider-tab-link-item-register"
|
|
2730
|
+
}
|
|
2731
|
+
],
|
|
2605
2732
|
"files": [
|
|
2606
2733
|
{
|
|
2607
2734
|
"from": "templates/src/App.vue",
|
|
2608
2735
|
"to": "src/App.vue",
|
|
2736
|
+
"ownership": "app",
|
|
2737
|
+
"expectedExistingFrom": "templates/expected-existing/src/App.vue",
|
|
2609
2738
|
"reason": "Install full-width shell app root with shell-web error host and edge-to-edge layout.",
|
|
2610
2739
|
"category": "shell-web",
|
|
2611
2740
|
"id": "shell-web-app-root"
|
|
@@ -2613,13 +2742,39 @@
|
|
|
2613
2742
|
{
|
|
2614
2743
|
"from": "templates/src/components/ShellLayout.vue",
|
|
2615
2744
|
"to": "src/components/ShellLayout.vue",
|
|
2745
|
+
"ownership": "app",
|
|
2616
2746
|
"reason": "Install app-owned shell layout component so apps can customize structure and slots.",
|
|
2617
2747
|
"category": "shell-web",
|
|
2618
2748
|
"id": "shell-web-component-shell-layout"
|
|
2619
2749
|
},
|
|
2750
|
+
{
|
|
2751
|
+
"from": "templates/src/components/menus/MenuLinkItem.vue",
|
|
2752
|
+
"to": "src/components/menus/MenuLinkItem.vue",
|
|
2753
|
+
"ownership": "app",
|
|
2754
|
+
"reason": "Install app-owned shell menu link-item scaffold for local placement customization.",
|
|
2755
|
+
"category": "shell-web",
|
|
2756
|
+
"id": "shell-web-component-menu-link-item"
|
|
2757
|
+
},
|
|
2758
|
+
{
|
|
2759
|
+
"from": "templates/src/components/menus/SurfaceAwareMenuLinkItem.vue",
|
|
2760
|
+
"to": "src/components/menus/SurfaceAwareMenuLinkItem.vue",
|
|
2761
|
+
"ownership": "app",
|
|
2762
|
+
"reason": "Install app-owned surface-aware shell menu link-item scaffold for local placement customization.",
|
|
2763
|
+
"category": "shell-web",
|
|
2764
|
+
"id": "shell-web-component-surface-aware-menu-link-item"
|
|
2765
|
+
},
|
|
2766
|
+
{
|
|
2767
|
+
"from": "templates/src/components/menus/TabLinkItem.vue",
|
|
2768
|
+
"to": "src/components/menus/TabLinkItem.vue",
|
|
2769
|
+
"ownership": "app",
|
|
2770
|
+
"reason": "Install app-owned shell tab link-item scaffold for local placement customization.",
|
|
2771
|
+
"category": "shell-web",
|
|
2772
|
+
"id": "shell-web-component-tab-link-item"
|
|
2773
|
+
},
|
|
2620
2774
|
{
|
|
2621
2775
|
"from": "templates/src/error.js",
|
|
2622
2776
|
"to": "src/error.js",
|
|
2777
|
+
"ownership": "app",
|
|
2623
2778
|
"reason": "Install app-owned error runtime policy and presenter config scaffold.",
|
|
2624
2779
|
"category": "shell-web",
|
|
2625
2780
|
"id": "shell-web-error-config"
|
|
@@ -2627,6 +2782,7 @@
|
|
|
2627
2782
|
{
|
|
2628
2783
|
"from": "templates/src/placement.js",
|
|
2629
2784
|
"to": "src/placement.js",
|
|
2785
|
+
"ownership": "app",
|
|
2630
2786
|
"reason": "Install app-owned placement registry scaffold used by shell-web placement runtime.",
|
|
2631
2787
|
"category": "shell-web",
|
|
2632
2788
|
"id": "shell-web-placement-registry"
|
|
@@ -2635,6 +2791,8 @@
|
|
|
2635
2791
|
"from": "templates/src/pages/home.vue",
|
|
2636
2792
|
"toSurface": "home",
|
|
2637
2793
|
"toSurfaceRoot": true,
|
|
2794
|
+
"ownership": "app",
|
|
2795
|
+
"expectedExistingFrom": "templates/expected-existing/src/pages/home.vue",
|
|
2638
2796
|
"reason": "Install shell-driven home wrapper page.",
|
|
2639
2797
|
"category": "shell-web",
|
|
2640
2798
|
"id": "shell-web-page-home-wrapper"
|
|
@@ -2643,6 +2801,8 @@
|
|
|
2643
2801
|
"from": "templates/src/pages/home/index.vue",
|
|
2644
2802
|
"toSurface": "home",
|
|
2645
2803
|
"toSurfacePath": "index.vue",
|
|
2804
|
+
"ownership": "app",
|
|
2805
|
+
"expectedExistingFrom": "templates/expected-existing/src/pages/home/index.vue",
|
|
2646
2806
|
"reason": "Install shell-driven home surface starter page.",
|
|
2647
2807
|
"category": "shell-web",
|
|
2648
2808
|
"id": "shell-web-page-home"
|
|
@@ -2651,6 +2811,7 @@
|
|
|
2651
2811
|
"from": "templates/src/pages/home/settings.vue",
|
|
2652
2812
|
"toSurface": "home",
|
|
2653
2813
|
"toSurfacePath": "settings.vue",
|
|
2814
|
+
"ownership": "app",
|
|
2654
2815
|
"reason": "Install shell-driven home settings shell route with section navigation.",
|
|
2655
2816
|
"category": "shell-web",
|
|
2656
2817
|
"id": "shell-web-page-home-settings-shell"
|
|
@@ -2659,7 +2820,8 @@
|
|
|
2659
2820
|
"from": "templates/src/pages/home/settings/index.vue",
|
|
2660
2821
|
"toSurface": "home",
|
|
2661
2822
|
"toSurfacePath": "settings/index.vue",
|
|
2662
|
-
"
|
|
2823
|
+
"ownership": "app",
|
|
2824
|
+
"reason": "Install shell-driven home settings index stub scaffold for app-owned landing or redirect behavior.",
|
|
2663
2825
|
"category": "shell-web",
|
|
2664
2826
|
"id": "shell-web-page-home-settings"
|
|
2665
2827
|
},
|
|
@@ -2667,6 +2829,8 @@
|
|
|
2667
2829
|
"from": "templates/src/pages/console.vue",
|
|
2668
2830
|
"toSurface": "console",
|
|
2669
2831
|
"toSurfaceRoot": true,
|
|
2832
|
+
"ownership": "app",
|
|
2833
|
+
"expectedExistingFrom": "templates/expected-existing/src/pages/console.vue",
|
|
2670
2834
|
"reason": "Install shell-driven console wrapper page.",
|
|
2671
2835
|
"category": "shell-web",
|
|
2672
2836
|
"id": "shell-web-page-console-wrapper"
|
|
@@ -2675,6 +2839,8 @@
|
|
|
2675
2839
|
"from": "templates/src/pages/console/index.vue",
|
|
2676
2840
|
"toSurface": "console",
|
|
2677
2841
|
"toSurfacePath": "index.vue",
|
|
2842
|
+
"ownership": "app",
|
|
2843
|
+
"expectedExistingFrom": "templates/expected-existing/src/pages/console/index.vue",
|
|
2678
2844
|
"reason": "Install shell-driven console page starter.",
|
|
2679
2845
|
"category": "shell-web",
|
|
2680
2846
|
"id": "shell-web-page-console"
|
|
@@ -2685,11 +2851,11 @@
|
|
|
2685
2851
|
},
|
|
2686
2852
|
{
|
|
2687
2853
|
"packageId": "@jskit-ai/storage-runtime",
|
|
2688
|
-
"version": "0.1.
|
|
2854
|
+
"version": "0.1.33",
|
|
2689
2855
|
"descriptor": {
|
|
2690
2856
|
"packageVersion": 1,
|
|
2691
2857
|
"packageId": "@jskit-ai/storage-runtime",
|
|
2692
|
-
"version": "0.1.
|
|
2858
|
+
"version": "0.1.33",
|
|
2693
2859
|
"kind": "runtime",
|
|
2694
2860
|
"dependsOn": [
|
|
2695
2861
|
"@jskit-ai/kernel"
|
|
@@ -2738,7 +2904,7 @@
|
|
|
2738
2904
|
"mutations": {
|
|
2739
2905
|
"dependencies": {
|
|
2740
2906
|
"runtime": {
|
|
2741
|
-
"@jskit-ai/kernel": "0.1.
|
|
2907
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
2742
2908
|
"unstorage": "^1.17.3"
|
|
2743
2909
|
},
|
|
2744
2910
|
"dev": {}
|
|
@@ -2754,11 +2920,11 @@
|
|
|
2754
2920
|
},
|
|
2755
2921
|
{
|
|
2756
2922
|
"packageId": "@jskit-ai/ui-generator",
|
|
2757
|
-
"version": "0.1.
|
|
2923
|
+
"version": "0.1.17",
|
|
2758
2924
|
"descriptor": {
|
|
2759
2925
|
"packageVersion": 1,
|
|
2760
2926
|
"packageId": "@jskit-ai/ui-generator",
|
|
2761
|
-
"version": "0.1.
|
|
2927
|
+
"version": "0.1.17",
|
|
2762
2928
|
"kind": "generator",
|
|
2763
2929
|
"description": "Create non-CRUD pages, reusable UI elements, and subpage hosts.",
|
|
2764
2930
|
"options": {
|
|
@@ -2796,14 +2962,14 @@
|
|
|
2796
2962
|
"inputType": "text",
|
|
2797
2963
|
"defaultValue": "",
|
|
2798
2964
|
"promptLabel": "Placement target",
|
|
2799
|
-
"promptHint": "Optional
|
|
2965
|
+
"promptHint": "Optional target for placed-element placement (format: host:position, default: shell-layout:top-right)."
|
|
2800
2966
|
},
|
|
2801
2967
|
"link-placement": {
|
|
2802
2968
|
"required": false,
|
|
2803
2969
|
"inputType": "text",
|
|
2804
2970
|
"defaultValue": "",
|
|
2805
2971
|
"promptLabel": "Link placement",
|
|
2806
|
-
"promptHint": "Optional
|
|
2972
|
+
"promptHint": "Optional target for the generated page link placement (format: host:position)."
|
|
2807
2973
|
},
|
|
2808
2974
|
"link-component-token": {
|
|
2809
2975
|
"required": false,
|
|
@@ -2817,14 +2983,14 @@
|
|
|
2817
2983
|
"inputType": "text",
|
|
2818
2984
|
"defaultValue": "",
|
|
2819
2985
|
"promptLabel": "Link to",
|
|
2820
|
-
"promptHint": "Optional explicit props.to value for the generated page link placement (example: ./notes). If omitted for pages under a detected parent subpages
|
|
2986
|
+
"promptHint": "Optional explicit props.to value for the generated page link placement (example: ./notes). If omitted for pages under a detected parent subpages target, it is inferred from the page path."
|
|
2821
2987
|
},
|
|
2822
2988
|
"target": {
|
|
2823
2989
|
"required": false,
|
|
2824
2990
|
"inputType": "text",
|
|
2825
2991
|
"defaultValue": "",
|
|
2826
2992
|
"promptLabel": "Outlet target",
|
|
2827
|
-
"promptHint": "Used by add-subpages and outlet.
|
|
2993
|
+
"promptHint": "Used by add-subpages and outlet. Must be a target in host:position format."
|
|
2828
2994
|
},
|
|
2829
2995
|
"title": {
|
|
2830
2996
|
"required": false,
|
|
@@ -2860,13 +3026,14 @@
|
|
|
2860
3026
|
"generatorPrimarySubcommand": "page",
|
|
2861
3027
|
"generatorSubcommands": {
|
|
2862
3028
|
"page": {
|
|
3029
|
+
"requiresShellWeb": true,
|
|
2863
3030
|
"entrypoint": "src/server/subcommands/page.js",
|
|
2864
3031
|
"export": "runGeneratorSubcommand",
|
|
2865
3032
|
"description": "Create a route page at an explicit target file and add a link placement entry for it.",
|
|
2866
3033
|
"longDescription": [
|
|
2867
3034
|
"This command always creates one route page file. By default, its page link is placed from the page path itself.",
|
|
2868
|
-
"If an ancestor page has already been enhanced with sub-pages, JSKIT treats that ancestor as the real
|
|
2869
|
-
"That means the generated link normally becomes a tab or child-page link under that ancestor
|
|
3035
|
+
"If an ancestor page has already been enhanced with sub-pages, JSKIT treats that ancestor outlet as the real placement target. In that case the new page is linked into the nearest parent sub-pages outlet instead of the shell menu.",
|
|
3036
|
+
"That means the generated link normally becomes a tab or child-page link under that ancestor target, and `props.to` is inferred relative to that target. If the outlet page is `index.vue`, child pages belong under `index/...` so the router keeps the parent page visible while the child route renders underneath it."
|
|
2870
3037
|
],
|
|
2871
3038
|
"positionalArgs": [
|
|
2872
3039
|
{
|
|
@@ -2883,8 +3050,8 @@
|
|
|
2883
3050
|
"force"
|
|
2884
3051
|
],
|
|
2885
3052
|
"notes": [
|
|
2886
|
-
"If a nearest parent subpages
|
|
2887
|
-
"If the parent
|
|
3053
|
+
"If a nearest parent subpages target is found, placement, link component token, and props.to are inferred automatically.",
|
|
3054
|
+
"If the parent target page is index.vue, child pages belong under index/...",
|
|
2888
3055
|
"If the target page file already exists, rerun with --force to overwrite it."
|
|
2889
3056
|
],
|
|
2890
3057
|
"examples": [
|
|
@@ -2908,6 +3075,7 @@
|
|
|
2908
3075
|
]
|
|
2909
3076
|
},
|
|
2910
3077
|
"placed-element": {
|
|
3078
|
+
"requiresShellWeb": true,
|
|
2911
3079
|
"entrypoint": "src/server/subcommands/element.js",
|
|
2912
3080
|
"export": "runGeneratorSubcommand",
|
|
2913
3081
|
"description": "Create a Vue component file under the chosen component directory (default: src/components) and add a placement entry that renders it.",
|
|
@@ -2949,6 +3117,7 @@
|
|
|
2949
3117
|
]
|
|
2950
3118
|
},
|
|
2951
3119
|
"add-subpages": {
|
|
3120
|
+
"requiresShellWeb": true,
|
|
2952
3121
|
"entrypoint": "src/server/subcommands/addSubpages.js",
|
|
2953
3122
|
"export": "runGeneratorSubcommand",
|
|
2954
3123
|
"description": "Upgrade an existing page into a routed subpage host with SectionContainerShell, ShellOutlet, and RouterView.",
|
|
@@ -2967,7 +3136,7 @@
|
|
|
2967
3136
|
],
|
|
2968
3137
|
"notes": [
|
|
2969
3138
|
"Use this when the page should render shared content plus child routes below it.",
|
|
2970
|
-
"If the
|
|
3139
|
+
"If the outlet page is index.vue, create child pages under index/..."
|
|
2971
3140
|
],
|
|
2972
3141
|
"examples": [
|
|
2973
3142
|
{
|
|
@@ -2993,13 +3162,14 @@
|
|
|
2993
3162
|
]
|
|
2994
3163
|
},
|
|
2995
3164
|
"outlet": {
|
|
3165
|
+
"requiresShellWeb": true,
|
|
2996
3166
|
"entrypoint": "src/server/subcommands/outlet.js",
|
|
2997
3167
|
"export": "runGeneratorSubcommand",
|
|
2998
3168
|
"description": "Inject a generic ShellOutlet block into an existing Vue page/component.",
|
|
2999
3169
|
"longDescription": [
|
|
3000
3170
|
"A ShellOutlet creates a named placement target inside a Vue file. That target is what other parts of JSKIT render into later.",
|
|
3001
|
-
"After an outlet exists, `jskit list-placements` will discover it and show
|
|
3002
|
-
"Commands that create placed UI, such as `ui-generator placed-element`, and commands that add page links can then target that outlet by writing placement entries that point at the same
|
|
3171
|
+
"After an outlet exists, `jskit list-placements` will discover it and show its `target`. That makes the outlet visible to humans and to generators that need a placement destination.",
|
|
3172
|
+
"Commands that create placed UI, such as `ui-generator placed-element`, and commands that add page links can then target that outlet by writing placement entries that point at the same target."
|
|
3003
3173
|
],
|
|
3004
3174
|
"positionalArgs": [
|
|
3005
3175
|
{
|
|
@@ -3015,7 +3185,7 @@
|
|
|
3015
3185
|
"target"
|
|
3016
3186
|
],
|
|
3017
3187
|
"notes": [
|
|
3018
|
-
"Use --target host
|
|
3188
|
+
"Use --target host:position."
|
|
3019
3189
|
],
|
|
3020
3190
|
"examples": [
|
|
3021
3191
|
{
|
|
@@ -3023,7 +3193,7 @@
|
|
|
3023
3193
|
"lines": [
|
|
3024
3194
|
"npx jskit generate ui-generator outlet \\",
|
|
3025
3195
|
" src/components/ContactSummaryCard.vue \\",
|
|
3026
|
-
" --target contact-view"
|
|
3196
|
+
" --target contact-view:sub-pages"
|
|
3027
3197
|
]
|
|
3028
3198
|
},
|
|
3029
3199
|
{
|
|
@@ -3053,7 +3223,7 @@
|
|
|
3053
3223
|
"mutations": {
|
|
3054
3224
|
"dependencies": {
|
|
3055
3225
|
"runtime": {
|
|
3056
|
-
"@jskit-ai/users-web": "0.1.
|
|
3226
|
+
"@jskit-ai/users-web": "0.1.49"
|
|
3057
3227
|
},
|
|
3058
3228
|
"dev": {}
|
|
3059
3229
|
},
|
|
@@ -3068,11 +3238,11 @@
|
|
|
3068
3238
|
},
|
|
3069
3239
|
{
|
|
3070
3240
|
"packageId": "@jskit-ai/uploads-image-web",
|
|
3071
|
-
"version": "0.1.
|
|
3241
|
+
"version": "0.1.12",
|
|
3072
3242
|
"descriptor": {
|
|
3073
3243
|
"packageVersion": 1,
|
|
3074
3244
|
"packageId": "@jskit-ai/uploads-image-web",
|
|
3075
|
-
"version": "0.1.
|
|
3245
|
+
"version": "0.1.12",
|
|
3076
3246
|
"kind": "runtime",
|
|
3077
3247
|
"description": "Reusable client-side image upload runtime with pre-upload image editing.",
|
|
3078
3248
|
"dependsOn": [
|
|
@@ -3136,7 +3306,7 @@
|
|
|
3136
3306
|
"mutations": {
|
|
3137
3307
|
"dependencies": {
|
|
3138
3308
|
"runtime": {
|
|
3139
|
-
"@jskit-ai/uploads-runtime": "0.1.
|
|
3309
|
+
"@jskit-ai/uploads-runtime": "0.1.12",
|
|
3140
3310
|
"@uppy/compressor": "^3.1.0",
|
|
3141
3311
|
"@uppy/core": "^5.2.0",
|
|
3142
3312
|
"@uppy/dashboard": "^5.1.1",
|
|
@@ -3156,11 +3326,11 @@
|
|
|
3156
3326
|
},
|
|
3157
3327
|
{
|
|
3158
3328
|
"packageId": "@jskit-ai/uploads-runtime",
|
|
3159
|
-
"version": "0.1.
|
|
3329
|
+
"version": "0.1.12",
|
|
3160
3330
|
"descriptor": {
|
|
3161
3331
|
"packageVersion": 1,
|
|
3162
3332
|
"packageId": "@jskit-ai/uploads-runtime",
|
|
3163
|
-
"version": "0.1.
|
|
3333
|
+
"version": "0.1.12",
|
|
3164
3334
|
"kind": "runtime",
|
|
3165
3335
|
"description": "Reusable upload runtime primitives for multipart parsing, policy validation, and blob storage.",
|
|
3166
3336
|
"dependsOn": [
|
|
@@ -3230,7 +3400,7 @@
|
|
|
3230
3400
|
"dependencies": {
|
|
3231
3401
|
"runtime": {
|
|
3232
3402
|
"@fastify/multipart": "^9.4.0",
|
|
3233
|
-
"@jskit-ai/kernel": "0.1.
|
|
3403
|
+
"@jskit-ai/kernel": "0.1.34"
|
|
3234
3404
|
},
|
|
3235
3405
|
"dev": {}
|
|
3236
3406
|
},
|
|
@@ -3245,11 +3415,11 @@
|
|
|
3245
3415
|
},
|
|
3246
3416
|
{
|
|
3247
3417
|
"packageId": "@jskit-ai/users-core",
|
|
3248
|
-
"version": "0.1.
|
|
3418
|
+
"version": "0.1.44",
|
|
3249
3419
|
"descriptor": {
|
|
3250
3420
|
"packageVersion": 1,
|
|
3251
3421
|
"packageId": "@jskit-ai/users-core",
|
|
3252
|
-
"version": "0.1.
|
|
3422
|
+
"version": "0.1.44",
|
|
3253
3423
|
"kind": "runtime",
|
|
3254
3424
|
"description": "Users/account runtime plus HTTP routes for account and console features.",
|
|
3255
3425
|
"dependsOn": [
|
|
@@ -3385,11 +3555,11 @@
|
|
|
3385
3555
|
"mutations": {
|
|
3386
3556
|
"dependencies": {
|
|
3387
3557
|
"runtime": {
|
|
3388
|
-
"@jskit-ai/auth-core": "0.1.
|
|
3389
|
-
"@jskit-ai/database-runtime": "0.1.
|
|
3390
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
3391
|
-
"@jskit-ai/kernel": "0.1.
|
|
3392
|
-
"@jskit-ai/uploads-runtime": "0.1.
|
|
3558
|
+
"@jskit-ai/auth-core": "0.1.33",
|
|
3559
|
+
"@jskit-ai/database-runtime": "0.1.34",
|
|
3560
|
+
"@jskit-ai/http-runtime": "0.1.33",
|
|
3561
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
3562
|
+
"@jskit-ai/uploads-runtime": "0.1.12",
|
|
3393
3563
|
"@fastify/type-provider-typebox": "^6.1.0",
|
|
3394
3564
|
"typebox": "^1.0.81"
|
|
3395
3565
|
},
|
|
@@ -3500,14 +3670,15 @@
|
|
|
3500
3670
|
},
|
|
3501
3671
|
{
|
|
3502
3672
|
"packageId": "@jskit-ai/users-web",
|
|
3503
|
-
"version": "0.1.
|
|
3673
|
+
"version": "0.1.49",
|
|
3504
3674
|
"descriptor": {
|
|
3505
3675
|
"packageVersion": 1,
|
|
3506
3676
|
"packageId": "@jskit-ai/users-web",
|
|
3507
|
-
"version": "0.1.
|
|
3677
|
+
"version": "0.1.49",
|
|
3508
3678
|
"kind": "runtime",
|
|
3509
|
-
"description": "Users web module: account/profile UI plus shared
|
|
3679
|
+
"description": "Users web module: account/profile UI plus shared users web widgets.",
|
|
3510
3680
|
"dependsOn": [
|
|
3681
|
+
"@jskit-ai/auth-web",
|
|
3511
3682
|
"@jskit-ai/http-runtime",
|
|
3512
3683
|
"@jskit-ai/shell-web",
|
|
3513
3684
|
"@jskit-ai/uploads-image-web",
|
|
@@ -3550,14 +3721,6 @@
|
|
|
3550
3721
|
"subpath": "./client/components/ProfileClientElement",
|
|
3551
3722
|
"summary": "Exports profile settings client element scaffold component."
|
|
3552
3723
|
},
|
|
3553
|
-
{
|
|
3554
|
-
"subpath": "./client/components/ConsoleSettingsClientElement",
|
|
3555
|
-
"summary": "Exports console settings landing-page client element."
|
|
3556
|
-
},
|
|
3557
|
-
{
|
|
3558
|
-
"subpath": "./client/components/WorkspaceSettingsClientElement",
|
|
3559
|
-
"summary": "Exports workspace settings client element."
|
|
3560
|
-
},
|
|
3561
3724
|
{
|
|
3562
3725
|
"subpath": "./client/composables/useAddEdit",
|
|
3563
3726
|
"summary": "Exports add/edit operation composable."
|
|
@@ -3598,9 +3761,8 @@
|
|
|
3598
3761
|
"containerTokens": {
|
|
3599
3762
|
"server": [],
|
|
3600
3763
|
"client": [
|
|
3601
|
-
"users.web.shell.menu-link-item",
|
|
3602
|
-
"users.web.shell.surface-aware-menu-link-item",
|
|
3603
3764
|
"users.web.profile.menu.surface-switch-item",
|
|
3765
|
+
"users.web.home.tools.widget",
|
|
3604
3766
|
"users.web.profile.element",
|
|
3605
3767
|
"users.web.bootstrap-placement.runtime"
|
|
3606
3768
|
]
|
|
@@ -3610,8 +3772,24 @@
|
|
|
3610
3772
|
"placements": {
|
|
3611
3773
|
"outlets": [
|
|
3612
3774
|
{
|
|
3613
|
-
"
|
|
3614
|
-
"
|
|
3775
|
+
"target": "home-tools:primary-menu",
|
|
3776
|
+
"defaultLinkComponentToken": "local.main.ui.surface-aware-menu-link-item",
|
|
3777
|
+
"surfaces": [
|
|
3778
|
+
"home"
|
|
3779
|
+
],
|
|
3780
|
+
"source": "src/client/components/UsersHomeToolsWidget.vue"
|
|
3781
|
+
},
|
|
3782
|
+
{
|
|
3783
|
+
"target": "workspace-tools:primary-menu",
|
|
3784
|
+
"defaultLinkComponentToken": "local.main.ui.surface-aware-menu-link-item",
|
|
3785
|
+
"surfaces": [
|
|
3786
|
+
"admin"
|
|
3787
|
+
],
|
|
3788
|
+
"source": "src/client/components/UsersWorkspaceToolsWidget.vue"
|
|
3789
|
+
},
|
|
3790
|
+
{
|
|
3791
|
+
"target": "console-settings:primary-menu",
|
|
3792
|
+
"defaultLinkComponentToken": "local.main.ui.surface-aware-menu-link-item",
|
|
3615
3793
|
"surfaces": [
|
|
3616
3794
|
"console"
|
|
3617
3795
|
],
|
|
@@ -3621,8 +3799,7 @@
|
|
|
3621
3799
|
"contributions": [
|
|
3622
3800
|
{
|
|
3623
3801
|
"id": "users.profile.menu.surface-switch",
|
|
3624
|
-
"
|
|
3625
|
-
"position": "primary-menu",
|
|
3802
|
+
"target": "auth-profile-menu:primary-menu",
|
|
3626
3803
|
"surfaces": [
|
|
3627
3804
|
"*"
|
|
3628
3805
|
],
|
|
@@ -3633,27 +3810,58 @@
|
|
|
3633
3810
|
},
|
|
3634
3811
|
{
|
|
3635
3812
|
"id": "users.profile.menu.settings",
|
|
3636
|
-
"
|
|
3637
|
-
"position": "primary-menu",
|
|
3813
|
+
"target": "auth-profile-menu:primary-menu",
|
|
3638
3814
|
"surfaces": [
|
|
3639
3815
|
"*"
|
|
3640
3816
|
],
|
|
3641
3817
|
"order": 500,
|
|
3642
|
-
"componentToken": "
|
|
3818
|
+
"componentToken": "auth.web.profile.menu.link-item",
|
|
3643
3819
|
"when": "auth.authenticated === true",
|
|
3644
3820
|
"source": "mutations.text#users-web-profile-settings-placement"
|
|
3645
3821
|
},
|
|
3822
|
+
{
|
|
3823
|
+
"id": "users.home.menu.home",
|
|
3824
|
+
"target": "shell-layout:primary-menu",
|
|
3825
|
+
"surfaces": [
|
|
3826
|
+
"*"
|
|
3827
|
+
],
|
|
3828
|
+
"order": 50,
|
|
3829
|
+
"componentToken": "local.main.ui.surface-aware-menu-link-item",
|
|
3830
|
+
"when": "auth.authenticated === true",
|
|
3831
|
+
"source": "mutations.text#users-web-home-shell-menu-placement"
|
|
3832
|
+
},
|
|
3646
3833
|
{
|
|
3647
3834
|
"id": "users.console.menu.settings",
|
|
3648
|
-
"
|
|
3649
|
-
"position": "primary-menu",
|
|
3835
|
+
"target": "shell-layout:primary-menu",
|
|
3650
3836
|
"surfaces": [
|
|
3651
3837
|
"console"
|
|
3652
3838
|
],
|
|
3653
3839
|
"order": 100,
|
|
3654
|
-
"componentToken": "
|
|
3840
|
+
"componentToken": "local.main.ui.menu-link-item",
|
|
3655
3841
|
"when": "auth.authenticated === true",
|
|
3656
3842
|
"source": "mutations.text#users-web-console-settings-placement"
|
|
3843
|
+
},
|
|
3844
|
+
{
|
|
3845
|
+
"id": "users.home.tools.widget",
|
|
3846
|
+
"target": "shell-layout:top-right",
|
|
3847
|
+
"surfaces": [
|
|
3848
|
+
"home"
|
|
3849
|
+
],
|
|
3850
|
+
"order": 900,
|
|
3851
|
+
"componentToken": "users.web.home.tools.widget",
|
|
3852
|
+
"when": "auth.authenticated === true",
|
|
3853
|
+
"source": "mutations.text#users-web-home-tools-placement"
|
|
3854
|
+
},
|
|
3855
|
+
{
|
|
3856
|
+
"id": "users.home.menu.settings",
|
|
3857
|
+
"target": "home-tools:primary-menu",
|
|
3858
|
+
"surfaces": [
|
|
3859
|
+
"home"
|
|
3860
|
+
],
|
|
3861
|
+
"order": 100,
|
|
3862
|
+
"componentToken": "local.main.ui.surface-aware-menu-link-item",
|
|
3863
|
+
"when": "auth.authenticated === true",
|
|
3864
|
+
"source": "mutations.text#users-web-home-tools-placement"
|
|
3657
3865
|
}
|
|
3658
3866
|
]
|
|
3659
3867
|
}
|
|
@@ -3664,12 +3872,12 @@
|
|
|
3664
3872
|
"runtime": {
|
|
3665
3873
|
"@tanstack/vue-query": "5.92.12",
|
|
3666
3874
|
"@mdi/js": "^7.4.47",
|
|
3667
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
3668
|
-
"@jskit-ai/realtime": "0.1.
|
|
3669
|
-
"@jskit-ai/kernel": "0.1.
|
|
3670
|
-
"@jskit-ai/shell-web": "0.1.
|
|
3671
|
-
"@jskit-ai/uploads-image-web": "0.1.
|
|
3672
|
-
"@jskit-ai/users-core": "0.1.
|
|
3875
|
+
"@jskit-ai/http-runtime": "0.1.33",
|
|
3876
|
+
"@jskit-ai/realtime": "0.1.33",
|
|
3877
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
3878
|
+
"@jskit-ai/shell-web": "0.1.33",
|
|
3879
|
+
"@jskit-ai/uploads-image-web": "0.1.12",
|
|
3880
|
+
"@jskit-ai/users-core": "0.1.44",
|
|
3673
3881
|
"vuetify": "^4.0.0"
|
|
3674
3882
|
},
|
|
3675
3883
|
"dev": {}
|
|
@@ -3737,7 +3945,7 @@
|
|
|
3737
3945
|
"from": "templates/src/pages/console/settings/index.vue",
|
|
3738
3946
|
"toSurface": "console",
|
|
3739
3947
|
"toSurfacePath": "settings/index.vue",
|
|
3740
|
-
"reason": "Install console settings
|
|
3948
|
+
"reason": "Install console settings index stub scaffold for app-owned landing or redirect behavior.",
|
|
3741
3949
|
"category": "users-web",
|
|
3742
3950
|
"id": "users-web-page-console-settings"
|
|
3743
3951
|
}
|
|
@@ -3758,7 +3966,7 @@
|
|
|
3758
3966
|
"file": "src/placement.js",
|
|
3759
3967
|
"position": "bottom",
|
|
3760
3968
|
"skipIfContains": "id: \"users.profile.menu.surface-switch\"",
|
|
3761
|
-
"value": "\naddPlacement({\n id: \"users.profile.menu.surface-switch\",\n
|
|
3969
|
+
"value": "\naddPlacement({\n id: \"users.profile.menu.surface-switch\",\n target: \"auth-profile-menu:primary-menu\",\n surfaces: [\"*\"],\n order: 100,\n componentToken: \"users.web.profile.menu.surface-switch-item\",\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
|
|
3762
3970
|
"reason": "Append users-web profile surface switch placement into app-owned placement registry.",
|
|
3763
3971
|
"category": "users-web",
|
|
3764
3972
|
"id": "users-web-profile-surface-switch-placement"
|
|
@@ -3768,20 +3976,40 @@
|
|
|
3768
3976
|
"file": "src/placement.js",
|
|
3769
3977
|
"position": "bottom",
|
|
3770
3978
|
"skipIfContains": "id: \"users.profile.menu.settings\"",
|
|
3771
|
-
"value": "\naddPlacement({\n id: \"users.profile.menu.settings\",\n
|
|
3979
|
+
"value": "\naddPlacement({\n id: \"users.profile.menu.settings\",\n target: \"auth-profile-menu:primary-menu\",\n surfaces: [\"*\"],\n order: 500,\n componentToken: \"auth.web.profile.menu.link-item\",\n props: {\n label: \"Settings\",\n to: \"/account\"\n },\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
|
|
3772
3980
|
"reason": "Append users-web profile settings menu placement into app-owned placement registry.",
|
|
3773
3981
|
"category": "users-web",
|
|
3774
3982
|
"id": "users-web-profile-settings-placement"
|
|
3775
3983
|
},
|
|
3984
|
+
{
|
|
3985
|
+
"op": "append-text",
|
|
3986
|
+
"file": "src/placement.js",
|
|
3987
|
+
"position": "bottom",
|
|
3988
|
+
"skipIfContains": "id: \"users.home.menu.home\"",
|
|
3989
|
+
"value": "\naddPlacement({\n id: \"users.home.menu.home\",\n target: \"shell-layout:primary-menu\",\n surfaces: [\"*\"],\n order: 50,\n componentToken: \"local.main.ui.surface-aware-menu-link-item\",\n props: {\n label: \"Home\",\n surface: \"home\",\n workspaceSuffix: \"/\",\n nonWorkspaceSuffix: \"/\",\n exact: true\n },\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
|
|
3990
|
+
"reason": "Append users-web home shell menu placement into app-owned placement registry.",
|
|
3991
|
+
"category": "users-web",
|
|
3992
|
+
"id": "users-web-home-shell-menu-placement"
|
|
3993
|
+
},
|
|
3776
3994
|
{
|
|
3777
3995
|
"op": "append-text",
|
|
3778
3996
|
"file": "src/placement.js",
|
|
3779
3997
|
"position": "bottom",
|
|
3780
3998
|
"skipIfContains": "id: \"users.console.menu.settings\"",
|
|
3781
|
-
"value": "\naddPlacement({\n id: \"users.console.menu.settings\",\n
|
|
3999
|
+
"value": "\naddPlacement({\n id: \"users.console.menu.settings\",\n target: \"shell-layout:primary-menu\",\n surfaces: [\"console\"],\n order: 100,\n componentToken: \"local.main.ui.menu-link-item\",\n props: {\n label: \"Settings\",\n to: \"/console/settings\",\n icon: \"mdi-cog-outline\"\n },\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
|
|
3782
4000
|
"reason": "Append users-web console settings menu placement into app-owned placement registry.",
|
|
3783
4001
|
"category": "users-web",
|
|
3784
4002
|
"id": "users-web-console-settings-placement"
|
|
4003
|
+
},
|
|
4004
|
+
{
|
|
4005
|
+
"op": "append-text",
|
|
4006
|
+
"file": "src/placement.js",
|
|
4007
|
+
"position": "bottom",
|
|
4008
|
+
"skipIfContains": "id: \"users.home.tools.widget\"",
|
|
4009
|
+
"value": "\naddPlacement({\n id: \"users.home.tools.widget\",\n target: \"shell-layout:top-right\",\n surfaces: [\"home\"],\n order: 900,\n componentToken: \"users.web.home.tools.widget\",\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n\naddPlacement({\n id: \"users.home.menu.settings\",\n target: \"home-tools:primary-menu\",\n surfaces: [\"home\"],\n order: 100,\n componentToken: \"local.main.ui.surface-aware-menu-link-item\",\n props: {\n label: \"Settings\",\n surface: \"home\",\n workspaceSuffix: \"/settings\",\n nonWorkspaceSuffix: \"/settings\"\n },\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
|
|
4010
|
+
"reason": "Append users-web home tools widget and settings menu placements into app-owned placement registry.",
|
|
4011
|
+
"category": "users-web",
|
|
4012
|
+
"id": "users-web-home-tools-placement"
|
|
3785
4013
|
}
|
|
3786
4014
|
]
|
|
3787
4015
|
}
|
|
@@ -3789,11 +4017,11 @@
|
|
|
3789
4017
|
},
|
|
3790
4018
|
{
|
|
3791
4019
|
"packageId": "@jskit-ai/workspaces-core",
|
|
3792
|
-
"version": "0.1.
|
|
4020
|
+
"version": "0.1.10",
|
|
3793
4021
|
"descriptor": {
|
|
3794
4022
|
"packageVersion": 1,
|
|
3795
4023
|
"packageId": "@jskit-ai/workspaces-core",
|
|
3796
|
-
"version": "0.1.
|
|
4024
|
+
"version": "0.1.10",
|
|
3797
4025
|
"kind": "runtime",
|
|
3798
4026
|
"description": "Workspace tenancy runtime plus HTTP routes, role catalog, and workspace config scaffolding.",
|
|
3799
4027
|
"dependsOn": [
|
|
@@ -3902,7 +4130,7 @@
|
|
|
3902
4130
|
"mutations": {
|
|
3903
4131
|
"dependencies": {
|
|
3904
4132
|
"runtime": {
|
|
3905
|
-
"@jskit-ai/users-core": "0.1.
|
|
4133
|
+
"@jskit-ai/users-core": "0.1.44"
|
|
3906
4134
|
},
|
|
3907
4135
|
"dev": {}
|
|
3908
4136
|
},
|
|
@@ -4031,7 +4259,7 @@
|
|
|
4031
4259
|
"file": "config/public.js",
|
|
4032
4260
|
"position": "bottom",
|
|
4033
4261
|
"skipIfContains": "config.workspaceSwitching =",
|
|
4034
|
-
"value": "\nconfig.workspaceSwitching = true;\nconfig.workspaceInvitations = {\n enabled: true,\n allowInPersonalMode: true\n};\
|
|
4262
|
+
"value": "\nconfig.workspaceSwitching = true;\nconfig.workspaceInvitations = {\n enabled: true,\n allowInPersonalMode: true\n};\n",
|
|
4035
4263
|
"reason": "Append default workspace feature toggles into app-owned config.",
|
|
4036
4264
|
"category": "workspaces-core",
|
|
4037
4265
|
"id": "users-core-public-config"
|
|
@@ -4092,11 +4320,11 @@
|
|
|
4092
4320
|
},
|
|
4093
4321
|
{
|
|
4094
4322
|
"packageId": "@jskit-ai/workspaces-web",
|
|
4095
|
-
"version": "0.1.
|
|
4323
|
+
"version": "0.1.10",
|
|
4096
4324
|
"descriptor": {
|
|
4097
4325
|
"packageVersion": 1,
|
|
4098
4326
|
"packageId": "@jskit-ai/workspaces-web",
|
|
4099
|
-
"version": "0.1.
|
|
4327
|
+
"version": "0.1.10",
|
|
4100
4328
|
"kind": "runtime",
|
|
4101
4329
|
"description": "Workspace web module: workspace selector, tools widget, workspace surfaces, and members/settings UI.",
|
|
4102
4330
|
"dependsOn": [
|
|
@@ -4140,8 +4368,7 @@
|
|
|
4140
4368
|
"users.web.workspace.tools.widget",
|
|
4141
4369
|
"users.web.workspace-settings.menu-item",
|
|
4142
4370
|
"users.web.workspace-members.menu-item",
|
|
4143
|
-
"users.web.members-admin.element"
|
|
4144
|
-
"users.web.workspace-settings.element"
|
|
4371
|
+
"users.web.members-admin.element"
|
|
4145
4372
|
]
|
|
4146
4373
|
}
|
|
4147
4374
|
},
|
|
@@ -4149,8 +4376,8 @@
|
|
|
4149
4376
|
"placements": {
|
|
4150
4377
|
"outlets": [
|
|
4151
4378
|
{
|
|
4152
|
-
"
|
|
4153
|
-
"
|
|
4379
|
+
"target": "admin-settings:primary-menu",
|
|
4380
|
+
"defaultLinkComponentToken": "local.main.ui.surface-aware-menu-link-item",
|
|
4154
4381
|
"surfaces": [
|
|
4155
4382
|
"admin"
|
|
4156
4383
|
],
|
|
@@ -4160,8 +4387,7 @@
|
|
|
4160
4387
|
"contributions": [
|
|
4161
4388
|
{
|
|
4162
4389
|
"id": "users.workspace.selector",
|
|
4163
|
-
"
|
|
4164
|
-
"position": "top-left",
|
|
4390
|
+
"target": "shell-layout:top-left",
|
|
4165
4391
|
"surfaces": [
|
|
4166
4392
|
"*"
|
|
4167
4393
|
],
|
|
@@ -4172,8 +4398,7 @@
|
|
|
4172
4398
|
},
|
|
4173
4399
|
{
|
|
4174
4400
|
"id": "users.account.invites.cue",
|
|
4175
|
-
"
|
|
4176
|
-
"position": "top-right",
|
|
4401
|
+
"target": "shell-layout:top-right",
|
|
4177
4402
|
"surfaces": [
|
|
4178
4403
|
"*"
|
|
4179
4404
|
],
|
|
@@ -4184,8 +4409,7 @@
|
|
|
4184
4409
|
},
|
|
4185
4410
|
{
|
|
4186
4411
|
"id": "users.workspace.tools.widget",
|
|
4187
|
-
"
|
|
4188
|
-
"position": "top-right",
|
|
4412
|
+
"target": "shell-layout:top-right",
|
|
4189
4413
|
"surfaces": [
|
|
4190
4414
|
"admin"
|
|
4191
4415
|
],
|
|
@@ -4195,8 +4419,7 @@
|
|
|
4195
4419
|
},
|
|
4196
4420
|
{
|
|
4197
4421
|
"id": "users.workspace.menu.workspace-settings",
|
|
4198
|
-
"
|
|
4199
|
-
"position": "primary-menu",
|
|
4422
|
+
"target": "workspace-tools:primary-menu",
|
|
4200
4423
|
"surfaces": [
|
|
4201
4424
|
"admin"
|
|
4202
4425
|
],
|
|
@@ -4206,25 +4429,13 @@
|
|
|
4206
4429
|
},
|
|
4207
4430
|
{
|
|
4208
4431
|
"id": "users.workspace.menu.members",
|
|
4209
|
-
"
|
|
4210
|
-
"position": "primary-menu",
|
|
4432
|
+
"target": "workspace-tools:primary-menu",
|
|
4211
4433
|
"surfaces": [
|
|
4212
4434
|
"admin"
|
|
4213
4435
|
],
|
|
4214
4436
|
"order": 200,
|
|
4215
4437
|
"componentToken": "users.web.workspace-members.menu-item",
|
|
4216
4438
|
"source": "mutations.text#users-web-placement-block"
|
|
4217
|
-
},
|
|
4218
|
-
{
|
|
4219
|
-
"id": "users.workspace.settings.general",
|
|
4220
|
-
"host": "admin-settings",
|
|
4221
|
-
"position": "primary-menu",
|
|
4222
|
-
"surfaces": [
|
|
4223
|
-
"admin"
|
|
4224
|
-
],
|
|
4225
|
-
"order": 100,
|
|
4226
|
-
"componentToken": "users.web.shell.surface-aware-menu-link-item",
|
|
4227
|
-
"source": "mutations.text#users-web-workspace-settings-general-placement"
|
|
4228
4439
|
}
|
|
4229
4440
|
]
|
|
4230
4441
|
}
|
|
@@ -4233,8 +4444,8 @@
|
|
|
4233
4444
|
"mutations": {
|
|
4234
4445
|
"dependencies": {
|
|
4235
4446
|
"runtime": {
|
|
4236
|
-
"@jskit-ai/workspaces-core": "0.1.
|
|
4237
|
-
"@jskit-ai/users-web": "0.1.
|
|
4447
|
+
"@jskit-ai/workspaces-core": "0.1.10",
|
|
4448
|
+
"@jskit-ai/users-web": "0.1.49"
|
|
4238
4449
|
},
|
|
4239
4450
|
"dev": {}
|
|
4240
4451
|
},
|
|
@@ -4377,7 +4588,7 @@
|
|
|
4377
4588
|
"from": "templates/src/pages/admin/workspace/settings/index.vue",
|
|
4378
4589
|
"toSurface": "admin",
|
|
4379
4590
|
"toSurfacePath": "workspace/settings/index.vue",
|
|
4380
|
-
"reason": "Install workspace settings
|
|
4591
|
+
"reason": "Install workspace settings index stub scaffold for app-owned landing or redirect behavior.",
|
|
4381
4592
|
"category": "workspaces-web",
|
|
4382
4593
|
"id": "users-web-page-admin-workspace-settings",
|
|
4383
4594
|
"when": {
|
|
@@ -4395,7 +4606,7 @@
|
|
|
4395
4606
|
"file": "src/placement.js",
|
|
4396
4607
|
"position": "bottom",
|
|
4397
4608
|
"skipIfContains": "id: \"users.workspace.selector\"",
|
|
4398
|
-
"value": "\naddPlacement({\n id: \"users.workspace.selector\",\n
|
|
4609
|
+
"value": "\naddPlacement({\n id: \"users.workspace.selector\",\n target: \"shell-layout:top-left\",\n surfaces: [\"*\"],\n order: 200,\n componentToken: \"users.web.workspace.selector\",\n props: {\n allowOnNonWorkspaceSurface: true,\n targetSurfaceId: \"app\"\n },\n when: ({ auth }) => {\n return Boolean(auth?.authenticated);\n }\n});\n\naddPlacement({\n id: \"users.account.invites.cue\",\n target: \"shell-layout:top-right\",\n surfaces: [\"*\"],\n order: 850,\n componentToken: \"local.main.account.pending-invites.cue\",\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n\naddPlacement({\n id: \"users.workspace.tools.widget\",\n target: \"shell-layout:top-right\",\n surfaces: [\"admin\"],\n order: 900,\n componentToken: \"users.web.workspace.tools.widget\"\n});\n\naddPlacement({\n id: \"users.workspace.menu.workspace-settings\",\n target: \"workspace-tools:primary-menu\",\n surfaces: [\"admin\"],\n order: 100,\n componentToken: \"users.web.workspace-settings.menu-item\"\n});\n\naddPlacement({\n id: \"users.workspace.menu.members\",\n target: \"workspace-tools:primary-menu\",\n surfaces: [\"admin\"],\n order: 200,\n componentToken: \"users.web.workspace-members.menu-item\"\n});\n",
|
|
4399
4610
|
"reason": "Append workspace placement entries into app-owned placement registry.",
|
|
4400
4611
|
"category": "workspaces-web",
|
|
4401
4612
|
"id": "users-web-placement-block",
|
|
@@ -4426,23 +4637,6 @@
|
|
|
4426
4637
|
"reason": "Bind app-owned account pending invites cue component token into local main client provider registry.",
|
|
4427
4638
|
"category": "workspaces-web",
|
|
4428
4639
|
"id": "users-web-main-client-provider-account-invites-register"
|
|
4429
|
-
},
|
|
4430
|
-
{
|
|
4431
|
-
"op": "append-text",
|
|
4432
|
-
"file": "src/placement.js",
|
|
4433
|
-
"position": "bottom",
|
|
4434
|
-
"skipIfContains": "id: \"users.workspace.settings.general\"",
|
|
4435
|
-
"value": "\naddPlacement({\n id: \"users.workspace.settings.general\",\n host: \"admin-settings\",\n position: \"primary-menu\",\n surfaces: [\"admin\"],\n order: 100,\n componentToken: \"users.web.shell.surface-aware-menu-link-item\",\n props: {\n label: \"General\",\n surface: \"admin\",\n workspaceSuffix: \"/workspace/settings\",\n nonWorkspaceSuffix: \"/workspace/settings\"\n },\n when: ({ auth }) => Boolean(auth?.authenticated)\n});\n",
|
|
4436
|
-
"reason": "Append workspace settings general-page placement into app-owned placement registry.",
|
|
4437
|
-
"category": "workspaces-web",
|
|
4438
|
-
"id": "users-web-workspace-settings-general-placement",
|
|
4439
|
-
"when": {
|
|
4440
|
-
"config": "tenancyMode",
|
|
4441
|
-
"in": [
|
|
4442
|
-
"personal",
|
|
4443
|
-
"workspaces"
|
|
4444
|
-
]
|
|
4445
|
-
}
|
|
4446
4640
|
}
|
|
4447
4641
|
]
|
|
4448
4642
|
}
|