@jskit-ai/jskit-catalog 0.1.41 → 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 +378 -215
- 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": {
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"inputType": "text",
|
|
59
59
|
"defaultValue": "",
|
|
60
60
|
"promptLabel": "Link placement",
|
|
61
|
-
"promptHint": "Optional
|
|
61
|
+
"promptHint": "Optional target for the generated page link placement (format: host:position)."
|
|
62
62
|
},
|
|
63
63
|
"link-component-token": {
|
|
64
64
|
"required": false,
|
|
@@ -171,6 +171,7 @@
|
|
|
171
171
|
]
|
|
172
172
|
},
|
|
173
173
|
"page": {
|
|
174
|
+
"requiresShellWeb": true,
|
|
174
175
|
"entrypoint": "src/server/subcommands/page.js",
|
|
175
176
|
"export": "runGeneratorSubcommand",
|
|
176
177
|
"description": "Create an assistant runtime page at an explicit target file relative to src/pages/.",
|
|
@@ -213,6 +214,7 @@
|
|
|
213
214
|
]
|
|
214
215
|
},
|
|
215
216
|
"settings-page": {
|
|
217
|
+
"requiresShellWeb": true,
|
|
216
218
|
"entrypoint": "src/server/subcommands/settingsPage.js",
|
|
217
219
|
"export": "runGeneratorSubcommand",
|
|
218
220
|
"description": "Create an assistant settings page at an explicit target file relative to src/pages/.",
|
|
@@ -354,11 +356,11 @@
|
|
|
354
356
|
},
|
|
355
357
|
{
|
|
356
358
|
"packageId": "@jskit-ai/assistant-core",
|
|
357
|
-
"version": "0.1.
|
|
359
|
+
"version": "0.1.10",
|
|
358
360
|
"descriptor": {
|
|
359
361
|
"packageVersion": 1,
|
|
360
362
|
"packageId": "@jskit-ai/assistant-core",
|
|
361
|
-
"version": "0.1.
|
|
363
|
+
"version": "0.1.10",
|
|
362
364
|
"kind": "runtime",
|
|
363
365
|
"description": "Reusable assistant client/server/shared primitives without surface-specific routes or settings ownership.",
|
|
364
366
|
"dependsOn": [
|
|
@@ -404,9 +406,9 @@
|
|
|
404
406
|
"mutations": {
|
|
405
407
|
"dependencies": {
|
|
406
408
|
"runtime": {
|
|
407
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
408
|
-
"@jskit-ai/kernel": "0.1.
|
|
409
|
-
"@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",
|
|
410
412
|
"@tanstack/vue-query": "^5.90.5",
|
|
411
413
|
"dompurify": "^3.3.3",
|
|
412
414
|
"marked": "^17.0.4",
|
|
@@ -427,11 +429,11 @@
|
|
|
427
429
|
},
|
|
428
430
|
{
|
|
429
431
|
"packageId": "@jskit-ai/assistant-runtime",
|
|
430
|
-
"version": "0.1.
|
|
432
|
+
"version": "0.1.5",
|
|
431
433
|
"descriptor": {
|
|
432
434
|
"packageVersion": 1,
|
|
433
435
|
"packageId": "@jskit-ai/assistant-runtime",
|
|
434
|
-
"version": "0.1.
|
|
436
|
+
"version": "0.1.5",
|
|
435
437
|
"kind": "runtime",
|
|
436
438
|
"description": "Shared assistant runtime with per-surface assistant registration.",
|
|
437
439
|
"dependsOn": [
|
|
@@ -506,13 +508,13 @@
|
|
|
506
508
|
"mutations": {
|
|
507
509
|
"dependencies": {
|
|
508
510
|
"runtime": {
|
|
509
|
-
"@jskit-ai/assistant-core": "0.1.
|
|
510
|
-
"@jskit-ai/database-runtime": "0.1.
|
|
511
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
512
|
-
"@jskit-ai/kernel": "0.1.
|
|
513
|
-
"@jskit-ai/shell-web": "0.1.
|
|
514
|
-
"@jskit-ai/users-core": "0.1.
|
|
515
|
-
"@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",
|
|
516
518
|
"@tanstack/vue-query": "^5.90.5",
|
|
517
519
|
"vuetify": "^4.0.0"
|
|
518
520
|
},
|
|
@@ -569,11 +571,11 @@
|
|
|
569
571
|
},
|
|
570
572
|
{
|
|
571
573
|
"packageId": "@jskit-ai/auth-core",
|
|
572
|
-
"version": "0.1.
|
|
574
|
+
"version": "0.1.33",
|
|
573
575
|
"descriptor": {
|
|
574
576
|
"packageVersion": 1,
|
|
575
577
|
"packageId": "@jskit-ai/auth-core",
|
|
576
|
-
"version": "0.1.
|
|
578
|
+
"version": "0.1.33",
|
|
577
579
|
"kind": "runtime",
|
|
578
580
|
"dependsOn": [
|
|
579
581
|
"@jskit-ai/value-app-config-shared"
|
|
@@ -641,7 +643,7 @@
|
|
|
641
643
|
"mutations": {
|
|
642
644
|
"dependencies": {
|
|
643
645
|
"runtime": {
|
|
644
|
-
"@jskit-ai/kernel": "0.1.
|
|
646
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
645
647
|
"@fastify/cookie": "^11.0.2",
|
|
646
648
|
"@fastify/csrf-protection": "^7.1.0",
|
|
647
649
|
"@fastify/rate-limit": "^10.3.0"
|
|
@@ -659,11 +661,11 @@
|
|
|
659
661
|
},
|
|
660
662
|
{
|
|
661
663
|
"packageId": "@jskit-ai/auth-provider-supabase-core",
|
|
662
|
-
"version": "0.1.
|
|
664
|
+
"version": "0.1.33",
|
|
663
665
|
"descriptor": {
|
|
664
666
|
"packageVersion": 1,
|
|
665
667
|
"packageId": "@jskit-ai/auth-provider-supabase-core",
|
|
666
|
-
"version": "0.1.
|
|
668
|
+
"version": "0.1.33",
|
|
667
669
|
"kind": "runtime",
|
|
668
670
|
"options": {
|
|
669
671
|
"auth-supabase-url": {
|
|
@@ -745,8 +747,8 @@
|
|
|
745
747
|
"mutations": {
|
|
746
748
|
"dependencies": {
|
|
747
749
|
"runtime": {
|
|
748
|
-
"@jskit-ai/auth-core": "0.1.
|
|
749
|
-
"@jskit-ai/kernel": "0.1.
|
|
750
|
+
"@jskit-ai/auth-core": "0.1.33",
|
|
751
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
750
752
|
"dotenv": "^16.4.5",
|
|
751
753
|
"@supabase/supabase-js": "^2.57.4",
|
|
752
754
|
"jose": "^6.1.0"
|
|
@@ -811,11 +813,11 @@
|
|
|
811
813
|
},
|
|
812
814
|
{
|
|
813
815
|
"packageId": "@jskit-ai/auth-web",
|
|
814
|
-
"version": "0.1.
|
|
816
|
+
"version": "0.1.35",
|
|
815
817
|
"descriptor": {
|
|
816
818
|
"packageVersion": 1,
|
|
817
819
|
"packageId": "@jskit-ai/auth-web",
|
|
818
|
-
"version": "0.1.
|
|
820
|
+
"version": "0.1.35",
|
|
819
821
|
"kind": "runtime",
|
|
820
822
|
"description": "Auth web module: Fastify auth routes plus web login/sign-out scaffolds.",
|
|
821
823
|
"dependsOn": [
|
|
@@ -991,8 +993,8 @@
|
|
|
991
993
|
"placements": {
|
|
992
994
|
"outlets": [
|
|
993
995
|
{
|
|
994
|
-
"
|
|
995
|
-
"
|
|
996
|
+
"target": "auth-profile-menu:primary-menu",
|
|
997
|
+
"defaultLinkComponentToken": "auth.web.profile.menu.link-item",
|
|
996
998
|
"surfaces": [
|
|
997
999
|
"*"
|
|
998
1000
|
],
|
|
@@ -1002,8 +1004,7 @@
|
|
|
1002
1004
|
"contributions": [
|
|
1003
1005
|
{
|
|
1004
1006
|
"id": "auth.profile.widget",
|
|
1005
|
-
"
|
|
1006
|
-
"position": "top-right",
|
|
1007
|
+
"target": "shell-layout:top-right",
|
|
1007
1008
|
"surfaces": [
|
|
1008
1009
|
"*"
|
|
1009
1010
|
],
|
|
@@ -1013,8 +1014,7 @@
|
|
|
1013
1014
|
},
|
|
1014
1015
|
{
|
|
1015
1016
|
"id": "auth.profile.menu.sign-in",
|
|
1016
|
-
"
|
|
1017
|
-
"position": "primary-menu",
|
|
1017
|
+
"target": "auth-profile-menu:primary-menu",
|
|
1018
1018
|
"surfaces": [
|
|
1019
1019
|
"*"
|
|
1020
1020
|
],
|
|
@@ -1025,8 +1025,7 @@
|
|
|
1025
1025
|
},
|
|
1026
1026
|
{
|
|
1027
1027
|
"id": "auth.profile.menu.sign-out",
|
|
1028
|
-
"
|
|
1029
|
-
"position": "primary-menu",
|
|
1028
|
+
"target": "auth-profile-menu:primary-menu",
|
|
1030
1029
|
"surfaces": [
|
|
1031
1030
|
"*"
|
|
1032
1031
|
],
|
|
@@ -1045,10 +1044,10 @@
|
|
|
1045
1044
|
"@tanstack/vue-query": "5.92.12",
|
|
1046
1045
|
"@mdi/js": "^7.4.47",
|
|
1047
1046
|
"@fastify/type-provider-typebox": "^6.1.0",
|
|
1048
|
-
"@jskit-ai/auth-core": "0.1.
|
|
1049
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
1050
|
-
"@jskit-ai/kernel": "0.1.
|
|
1051
|
-
"@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",
|
|
1052
1051
|
"vuetify": "^4.0.0"
|
|
1053
1052
|
},
|
|
1054
1053
|
"dev": {}
|
|
@@ -1107,7 +1106,7 @@
|
|
|
1107
1106
|
"file": "src/placement.js",
|
|
1108
1107
|
"position": "bottom",
|
|
1109
1108
|
"skipIfContains": "id: \"auth.profile.widget\"",
|
|
1110
|
-
"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",
|
|
1111
1110
|
"reason": "Append auth profile placement entries into app-owned placement registry.",
|
|
1112
1111
|
"category": "auth-web",
|
|
1113
1112
|
"id": "auth-web-placement-block"
|
|
@@ -1118,11 +1117,11 @@
|
|
|
1118
1117
|
},
|
|
1119
1118
|
{
|
|
1120
1119
|
"packageId": "@jskit-ai/crud-core",
|
|
1121
|
-
"version": "0.1.
|
|
1120
|
+
"version": "0.1.42",
|
|
1122
1121
|
"descriptor": {
|
|
1123
1122
|
"packageVersion": 1,
|
|
1124
1123
|
"packageId": "@jskit-ai/crud-core",
|
|
1125
|
-
"version": "0.1.
|
|
1124
|
+
"version": "0.1.42",
|
|
1126
1125
|
"kind": "runtime",
|
|
1127
1126
|
"description": "Shared CRUD helpers used by CRUD modules.",
|
|
1128
1127
|
"dependsOn": [
|
|
@@ -1149,7 +1148,7 @@
|
|
|
1149
1148
|
"mutations": {
|
|
1150
1149
|
"dependencies": {
|
|
1151
1150
|
"runtime": {
|
|
1152
|
-
"@jskit-ai/crud-core": "0.1.
|
|
1151
|
+
"@jskit-ai/crud-core": "0.1.42"
|
|
1153
1152
|
},
|
|
1154
1153
|
"dev": {}
|
|
1155
1154
|
},
|
|
@@ -1163,11 +1162,11 @@
|
|
|
1163
1162
|
},
|
|
1164
1163
|
{
|
|
1165
1164
|
"packageId": "@jskit-ai/crud-server-generator",
|
|
1166
|
-
"version": "0.1.
|
|
1165
|
+
"version": "0.1.42",
|
|
1167
1166
|
"descriptor": {
|
|
1168
1167
|
"packageVersion": 1,
|
|
1169
1168
|
"packageId": "@jskit-ai/crud-server-generator",
|
|
1170
|
-
"version": "0.1.
|
|
1169
|
+
"version": "0.1.42",
|
|
1171
1170
|
"kind": "generator",
|
|
1172
1171
|
"description": "CRUD server generator with routes, actions, and persistence scaffolding.",
|
|
1173
1172
|
"options": {
|
|
@@ -1179,16 +1178,24 @@
|
|
|
1179
1178
|
"promptHint": "Required slug (example: customers, appointments, vendors)."
|
|
1180
1179
|
},
|
|
1181
1180
|
"surface": {
|
|
1182
|
-
"required":
|
|
1181
|
+
"required": false,
|
|
1183
1182
|
"inputType": "text",
|
|
1184
1183
|
"validationType": "enabled-surface-id",
|
|
1185
1184
|
"promptLabel": "Target surface",
|
|
1186
|
-
"promptHint": "
|
|
1185
|
+
"promptHint": "Optional for non-workspace apps; otherwise must match an enabled surface id."
|
|
1187
1186
|
},
|
|
1188
1187
|
"ownership-filter": {
|
|
1189
1188
|
"required": true,
|
|
1190
1189
|
"inputType": "text",
|
|
1191
1190
|
"defaultValue": "auto",
|
|
1191
|
+
"validationType": "enum",
|
|
1192
|
+
"allowedValues": [
|
|
1193
|
+
"auto",
|
|
1194
|
+
"public",
|
|
1195
|
+
"user",
|
|
1196
|
+
"workspace",
|
|
1197
|
+
"workspace_user"
|
|
1198
|
+
],
|
|
1192
1199
|
"promptLabel": "Ownership filter",
|
|
1193
1200
|
"promptHint": "auto | public | user | workspace | workspace_user"
|
|
1194
1201
|
},
|
|
@@ -1200,11 +1207,12 @@
|
|
|
1200
1207
|
"promptHint": "Optional subpath prepended to the CRUD route path (example: crm or ops/team-a)."
|
|
1201
1208
|
},
|
|
1202
1209
|
"table-name": {
|
|
1203
|
-
"required":
|
|
1210
|
+
"required": false,
|
|
1204
1211
|
"inputType": "text",
|
|
1205
1212
|
"defaultValue": "",
|
|
1213
|
+
"defaultFromOptionTemplate": "${option:namespace}",
|
|
1206
1214
|
"promptLabel": "Table name",
|
|
1207
|
-
"promptHint": "
|
|
1215
|
+
"promptHint": "Existing MySQL table to introspect for CRUD schema generation (defaults to namespace)."
|
|
1208
1216
|
},
|
|
1209
1217
|
"id-column": {
|
|
1210
1218
|
"required": false,
|
|
@@ -1316,13 +1324,13 @@
|
|
|
1316
1324
|
"mutations": {
|
|
1317
1325
|
"dependencies": {
|
|
1318
1326
|
"runtime": {
|
|
1319
|
-
"@jskit-ai/auth-core": "0.1.
|
|
1320
|
-
"@jskit-ai/crud-core": "0.1.
|
|
1321
|
-
"@jskit-ai/database-runtime": "0.1.
|
|
1322
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
1323
|
-
"@jskit-ai/kernel": "0.1.
|
|
1324
|
-
"@jskit-ai/realtime": "0.1.
|
|
1325
|
-
"@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",
|
|
1326
1334
|
"@local/${option:namespace|kebab}": "file:packages/${option:namespace|kebab}",
|
|
1327
1335
|
"typebox": "^1.0.81"
|
|
1328
1336
|
},
|
|
@@ -1376,7 +1384,11 @@
|
|
|
1376
1384
|
"to": "packages/${option:namespace|kebab}/src/server/actions.js",
|
|
1377
1385
|
"reason": "Install app-local CRUD action definitions.",
|
|
1378
1386
|
"category": "crud",
|
|
1379
|
-
"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
|
+
}
|
|
1380
1392
|
},
|
|
1381
1393
|
{
|
|
1382
1394
|
"from": "templates/src/local-package/server/actionIds.js",
|
|
@@ -1401,7 +1413,11 @@
|
|
|
1401
1413
|
"to": "packages/${option:namespace|kebab}/src/server/registerRoutes.js",
|
|
1402
1414
|
"reason": "Install app-local CRUD route registration.",
|
|
1403
1415
|
"category": "crud",
|
|
1404
|
-
"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
|
+
}
|
|
1405
1421
|
},
|
|
1406
1422
|
{
|
|
1407
1423
|
"from": "templates/src/local-package/server/repository.js",
|
|
@@ -1446,10 +1462,14 @@
|
|
|
1446
1462
|
"file": "config/roles.js",
|
|
1447
1463
|
"position": "bottom",
|
|
1448
1464
|
"skipIfContains": "\"crud.${option:namespace|snake}.list\"",
|
|
1449
|
-
"value": "
|
|
1465
|
+
"value": "__JSKIT_CRUD_ROLE_CATALOG_PERMISSION_GRANTS__",
|
|
1450
1466
|
"reason": "Grant generated CRUD action permissions to the default member role in the app-owned role catalog.",
|
|
1451
1467
|
"category": "crud",
|
|
1452
|
-
"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
|
+
}
|
|
1453
1473
|
}
|
|
1454
1474
|
]
|
|
1455
1475
|
}
|
|
@@ -1457,11 +1477,11 @@
|
|
|
1457
1477
|
},
|
|
1458
1478
|
{
|
|
1459
1479
|
"packageId": "@jskit-ai/crud-ui-generator",
|
|
1460
|
-
"version": "0.1.
|
|
1480
|
+
"version": "0.1.17",
|
|
1461
1481
|
"descriptor": {
|
|
1462
1482
|
"packageVersion": 1,
|
|
1463
1483
|
"packageId": "@jskit-ai/crud-ui-generator",
|
|
1464
|
-
"version": "0.1.
|
|
1484
|
+
"version": "0.1.17",
|
|
1465
1485
|
"kind": "generator",
|
|
1466
1486
|
"description": "Generate CRUD route trees from resource validators at an explicit route root relative to src/pages/.",
|
|
1467
1487
|
"options": {
|
|
@@ -1484,6 +1504,13 @@
|
|
|
1484
1504
|
"required": false,
|
|
1485
1505
|
"inputType": "text",
|
|
1486
1506
|
"defaultValue": "list,view,new,edit",
|
|
1507
|
+
"validationType": "csv-enum",
|
|
1508
|
+
"allowedValues": [
|
|
1509
|
+
"list",
|
|
1510
|
+
"view",
|
|
1511
|
+
"new",
|
|
1512
|
+
"edit"
|
|
1513
|
+
],
|
|
1487
1514
|
"promptLabel": "Operations",
|
|
1488
1515
|
"promptHint": "Optional comma-separated values from: list, view, new, edit. Defaults to all four."
|
|
1489
1516
|
},
|
|
@@ -1513,7 +1540,14 @@
|
|
|
1513
1540
|
"inputType": "text",
|
|
1514
1541
|
"defaultValue": "",
|
|
1515
1542
|
"promptLabel": "Link placement",
|
|
1516
|
-
"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)."
|
|
1517
1551
|
},
|
|
1518
1552
|
"namespace": {
|
|
1519
1553
|
"required": false,
|
|
@@ -1542,10 +1576,11 @@
|
|
|
1542
1576
|
"generatorPrimarySubcommand": "crud",
|
|
1543
1577
|
"generatorSubcommands": {
|
|
1544
1578
|
"crud": {
|
|
1579
|
+
"requiresShellWeb": true,
|
|
1545
1580
|
"description": "Create CRUD pages at an explicit route root relative to src/pages/.",
|
|
1546
1581
|
"longDescription": [
|
|
1547
1582
|
"CRUD generation follows the same page-placement model as `ui-generator page`.",
|
|
1548
|
-
"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`."
|
|
1549
1584
|
],
|
|
1550
1585
|
"positionalArgs": [
|
|
1551
1586
|
{
|
|
@@ -1560,6 +1595,7 @@
|
|
|
1560
1595
|
"display-fields",
|
|
1561
1596
|
"id-param",
|
|
1562
1597
|
"link-placement",
|
|
1598
|
+
"link-component-token",
|
|
1563
1599
|
"namespace",
|
|
1564
1600
|
"force"
|
|
1565
1601
|
],
|
|
@@ -1599,6 +1635,7 @@
|
|
|
1599
1635
|
]
|
|
1600
1636
|
},
|
|
1601
1637
|
"field": {
|
|
1638
|
+
"requiresShellWeb": true,
|
|
1602
1639
|
"entrypoint": "src/server/subcommands/addField.js",
|
|
1603
1640
|
"export": "runGeneratorSubcommand"
|
|
1604
1641
|
}
|
|
@@ -1619,7 +1656,7 @@
|
|
|
1619
1656
|
"mutations": {
|
|
1620
1657
|
"dependencies": {
|
|
1621
1658
|
"runtime": {
|
|
1622
|
-
"@jskit-ai/users-web": "0.1.
|
|
1659
|
+
"@jskit-ai/users-web": "0.1.49"
|
|
1623
1660
|
},
|
|
1624
1661
|
"dev": {}
|
|
1625
1662
|
},
|
|
@@ -1831,7 +1868,7 @@
|
|
|
1831
1868
|
"file": "src/placement.js",
|
|
1832
1869
|
"position": "bottom",
|
|
1833
1870
|
"skipIfContains": "__JSKIT_UI_MENU_MARKER__",
|
|
1834
|
-
"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",
|
|
1835
1872
|
"reason": "Append generated CRUD list-page placement.",
|
|
1836
1873
|
"category": "crud-ui-generator",
|
|
1837
1874
|
"id": "crud-ui-placement-menu",
|
|
@@ -1852,11 +1889,11 @@
|
|
|
1852
1889
|
},
|
|
1853
1890
|
{
|
|
1854
1891
|
"packageId": "@jskit-ai/database-runtime",
|
|
1855
|
-
"version": "0.1.
|
|
1892
|
+
"version": "0.1.34",
|
|
1856
1893
|
"descriptor": {
|
|
1857
1894
|
"packageVersion": 1,
|
|
1858
1895
|
"packageId": "@jskit-ai/database-runtime",
|
|
1859
|
-
"version": "0.1.
|
|
1896
|
+
"version": "0.1.34",
|
|
1860
1897
|
"kind": "runtime",
|
|
1861
1898
|
"dependsOn": [
|
|
1862
1899
|
"@jskit-ai/kernel"
|
|
@@ -1913,7 +1950,7 @@
|
|
|
1913
1950
|
"mutations": {
|
|
1914
1951
|
"dependencies": {
|
|
1915
1952
|
"runtime": {
|
|
1916
|
-
"@jskit-ai/kernel": "0.1.
|
|
1953
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
1917
1954
|
"dotenv": "^16.4.5",
|
|
1918
1955
|
"knex": "^3.1.0"
|
|
1919
1956
|
},
|
|
@@ -1948,11 +1985,11 @@
|
|
|
1948
1985
|
},
|
|
1949
1986
|
{
|
|
1950
1987
|
"packageId": "@jskit-ai/database-runtime-mysql",
|
|
1951
|
-
"version": "0.1.
|
|
1988
|
+
"version": "0.1.33",
|
|
1952
1989
|
"descriptor": {
|
|
1953
1990
|
"packageVersion": 1,
|
|
1954
1991
|
"packageId": "@jskit-ai/database-runtime-mysql",
|
|
1955
|
-
"version": "0.1.
|
|
1992
|
+
"version": "0.1.33",
|
|
1956
1993
|
"kind": "runtime",
|
|
1957
1994
|
"options": {
|
|
1958
1995
|
"db-host": {
|
|
@@ -2042,7 +2079,7 @@
|
|
|
2042
2079
|
"mutations": {
|
|
2043
2080
|
"dependencies": {
|
|
2044
2081
|
"runtime": {
|
|
2045
|
-
"@jskit-ai/database-runtime": "0.1.
|
|
2082
|
+
"@jskit-ai/database-runtime": "0.1.34",
|
|
2046
2083
|
"mysql2": "^3.11.2"
|
|
2047
2084
|
},
|
|
2048
2085
|
"dev": {}
|
|
@@ -2113,11 +2150,11 @@
|
|
|
2113
2150
|
},
|
|
2114
2151
|
{
|
|
2115
2152
|
"packageId": "@jskit-ai/database-runtime-postgres",
|
|
2116
|
-
"version": "0.1.
|
|
2153
|
+
"version": "0.1.33",
|
|
2117
2154
|
"descriptor": {
|
|
2118
2155
|
"packageVersion": 1,
|
|
2119
2156
|
"packageId": "@jskit-ai/database-runtime-postgres",
|
|
2120
|
-
"version": "0.1.
|
|
2157
|
+
"version": "0.1.33",
|
|
2121
2158
|
"kind": "runtime",
|
|
2122
2159
|
"options": {
|
|
2123
2160
|
"db-host": {
|
|
@@ -2207,7 +2244,7 @@
|
|
|
2207
2244
|
"mutations": {
|
|
2208
2245
|
"dependencies": {
|
|
2209
2246
|
"runtime": {
|
|
2210
|
-
"@jskit-ai/database-runtime": "0.1.
|
|
2247
|
+
"@jskit-ai/database-runtime": "0.1.34",
|
|
2211
2248
|
"pg": "^8.13.1"
|
|
2212
2249
|
},
|
|
2213
2250
|
"dev": {}
|
|
@@ -2278,11 +2315,11 @@
|
|
|
2278
2315
|
},
|
|
2279
2316
|
{
|
|
2280
2317
|
"packageId": "@jskit-ai/http-runtime",
|
|
2281
|
-
"version": "0.1.
|
|
2318
|
+
"version": "0.1.33",
|
|
2282
2319
|
"descriptor": {
|
|
2283
2320
|
"packageVersion": 1,
|
|
2284
2321
|
"packageId": "@jskit-ai/http-runtime",
|
|
2285
|
-
"version": "0.1.
|
|
2322
|
+
"version": "0.1.33",
|
|
2286
2323
|
"kind": "runtime",
|
|
2287
2324
|
"dependsOn": [],
|
|
2288
2325
|
"capabilities": {
|
|
@@ -2348,7 +2385,7 @@
|
|
|
2348
2385
|
"mutations": {
|
|
2349
2386
|
"dependencies": {
|
|
2350
2387
|
"runtime": {
|
|
2351
|
-
"@jskit-ai/kernel": "0.1.
|
|
2388
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
2352
2389
|
"@fastify/type-provider-typebox": "^6.1.0",
|
|
2353
2390
|
"typebox": "^1.0.81"
|
|
2354
2391
|
},
|
|
@@ -2364,11 +2401,11 @@
|
|
|
2364
2401
|
},
|
|
2365
2402
|
{
|
|
2366
2403
|
"packageId": "@jskit-ai/realtime",
|
|
2367
|
-
"version": "0.1.
|
|
2404
|
+
"version": "0.1.33",
|
|
2368
2405
|
"descriptor": {
|
|
2369
2406
|
"packageVersion": 1,
|
|
2370
2407
|
"packageId": "@jskit-ai/realtime",
|
|
2371
|
-
"version": "0.1.
|
|
2408
|
+
"version": "0.1.33",
|
|
2372
2409
|
"kind": "runtime",
|
|
2373
2410
|
"description": "Thin, generic realtime runtime wrappers for socket.io server and client.",
|
|
2374
2411
|
"options": {
|
|
@@ -2448,8 +2485,7 @@
|
|
|
2448
2485
|
"contributions": [
|
|
2449
2486
|
{
|
|
2450
2487
|
"id": "realtime.connection.indicator",
|
|
2451
|
-
"
|
|
2452
|
-
"position": "top-right",
|
|
2488
|
+
"target": "shell-layout:top-right",
|
|
2453
2489
|
"surfaces": [
|
|
2454
2490
|
"*"
|
|
2455
2491
|
],
|
|
@@ -2464,7 +2500,7 @@
|
|
|
2464
2500
|
"mutations": {
|
|
2465
2501
|
"dependencies": {
|
|
2466
2502
|
"runtime": {
|
|
2467
|
-
"@jskit-ai/kernel": "0.1.
|
|
2503
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
2468
2504
|
"@socket.io/redis-adapter": "^8.3.0",
|
|
2469
2505
|
"redis": "^5.8.2",
|
|
2470
2506
|
"socket.io": "^4.8.3",
|
|
@@ -2502,7 +2538,7 @@
|
|
|
2502
2538
|
"file": "src/placement.js",
|
|
2503
2539
|
"position": "bottom",
|
|
2504
2540
|
"skipIfContains": "id: \"realtime.connection.indicator\"",
|
|
2505
|
-
"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",
|
|
2506
2542
|
"reason": "Append realtime connection indicator placement into app-owned placement registry.",
|
|
2507
2543
|
"category": "realtime-web",
|
|
2508
2544
|
"id": "realtime-placement-indicator"
|
|
@@ -2513,11 +2549,11 @@
|
|
|
2513
2549
|
},
|
|
2514
2550
|
{
|
|
2515
2551
|
"packageId": "@jskit-ai/shell-web",
|
|
2516
|
-
"version": "0.1.
|
|
2552
|
+
"version": "0.1.33",
|
|
2517
2553
|
"descriptor": {
|
|
2518
2554
|
"packageVersion": 1,
|
|
2519
2555
|
"packageId": "@jskit-ai/shell-web",
|
|
2520
|
-
"version": "0.1.
|
|
2556
|
+
"version": "0.1.33",
|
|
2521
2557
|
"kind": "runtime",
|
|
2522
2558
|
"description": "Web shell layout runtime with outlet-based placement contributions.",
|
|
2523
2559
|
"dependsOn": [],
|
|
@@ -2546,7 +2582,7 @@
|
|
|
2546
2582
|
"surfaces": [
|
|
2547
2583
|
{
|
|
2548
2584
|
"subpath": "./client",
|
|
2549
|
-
"summary": "Exports shell layout/outlet/error-host components and ShellWebClientProvider."
|
|
2585
|
+
"summary": "Exports shell layout/outlet/outlet-menu/error-host components and ShellWebClientProvider."
|
|
2550
2586
|
},
|
|
2551
2587
|
{
|
|
2552
2588
|
"subpath": "./client/placement",
|
|
@@ -2571,40 +2607,38 @@
|
|
|
2571
2607
|
"placements": {
|
|
2572
2608
|
"outlets": [
|
|
2573
2609
|
{
|
|
2574
|
-
"
|
|
2575
|
-
"position": "top-left",
|
|
2610
|
+
"target": "shell-layout:top-left",
|
|
2576
2611
|
"surfaces": [
|
|
2577
2612
|
"*"
|
|
2578
2613
|
],
|
|
2579
2614
|
"source": "src/client/components/ShellLayout.vue"
|
|
2580
2615
|
},
|
|
2581
2616
|
{
|
|
2582
|
-
"
|
|
2583
|
-
"position": "top-right",
|
|
2617
|
+
"target": "shell-layout:top-right",
|
|
2584
2618
|
"surfaces": [
|
|
2585
2619
|
"*"
|
|
2586
2620
|
],
|
|
2587
2621
|
"source": "src/client/components/ShellLayout.vue"
|
|
2588
2622
|
},
|
|
2589
2623
|
{
|
|
2590
|
-
"
|
|
2591
|
-
"
|
|
2624
|
+
"target": "shell-layout:primary-menu",
|
|
2625
|
+
"defaultLinkComponentToken": "local.main.ui.surface-aware-menu-link-item",
|
|
2592
2626
|
"surfaces": [
|
|
2593
2627
|
"*"
|
|
2594
2628
|
],
|
|
2595
2629
|
"source": "src/client/components/ShellLayout.vue"
|
|
2596
2630
|
},
|
|
2597
2631
|
{
|
|
2598
|
-
"
|
|
2599
|
-
"
|
|
2632
|
+
"target": "shell-layout:secondary-menu",
|
|
2633
|
+
"defaultLinkComponentToken": "local.main.ui.surface-aware-menu-link-item",
|
|
2600
2634
|
"surfaces": [
|
|
2601
2635
|
"*"
|
|
2602
2636
|
],
|
|
2603
2637
|
"source": "src/client/components/ShellLayout.vue"
|
|
2604
2638
|
},
|
|
2605
2639
|
{
|
|
2606
|
-
"
|
|
2607
|
-
"
|
|
2640
|
+
"target": "home-settings:primary-menu",
|
|
2641
|
+
"defaultLinkComponentToken": "local.main.ui.surface-aware-menu-link-item",
|
|
2608
2642
|
"surfaces": [
|
|
2609
2643
|
"home"
|
|
2610
2644
|
],
|
|
@@ -2618,8 +2652,9 @@
|
|
|
2618
2652
|
"mutations": {
|
|
2619
2653
|
"dependencies": {
|
|
2620
2654
|
"runtime": {
|
|
2655
|
+
"@mdi/js": "^7.4.47",
|
|
2621
2656
|
"@tanstack/vue-query": "^5.90.5",
|
|
2622
|
-
"@jskit-ai/kernel": "0.1.
|
|
2657
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
2623
2658
|
"vuetify": "^4.0.0"
|
|
2624
2659
|
},
|
|
2625
2660
|
"dev": {}
|
|
@@ -2632,11 +2667,74 @@
|
|
|
2632
2667
|
}
|
|
2633
2668
|
},
|
|
2634
2669
|
"procfile": {},
|
|
2635
|
-
"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
|
+
],
|
|
2636
2732
|
"files": [
|
|
2637
2733
|
{
|
|
2638
2734
|
"from": "templates/src/App.vue",
|
|
2639
2735
|
"to": "src/App.vue",
|
|
2736
|
+
"ownership": "app",
|
|
2737
|
+
"expectedExistingFrom": "templates/expected-existing/src/App.vue",
|
|
2640
2738
|
"reason": "Install full-width shell app root with shell-web error host and edge-to-edge layout.",
|
|
2641
2739
|
"category": "shell-web",
|
|
2642
2740
|
"id": "shell-web-app-root"
|
|
@@ -2644,13 +2742,39 @@
|
|
|
2644
2742
|
{
|
|
2645
2743
|
"from": "templates/src/components/ShellLayout.vue",
|
|
2646
2744
|
"to": "src/components/ShellLayout.vue",
|
|
2745
|
+
"ownership": "app",
|
|
2647
2746
|
"reason": "Install app-owned shell layout component so apps can customize structure and slots.",
|
|
2648
2747
|
"category": "shell-web",
|
|
2649
2748
|
"id": "shell-web-component-shell-layout"
|
|
2650
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
|
+
},
|
|
2651
2774
|
{
|
|
2652
2775
|
"from": "templates/src/error.js",
|
|
2653
2776
|
"to": "src/error.js",
|
|
2777
|
+
"ownership": "app",
|
|
2654
2778
|
"reason": "Install app-owned error runtime policy and presenter config scaffold.",
|
|
2655
2779
|
"category": "shell-web",
|
|
2656
2780
|
"id": "shell-web-error-config"
|
|
@@ -2658,6 +2782,7 @@
|
|
|
2658
2782
|
{
|
|
2659
2783
|
"from": "templates/src/placement.js",
|
|
2660
2784
|
"to": "src/placement.js",
|
|
2785
|
+
"ownership": "app",
|
|
2661
2786
|
"reason": "Install app-owned placement registry scaffold used by shell-web placement runtime.",
|
|
2662
2787
|
"category": "shell-web",
|
|
2663
2788
|
"id": "shell-web-placement-registry"
|
|
@@ -2666,6 +2791,8 @@
|
|
|
2666
2791
|
"from": "templates/src/pages/home.vue",
|
|
2667
2792
|
"toSurface": "home",
|
|
2668
2793
|
"toSurfaceRoot": true,
|
|
2794
|
+
"ownership": "app",
|
|
2795
|
+
"expectedExistingFrom": "templates/expected-existing/src/pages/home.vue",
|
|
2669
2796
|
"reason": "Install shell-driven home wrapper page.",
|
|
2670
2797
|
"category": "shell-web",
|
|
2671
2798
|
"id": "shell-web-page-home-wrapper"
|
|
@@ -2674,6 +2801,8 @@
|
|
|
2674
2801
|
"from": "templates/src/pages/home/index.vue",
|
|
2675
2802
|
"toSurface": "home",
|
|
2676
2803
|
"toSurfacePath": "index.vue",
|
|
2804
|
+
"ownership": "app",
|
|
2805
|
+
"expectedExistingFrom": "templates/expected-existing/src/pages/home/index.vue",
|
|
2677
2806
|
"reason": "Install shell-driven home surface starter page.",
|
|
2678
2807
|
"category": "shell-web",
|
|
2679
2808
|
"id": "shell-web-page-home"
|
|
@@ -2682,6 +2811,7 @@
|
|
|
2682
2811
|
"from": "templates/src/pages/home/settings.vue",
|
|
2683
2812
|
"toSurface": "home",
|
|
2684
2813
|
"toSurfacePath": "settings.vue",
|
|
2814
|
+
"ownership": "app",
|
|
2685
2815
|
"reason": "Install shell-driven home settings shell route with section navigation.",
|
|
2686
2816
|
"category": "shell-web",
|
|
2687
2817
|
"id": "shell-web-page-home-settings-shell"
|
|
@@ -2690,7 +2820,8 @@
|
|
|
2690
2820
|
"from": "templates/src/pages/home/settings/index.vue",
|
|
2691
2821
|
"toSurface": "home",
|
|
2692
2822
|
"toSurfacePath": "settings/index.vue",
|
|
2693
|
-
"
|
|
2823
|
+
"ownership": "app",
|
|
2824
|
+
"reason": "Install shell-driven home settings index stub scaffold for app-owned landing or redirect behavior.",
|
|
2694
2825
|
"category": "shell-web",
|
|
2695
2826
|
"id": "shell-web-page-home-settings"
|
|
2696
2827
|
},
|
|
@@ -2698,6 +2829,8 @@
|
|
|
2698
2829
|
"from": "templates/src/pages/console.vue",
|
|
2699
2830
|
"toSurface": "console",
|
|
2700
2831
|
"toSurfaceRoot": true,
|
|
2832
|
+
"ownership": "app",
|
|
2833
|
+
"expectedExistingFrom": "templates/expected-existing/src/pages/console.vue",
|
|
2701
2834
|
"reason": "Install shell-driven console wrapper page.",
|
|
2702
2835
|
"category": "shell-web",
|
|
2703
2836
|
"id": "shell-web-page-console-wrapper"
|
|
@@ -2706,6 +2839,8 @@
|
|
|
2706
2839
|
"from": "templates/src/pages/console/index.vue",
|
|
2707
2840
|
"toSurface": "console",
|
|
2708
2841
|
"toSurfacePath": "index.vue",
|
|
2842
|
+
"ownership": "app",
|
|
2843
|
+
"expectedExistingFrom": "templates/expected-existing/src/pages/console/index.vue",
|
|
2709
2844
|
"reason": "Install shell-driven console page starter.",
|
|
2710
2845
|
"category": "shell-web",
|
|
2711
2846
|
"id": "shell-web-page-console"
|
|
@@ -2716,11 +2851,11 @@
|
|
|
2716
2851
|
},
|
|
2717
2852
|
{
|
|
2718
2853
|
"packageId": "@jskit-ai/storage-runtime",
|
|
2719
|
-
"version": "0.1.
|
|
2854
|
+
"version": "0.1.33",
|
|
2720
2855
|
"descriptor": {
|
|
2721
2856
|
"packageVersion": 1,
|
|
2722
2857
|
"packageId": "@jskit-ai/storage-runtime",
|
|
2723
|
-
"version": "0.1.
|
|
2858
|
+
"version": "0.1.33",
|
|
2724
2859
|
"kind": "runtime",
|
|
2725
2860
|
"dependsOn": [
|
|
2726
2861
|
"@jskit-ai/kernel"
|
|
@@ -2769,7 +2904,7 @@
|
|
|
2769
2904
|
"mutations": {
|
|
2770
2905
|
"dependencies": {
|
|
2771
2906
|
"runtime": {
|
|
2772
|
-
"@jskit-ai/kernel": "0.1.
|
|
2907
|
+
"@jskit-ai/kernel": "0.1.34",
|
|
2773
2908
|
"unstorage": "^1.17.3"
|
|
2774
2909
|
},
|
|
2775
2910
|
"dev": {}
|
|
@@ -2785,11 +2920,11 @@
|
|
|
2785
2920
|
},
|
|
2786
2921
|
{
|
|
2787
2922
|
"packageId": "@jskit-ai/ui-generator",
|
|
2788
|
-
"version": "0.1.
|
|
2923
|
+
"version": "0.1.17",
|
|
2789
2924
|
"descriptor": {
|
|
2790
2925
|
"packageVersion": 1,
|
|
2791
2926
|
"packageId": "@jskit-ai/ui-generator",
|
|
2792
|
-
"version": "0.1.
|
|
2927
|
+
"version": "0.1.17",
|
|
2793
2928
|
"kind": "generator",
|
|
2794
2929
|
"description": "Create non-CRUD pages, reusable UI elements, and subpage hosts.",
|
|
2795
2930
|
"options": {
|
|
@@ -2827,14 +2962,14 @@
|
|
|
2827
2962
|
"inputType": "text",
|
|
2828
2963
|
"defaultValue": "",
|
|
2829
2964
|
"promptLabel": "Placement target",
|
|
2830
|
-
"promptHint": "Optional
|
|
2965
|
+
"promptHint": "Optional target for placed-element placement (format: host:position, default: shell-layout:top-right)."
|
|
2831
2966
|
},
|
|
2832
2967
|
"link-placement": {
|
|
2833
2968
|
"required": false,
|
|
2834
2969
|
"inputType": "text",
|
|
2835
2970
|
"defaultValue": "",
|
|
2836
2971
|
"promptLabel": "Link placement",
|
|
2837
|
-
"promptHint": "Optional
|
|
2972
|
+
"promptHint": "Optional target for the generated page link placement (format: host:position)."
|
|
2838
2973
|
},
|
|
2839
2974
|
"link-component-token": {
|
|
2840
2975
|
"required": false,
|
|
@@ -2848,14 +2983,14 @@
|
|
|
2848
2983
|
"inputType": "text",
|
|
2849
2984
|
"defaultValue": "",
|
|
2850
2985
|
"promptLabel": "Link to",
|
|
2851
|
-
"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."
|
|
2852
2987
|
},
|
|
2853
2988
|
"target": {
|
|
2854
2989
|
"required": false,
|
|
2855
2990
|
"inputType": "text",
|
|
2856
2991
|
"defaultValue": "",
|
|
2857
2992
|
"promptLabel": "Outlet target",
|
|
2858
|
-
"promptHint": "Used by add-subpages and outlet.
|
|
2993
|
+
"promptHint": "Used by add-subpages and outlet. Must be a target in host:position format."
|
|
2859
2994
|
},
|
|
2860
2995
|
"title": {
|
|
2861
2996
|
"required": false,
|
|
@@ -2891,13 +3026,14 @@
|
|
|
2891
3026
|
"generatorPrimarySubcommand": "page",
|
|
2892
3027
|
"generatorSubcommands": {
|
|
2893
3028
|
"page": {
|
|
3029
|
+
"requiresShellWeb": true,
|
|
2894
3030
|
"entrypoint": "src/server/subcommands/page.js",
|
|
2895
3031
|
"export": "runGeneratorSubcommand",
|
|
2896
3032
|
"description": "Create a route page at an explicit target file and add a link placement entry for it.",
|
|
2897
3033
|
"longDescription": [
|
|
2898
3034
|
"This command always creates one route page file. By default, its page link is placed from the page path itself.",
|
|
2899
|
-
"If an ancestor page has already been enhanced with sub-pages, JSKIT treats that ancestor as the real
|
|
2900
|
-
"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."
|
|
2901
3037
|
],
|
|
2902
3038
|
"positionalArgs": [
|
|
2903
3039
|
{
|
|
@@ -2914,8 +3050,8 @@
|
|
|
2914
3050
|
"force"
|
|
2915
3051
|
],
|
|
2916
3052
|
"notes": [
|
|
2917
|
-
"If a nearest parent subpages
|
|
2918
|
-
"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/...",
|
|
2919
3055
|
"If the target page file already exists, rerun with --force to overwrite it."
|
|
2920
3056
|
],
|
|
2921
3057
|
"examples": [
|
|
@@ -2939,6 +3075,7 @@
|
|
|
2939
3075
|
]
|
|
2940
3076
|
},
|
|
2941
3077
|
"placed-element": {
|
|
3078
|
+
"requiresShellWeb": true,
|
|
2942
3079
|
"entrypoint": "src/server/subcommands/element.js",
|
|
2943
3080
|
"export": "runGeneratorSubcommand",
|
|
2944
3081
|
"description": "Create a Vue component file under the chosen component directory (default: src/components) and add a placement entry that renders it.",
|
|
@@ -2980,6 +3117,7 @@
|
|
|
2980
3117
|
]
|
|
2981
3118
|
},
|
|
2982
3119
|
"add-subpages": {
|
|
3120
|
+
"requiresShellWeb": true,
|
|
2983
3121
|
"entrypoint": "src/server/subcommands/addSubpages.js",
|
|
2984
3122
|
"export": "runGeneratorSubcommand",
|
|
2985
3123
|
"description": "Upgrade an existing page into a routed subpage host with SectionContainerShell, ShellOutlet, and RouterView.",
|
|
@@ -2998,7 +3136,7 @@
|
|
|
2998
3136
|
],
|
|
2999
3137
|
"notes": [
|
|
3000
3138
|
"Use this when the page should render shared content plus child routes below it.",
|
|
3001
|
-
"If the
|
|
3139
|
+
"If the outlet page is index.vue, create child pages under index/..."
|
|
3002
3140
|
],
|
|
3003
3141
|
"examples": [
|
|
3004
3142
|
{
|
|
@@ -3024,13 +3162,14 @@
|
|
|
3024
3162
|
]
|
|
3025
3163
|
},
|
|
3026
3164
|
"outlet": {
|
|
3165
|
+
"requiresShellWeb": true,
|
|
3027
3166
|
"entrypoint": "src/server/subcommands/outlet.js",
|
|
3028
3167
|
"export": "runGeneratorSubcommand",
|
|
3029
3168
|
"description": "Inject a generic ShellOutlet block into an existing Vue page/component.",
|
|
3030
3169
|
"longDescription": [
|
|
3031
3170
|
"A ShellOutlet creates a named placement target inside a Vue file. That target is what other parts of JSKIT render into later.",
|
|
3032
|
-
"After an outlet exists, `jskit list-placements` will discover it and show
|
|
3033
|
-
"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."
|
|
3034
3173
|
],
|
|
3035
3174
|
"positionalArgs": [
|
|
3036
3175
|
{
|
|
@@ -3046,7 +3185,7 @@
|
|
|
3046
3185
|
"target"
|
|
3047
3186
|
],
|
|
3048
3187
|
"notes": [
|
|
3049
|
-
"Use --target host
|
|
3188
|
+
"Use --target host:position."
|
|
3050
3189
|
],
|
|
3051
3190
|
"examples": [
|
|
3052
3191
|
{
|
|
@@ -3054,7 +3193,7 @@
|
|
|
3054
3193
|
"lines": [
|
|
3055
3194
|
"npx jskit generate ui-generator outlet \\",
|
|
3056
3195
|
" src/components/ContactSummaryCard.vue \\",
|
|
3057
|
-
" --target contact-view"
|
|
3196
|
+
" --target contact-view:sub-pages"
|
|
3058
3197
|
]
|
|
3059
3198
|
},
|
|
3060
3199
|
{
|
|
@@ -3084,7 +3223,7 @@
|
|
|
3084
3223
|
"mutations": {
|
|
3085
3224
|
"dependencies": {
|
|
3086
3225
|
"runtime": {
|
|
3087
|
-
"@jskit-ai/users-web": "0.1.
|
|
3226
|
+
"@jskit-ai/users-web": "0.1.49"
|
|
3088
3227
|
},
|
|
3089
3228
|
"dev": {}
|
|
3090
3229
|
},
|
|
@@ -3099,11 +3238,11 @@
|
|
|
3099
3238
|
},
|
|
3100
3239
|
{
|
|
3101
3240
|
"packageId": "@jskit-ai/uploads-image-web",
|
|
3102
|
-
"version": "0.1.
|
|
3241
|
+
"version": "0.1.12",
|
|
3103
3242
|
"descriptor": {
|
|
3104
3243
|
"packageVersion": 1,
|
|
3105
3244
|
"packageId": "@jskit-ai/uploads-image-web",
|
|
3106
|
-
"version": "0.1.
|
|
3245
|
+
"version": "0.1.12",
|
|
3107
3246
|
"kind": "runtime",
|
|
3108
3247
|
"description": "Reusable client-side image upload runtime with pre-upload image editing.",
|
|
3109
3248
|
"dependsOn": [
|
|
@@ -3167,7 +3306,7 @@
|
|
|
3167
3306
|
"mutations": {
|
|
3168
3307
|
"dependencies": {
|
|
3169
3308
|
"runtime": {
|
|
3170
|
-
"@jskit-ai/uploads-runtime": "0.1.
|
|
3309
|
+
"@jskit-ai/uploads-runtime": "0.1.12",
|
|
3171
3310
|
"@uppy/compressor": "^3.1.0",
|
|
3172
3311
|
"@uppy/core": "^5.2.0",
|
|
3173
3312
|
"@uppy/dashboard": "^5.1.1",
|
|
@@ -3187,11 +3326,11 @@
|
|
|
3187
3326
|
},
|
|
3188
3327
|
{
|
|
3189
3328
|
"packageId": "@jskit-ai/uploads-runtime",
|
|
3190
|
-
"version": "0.1.
|
|
3329
|
+
"version": "0.1.12",
|
|
3191
3330
|
"descriptor": {
|
|
3192
3331
|
"packageVersion": 1,
|
|
3193
3332
|
"packageId": "@jskit-ai/uploads-runtime",
|
|
3194
|
-
"version": "0.1.
|
|
3333
|
+
"version": "0.1.12",
|
|
3195
3334
|
"kind": "runtime",
|
|
3196
3335
|
"description": "Reusable upload runtime primitives for multipart parsing, policy validation, and blob storage.",
|
|
3197
3336
|
"dependsOn": [
|
|
@@ -3261,7 +3400,7 @@
|
|
|
3261
3400
|
"dependencies": {
|
|
3262
3401
|
"runtime": {
|
|
3263
3402
|
"@fastify/multipart": "^9.4.0",
|
|
3264
|
-
"@jskit-ai/kernel": "0.1.
|
|
3403
|
+
"@jskit-ai/kernel": "0.1.34"
|
|
3265
3404
|
},
|
|
3266
3405
|
"dev": {}
|
|
3267
3406
|
},
|
|
@@ -3276,11 +3415,11 @@
|
|
|
3276
3415
|
},
|
|
3277
3416
|
{
|
|
3278
3417
|
"packageId": "@jskit-ai/users-core",
|
|
3279
|
-
"version": "0.1.
|
|
3418
|
+
"version": "0.1.44",
|
|
3280
3419
|
"descriptor": {
|
|
3281
3420
|
"packageVersion": 1,
|
|
3282
3421
|
"packageId": "@jskit-ai/users-core",
|
|
3283
|
-
"version": "0.1.
|
|
3422
|
+
"version": "0.1.44",
|
|
3284
3423
|
"kind": "runtime",
|
|
3285
3424
|
"description": "Users/account runtime plus HTTP routes for account and console features.",
|
|
3286
3425
|
"dependsOn": [
|
|
@@ -3416,11 +3555,11 @@
|
|
|
3416
3555
|
"mutations": {
|
|
3417
3556
|
"dependencies": {
|
|
3418
3557
|
"runtime": {
|
|
3419
|
-
"@jskit-ai/auth-core": "0.1.
|
|
3420
|
-
"@jskit-ai/database-runtime": "0.1.
|
|
3421
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
3422
|
-
"@jskit-ai/kernel": "0.1.
|
|
3423
|
-
"@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",
|
|
3424
3563
|
"@fastify/type-provider-typebox": "^6.1.0",
|
|
3425
3564
|
"typebox": "^1.0.81"
|
|
3426
3565
|
},
|
|
@@ -3531,14 +3670,15 @@
|
|
|
3531
3670
|
},
|
|
3532
3671
|
{
|
|
3533
3672
|
"packageId": "@jskit-ai/users-web",
|
|
3534
|
-
"version": "0.1.
|
|
3673
|
+
"version": "0.1.49",
|
|
3535
3674
|
"descriptor": {
|
|
3536
3675
|
"packageVersion": 1,
|
|
3537
3676
|
"packageId": "@jskit-ai/users-web",
|
|
3538
|
-
"version": "0.1.
|
|
3677
|
+
"version": "0.1.49",
|
|
3539
3678
|
"kind": "runtime",
|
|
3540
|
-
"description": "Users web module: account/profile UI plus shared
|
|
3679
|
+
"description": "Users web module: account/profile UI plus shared users web widgets.",
|
|
3541
3680
|
"dependsOn": [
|
|
3681
|
+
"@jskit-ai/auth-web",
|
|
3542
3682
|
"@jskit-ai/http-runtime",
|
|
3543
3683
|
"@jskit-ai/shell-web",
|
|
3544
3684
|
"@jskit-ai/uploads-image-web",
|
|
@@ -3581,14 +3721,6 @@
|
|
|
3581
3721
|
"subpath": "./client/components/ProfileClientElement",
|
|
3582
3722
|
"summary": "Exports profile settings client element scaffold component."
|
|
3583
3723
|
},
|
|
3584
|
-
{
|
|
3585
|
-
"subpath": "./client/components/ConsoleSettingsClientElement",
|
|
3586
|
-
"summary": "Exports console settings landing-page client element."
|
|
3587
|
-
},
|
|
3588
|
-
{
|
|
3589
|
-
"subpath": "./client/components/WorkspaceSettingsClientElement",
|
|
3590
|
-
"summary": "Exports workspace settings client element."
|
|
3591
|
-
},
|
|
3592
3724
|
{
|
|
3593
3725
|
"subpath": "./client/composables/useAddEdit",
|
|
3594
3726
|
"summary": "Exports add/edit operation composable."
|
|
@@ -3629,9 +3761,8 @@
|
|
|
3629
3761
|
"containerTokens": {
|
|
3630
3762
|
"server": [],
|
|
3631
3763
|
"client": [
|
|
3632
|
-
"users.web.shell.menu-link-item",
|
|
3633
|
-
"users.web.shell.surface-aware-menu-link-item",
|
|
3634
3764
|
"users.web.profile.menu.surface-switch-item",
|
|
3765
|
+
"users.web.home.tools.widget",
|
|
3635
3766
|
"users.web.profile.element",
|
|
3636
3767
|
"users.web.bootstrap-placement.runtime"
|
|
3637
3768
|
]
|
|
@@ -3641,8 +3772,24 @@
|
|
|
3641
3772
|
"placements": {
|
|
3642
3773
|
"outlets": [
|
|
3643
3774
|
{
|
|
3644
|
-
"
|
|
3645
|
-
"
|
|
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",
|
|
3646
3793
|
"surfaces": [
|
|
3647
3794
|
"console"
|
|
3648
3795
|
],
|
|
@@ -3652,8 +3799,7 @@
|
|
|
3652
3799
|
"contributions": [
|
|
3653
3800
|
{
|
|
3654
3801
|
"id": "users.profile.menu.surface-switch",
|
|
3655
|
-
"
|
|
3656
|
-
"position": "primary-menu",
|
|
3802
|
+
"target": "auth-profile-menu:primary-menu",
|
|
3657
3803
|
"surfaces": [
|
|
3658
3804
|
"*"
|
|
3659
3805
|
],
|
|
@@ -3664,27 +3810,58 @@
|
|
|
3664
3810
|
},
|
|
3665
3811
|
{
|
|
3666
3812
|
"id": "users.profile.menu.settings",
|
|
3667
|
-
"
|
|
3668
|
-
"position": "primary-menu",
|
|
3813
|
+
"target": "auth-profile-menu:primary-menu",
|
|
3669
3814
|
"surfaces": [
|
|
3670
3815
|
"*"
|
|
3671
3816
|
],
|
|
3672
3817
|
"order": 500,
|
|
3673
|
-
"componentToken": "
|
|
3818
|
+
"componentToken": "auth.web.profile.menu.link-item",
|
|
3674
3819
|
"when": "auth.authenticated === true",
|
|
3675
3820
|
"source": "mutations.text#users-web-profile-settings-placement"
|
|
3676
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
|
+
},
|
|
3677
3833
|
{
|
|
3678
3834
|
"id": "users.console.menu.settings",
|
|
3679
|
-
"
|
|
3680
|
-
"position": "primary-menu",
|
|
3835
|
+
"target": "shell-layout:primary-menu",
|
|
3681
3836
|
"surfaces": [
|
|
3682
3837
|
"console"
|
|
3683
3838
|
],
|
|
3684
3839
|
"order": 100,
|
|
3685
|
-
"componentToken": "
|
|
3840
|
+
"componentToken": "local.main.ui.menu-link-item",
|
|
3686
3841
|
"when": "auth.authenticated === true",
|
|
3687
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"
|
|
3688
3865
|
}
|
|
3689
3866
|
]
|
|
3690
3867
|
}
|
|
@@ -3695,12 +3872,12 @@
|
|
|
3695
3872
|
"runtime": {
|
|
3696
3873
|
"@tanstack/vue-query": "5.92.12",
|
|
3697
3874
|
"@mdi/js": "^7.4.47",
|
|
3698
|
-
"@jskit-ai/http-runtime": "0.1.
|
|
3699
|
-
"@jskit-ai/realtime": "0.1.
|
|
3700
|
-
"@jskit-ai/kernel": "0.1.
|
|
3701
|
-
"@jskit-ai/shell-web": "0.1.
|
|
3702
|
-
"@jskit-ai/uploads-image-web": "0.1.
|
|
3703
|
-
"@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",
|
|
3704
3881
|
"vuetify": "^4.0.0"
|
|
3705
3882
|
},
|
|
3706
3883
|
"dev": {}
|
|
@@ -3768,7 +3945,7 @@
|
|
|
3768
3945
|
"from": "templates/src/pages/console/settings/index.vue",
|
|
3769
3946
|
"toSurface": "console",
|
|
3770
3947
|
"toSurfacePath": "settings/index.vue",
|
|
3771
|
-
"reason": "Install console settings
|
|
3948
|
+
"reason": "Install console settings index stub scaffold for app-owned landing or redirect behavior.",
|
|
3772
3949
|
"category": "users-web",
|
|
3773
3950
|
"id": "users-web-page-console-settings"
|
|
3774
3951
|
}
|
|
@@ -3789,7 +3966,7 @@
|
|
|
3789
3966
|
"file": "src/placement.js",
|
|
3790
3967
|
"position": "bottom",
|
|
3791
3968
|
"skipIfContains": "id: \"users.profile.menu.surface-switch\"",
|
|
3792
|
-
"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",
|
|
3793
3970
|
"reason": "Append users-web profile surface switch placement into app-owned placement registry.",
|
|
3794
3971
|
"category": "users-web",
|
|
3795
3972
|
"id": "users-web-profile-surface-switch-placement"
|
|
@@ -3799,20 +3976,40 @@
|
|
|
3799
3976
|
"file": "src/placement.js",
|
|
3800
3977
|
"position": "bottom",
|
|
3801
3978
|
"skipIfContains": "id: \"users.profile.menu.settings\"",
|
|
3802
|
-
"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",
|
|
3803
3980
|
"reason": "Append users-web profile settings menu placement into app-owned placement registry.",
|
|
3804
3981
|
"category": "users-web",
|
|
3805
3982
|
"id": "users-web-profile-settings-placement"
|
|
3806
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
|
+
},
|
|
3807
3994
|
{
|
|
3808
3995
|
"op": "append-text",
|
|
3809
3996
|
"file": "src/placement.js",
|
|
3810
3997
|
"position": "bottom",
|
|
3811
3998
|
"skipIfContains": "id: \"users.console.menu.settings\"",
|
|
3812
|
-
"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",
|
|
3813
4000
|
"reason": "Append users-web console settings menu placement into app-owned placement registry.",
|
|
3814
4001
|
"category": "users-web",
|
|
3815
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"
|
|
3816
4013
|
}
|
|
3817
4014
|
]
|
|
3818
4015
|
}
|
|
@@ -3820,11 +4017,11 @@
|
|
|
3820
4017
|
},
|
|
3821
4018
|
{
|
|
3822
4019
|
"packageId": "@jskit-ai/workspaces-core",
|
|
3823
|
-
"version": "0.1.
|
|
4020
|
+
"version": "0.1.10",
|
|
3824
4021
|
"descriptor": {
|
|
3825
4022
|
"packageVersion": 1,
|
|
3826
4023
|
"packageId": "@jskit-ai/workspaces-core",
|
|
3827
|
-
"version": "0.1.
|
|
4024
|
+
"version": "0.1.10",
|
|
3828
4025
|
"kind": "runtime",
|
|
3829
4026
|
"description": "Workspace tenancy runtime plus HTTP routes, role catalog, and workspace config scaffolding.",
|
|
3830
4027
|
"dependsOn": [
|
|
@@ -3933,7 +4130,7 @@
|
|
|
3933
4130
|
"mutations": {
|
|
3934
4131
|
"dependencies": {
|
|
3935
4132
|
"runtime": {
|
|
3936
|
-
"@jskit-ai/users-core": "0.1.
|
|
4133
|
+
"@jskit-ai/users-core": "0.1.44"
|
|
3937
4134
|
},
|
|
3938
4135
|
"dev": {}
|
|
3939
4136
|
},
|
|
@@ -4123,11 +4320,11 @@
|
|
|
4123
4320
|
},
|
|
4124
4321
|
{
|
|
4125
4322
|
"packageId": "@jskit-ai/workspaces-web",
|
|
4126
|
-
"version": "0.1.
|
|
4323
|
+
"version": "0.1.10",
|
|
4127
4324
|
"descriptor": {
|
|
4128
4325
|
"packageVersion": 1,
|
|
4129
4326
|
"packageId": "@jskit-ai/workspaces-web",
|
|
4130
|
-
"version": "0.1.
|
|
4327
|
+
"version": "0.1.10",
|
|
4131
4328
|
"kind": "runtime",
|
|
4132
4329
|
"description": "Workspace web module: workspace selector, tools widget, workspace surfaces, and members/settings UI.",
|
|
4133
4330
|
"dependsOn": [
|
|
@@ -4171,8 +4368,7 @@
|
|
|
4171
4368
|
"users.web.workspace.tools.widget",
|
|
4172
4369
|
"users.web.workspace-settings.menu-item",
|
|
4173
4370
|
"users.web.workspace-members.menu-item",
|
|
4174
|
-
"users.web.members-admin.element"
|
|
4175
|
-
"users.web.workspace-settings.element"
|
|
4371
|
+
"users.web.members-admin.element"
|
|
4176
4372
|
]
|
|
4177
4373
|
}
|
|
4178
4374
|
},
|
|
@@ -4180,8 +4376,8 @@
|
|
|
4180
4376
|
"placements": {
|
|
4181
4377
|
"outlets": [
|
|
4182
4378
|
{
|
|
4183
|
-
"
|
|
4184
|
-
"
|
|
4379
|
+
"target": "admin-settings:primary-menu",
|
|
4380
|
+
"defaultLinkComponentToken": "local.main.ui.surface-aware-menu-link-item",
|
|
4185
4381
|
"surfaces": [
|
|
4186
4382
|
"admin"
|
|
4187
4383
|
],
|
|
@@ -4191,8 +4387,7 @@
|
|
|
4191
4387
|
"contributions": [
|
|
4192
4388
|
{
|
|
4193
4389
|
"id": "users.workspace.selector",
|
|
4194
|
-
"
|
|
4195
|
-
"position": "top-left",
|
|
4390
|
+
"target": "shell-layout:top-left",
|
|
4196
4391
|
"surfaces": [
|
|
4197
4392
|
"*"
|
|
4198
4393
|
],
|
|
@@ -4203,8 +4398,7 @@
|
|
|
4203
4398
|
},
|
|
4204
4399
|
{
|
|
4205
4400
|
"id": "users.account.invites.cue",
|
|
4206
|
-
"
|
|
4207
|
-
"position": "top-right",
|
|
4401
|
+
"target": "shell-layout:top-right",
|
|
4208
4402
|
"surfaces": [
|
|
4209
4403
|
"*"
|
|
4210
4404
|
],
|
|
@@ -4215,8 +4409,7 @@
|
|
|
4215
4409
|
},
|
|
4216
4410
|
{
|
|
4217
4411
|
"id": "users.workspace.tools.widget",
|
|
4218
|
-
"
|
|
4219
|
-
"position": "top-right",
|
|
4412
|
+
"target": "shell-layout:top-right",
|
|
4220
4413
|
"surfaces": [
|
|
4221
4414
|
"admin"
|
|
4222
4415
|
],
|
|
@@ -4226,8 +4419,7 @@
|
|
|
4226
4419
|
},
|
|
4227
4420
|
{
|
|
4228
4421
|
"id": "users.workspace.menu.workspace-settings",
|
|
4229
|
-
"
|
|
4230
|
-
"position": "primary-menu",
|
|
4422
|
+
"target": "workspace-tools:primary-menu",
|
|
4231
4423
|
"surfaces": [
|
|
4232
4424
|
"admin"
|
|
4233
4425
|
],
|
|
@@ -4237,25 +4429,13 @@
|
|
|
4237
4429
|
},
|
|
4238
4430
|
{
|
|
4239
4431
|
"id": "users.workspace.menu.members",
|
|
4240
|
-
"
|
|
4241
|
-
"position": "primary-menu",
|
|
4432
|
+
"target": "workspace-tools:primary-menu",
|
|
4242
4433
|
"surfaces": [
|
|
4243
4434
|
"admin"
|
|
4244
4435
|
],
|
|
4245
4436
|
"order": 200,
|
|
4246
4437
|
"componentToken": "users.web.workspace-members.menu-item",
|
|
4247
4438
|
"source": "mutations.text#users-web-placement-block"
|
|
4248
|
-
},
|
|
4249
|
-
{
|
|
4250
|
-
"id": "users.workspace.settings.general",
|
|
4251
|
-
"host": "admin-settings",
|
|
4252
|
-
"position": "primary-menu",
|
|
4253
|
-
"surfaces": [
|
|
4254
|
-
"admin"
|
|
4255
|
-
],
|
|
4256
|
-
"order": 100,
|
|
4257
|
-
"componentToken": "users.web.shell.surface-aware-menu-link-item",
|
|
4258
|
-
"source": "mutations.text#users-web-workspace-settings-general-placement"
|
|
4259
4439
|
}
|
|
4260
4440
|
]
|
|
4261
4441
|
}
|
|
@@ -4264,8 +4444,8 @@
|
|
|
4264
4444
|
"mutations": {
|
|
4265
4445
|
"dependencies": {
|
|
4266
4446
|
"runtime": {
|
|
4267
|
-
"@jskit-ai/workspaces-core": "0.1.
|
|
4268
|
-
"@jskit-ai/users-web": "0.1.
|
|
4447
|
+
"@jskit-ai/workspaces-core": "0.1.10",
|
|
4448
|
+
"@jskit-ai/users-web": "0.1.49"
|
|
4269
4449
|
},
|
|
4270
4450
|
"dev": {}
|
|
4271
4451
|
},
|
|
@@ -4408,7 +4588,7 @@
|
|
|
4408
4588
|
"from": "templates/src/pages/admin/workspace/settings/index.vue",
|
|
4409
4589
|
"toSurface": "admin",
|
|
4410
4590
|
"toSurfacePath": "workspace/settings/index.vue",
|
|
4411
|
-
"reason": "Install workspace settings
|
|
4591
|
+
"reason": "Install workspace settings index stub scaffold for app-owned landing or redirect behavior.",
|
|
4412
4592
|
"category": "workspaces-web",
|
|
4413
4593
|
"id": "users-web-page-admin-workspace-settings",
|
|
4414
4594
|
"when": {
|
|
@@ -4426,7 +4606,7 @@
|
|
|
4426
4606
|
"file": "src/placement.js",
|
|
4427
4607
|
"position": "bottom",
|
|
4428
4608
|
"skipIfContains": "id: \"users.workspace.selector\"",
|
|
4429
|
-
"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",
|
|
4430
4610
|
"reason": "Append workspace placement entries into app-owned placement registry.",
|
|
4431
4611
|
"category": "workspaces-web",
|
|
4432
4612
|
"id": "users-web-placement-block",
|
|
@@ -4457,23 +4637,6 @@
|
|
|
4457
4637
|
"reason": "Bind app-owned account pending invites cue component token into local main client provider registry.",
|
|
4458
4638
|
"category": "workspaces-web",
|
|
4459
4639
|
"id": "users-web-main-client-provider-account-invites-register"
|
|
4460
|
-
},
|
|
4461
|
-
{
|
|
4462
|
-
"op": "append-text",
|
|
4463
|
-
"file": "src/placement.js",
|
|
4464
|
-
"position": "bottom",
|
|
4465
|
-
"skipIfContains": "id: \"users.workspace.settings.general\"",
|
|
4466
|
-
"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",
|
|
4467
|
-
"reason": "Append workspace settings general-page placement into app-owned placement registry.",
|
|
4468
|
-
"category": "workspaces-web",
|
|
4469
|
-
"id": "users-web-workspace-settings-general-placement",
|
|
4470
|
-
"when": {
|
|
4471
|
-
"config": "tenancyMode",
|
|
4472
|
-
"in": [
|
|
4473
|
-
"personal",
|
|
4474
|
-
"workspaces"
|
|
4475
|
-
]
|
|
4476
|
-
}
|
|
4477
4640
|
}
|
|
4478
4641
|
]
|
|
4479
4642
|
}
|