@stechquick/studio-cli 4.2.0-1 → 4.2.0-3

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.
Files changed (358) hide show
  1. package/dist/common/helpers/aiKitResolver.js +11 -5
  2. package/dist/common/helpers/aiKitResolver.js.map +1 -1
  3. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/cli-kit/knowledge/buildqjson.md +35 -0
  4. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/cli-kit/knowledge/cli-bridge.md +97 -0
  5. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/cli-kit/knowledge/render-check.md +48 -0
  6. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/cli-kit/knowledge/sync.md +50 -0
  7. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/index.md +23 -0
  8. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/concepts.md +39 -0
  9. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/examples/README.md +18 -0
  10. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/examples/consent-check-using-container-methods.qjson +1314 -0
  11. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/examples/consent-check-using-hosttrigger.qjson +1301 -0
  12. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/examples/consentHostMethods.container +81 -0
  13. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/examples/dataroid.qjson +692 -0
  14. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/examples/miniapp-appbar.qjson +674 -0
  15. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/examples/miniapp-footer.qjson +627 -0
  16. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/examples/miniapp-page-example-with-appbar-and-footer.qjson +1122 -0
  17. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/examples/miniapp-payment-page-paymentComp-usage.qjson +1262 -0
  18. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/guides/analytics-and-logging.md +45 -0
  19. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/guides/host-functions.md +88 -0
  20. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/guides/miniapp-page-structure.md +65 -0
  21. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/guides/navigation-and-lifecycle.md +29 -0
  22. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/guides/platform-payments.md +54 -0
  23. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/index.md +40 -0
  24. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/reference/host-app-image.json +53 -0
  25. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/reference/host-functions.container +145 -0
  26. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/reference/host-functions.json +109 -0
  27. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/reference/paymentComp.qjson +1867 -0
  28. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/miniapp-kit/reference/platform-components.json +105 -0
  29. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/README.md +11 -0
  30. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/AllowdDates.qjson +126 -0
  31. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/BarChartEvents.qjson +323 -0
  32. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/BarChartTitle.qjson +411 -0
  33. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/BarChartYTicks.qjson +399 -0
  34. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/BarChart_TicksCallback.qjson +309 -0
  35. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/CalendarClickMoreExample.qjson +2 -0
  36. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/CalendarUsageExample.qjson +2 -0
  37. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/ChartLegendFont.qjson +788 -0
  38. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/DataTable_customSort.qjson +277 -0
  39. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/DocumentViewer_tiff_Sample.qjson +927 -0
  40. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/DoughnutChartEvents.qjson +243 -0
  41. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/DxDataGrid_CustomStore.qjson +267 -0
  42. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/Icon_Samples.qjson +181 -0
  43. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/Instructions.request.qjson +584 -0
  44. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/Intersect.qjson +404 -0
  45. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/LightBox.qjson +777 -0
  46. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/LineChart.qjson +1049 -0
  47. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/LineChartEvents.qjson +327 -0
  48. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/LineChartPointProps.qjson +416 -0
  49. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/LineChart_TicksCallback.qjson +309 -0
  50. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/LineChart_Type_Time_Sample.qjson +342 -0
  51. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/MMDelay.qjson +384 -0
  52. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/MMtrigger.qjson +209 -0
  53. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/NavigationDrawerExample.qjson +899 -0
  54. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/NavigationDrawerWithAppBar.qjson +1647 -0
  55. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/Parallax.qjson +416 -0
  56. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/PieChart.qjson +1103 -0
  57. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/QCaptcha.qjson +409 -0
  58. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/QDocumentViewer.qjson +149 -0
  59. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/QFrameAllowFullScreenExample.qjson +360 -0
  60. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/QFrameExample.qjson +213 -0
  61. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/QIdleTimer.qjson +221 -0
  62. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/QImgZoomRotate.qjson +432 -0
  63. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/QImgZoomTypeNextTo.qjson +196 -0
  64. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/QImgZoomTypeOn.qjson +196 -0
  65. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/QLabel_URL_Click_SendParams.qjson +477 -0
  66. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/VList_NavMenu.qjson +3008 -0
  67. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/alertSamplePage.qjson +450 -0
  68. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/authorizationDashboard.qjson +24914 -0
  69. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/badge.qjson +151 -0
  70. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/bottomSheetScrollable.qjson +3120 -0
  71. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/breadcrumbs.qjson +563 -0
  72. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/button.qjson +1658 -0
  73. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/cellTemplate.qjson +96 -0
  74. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/combobox.qjson +109 -0
  75. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/comboboxSelected.qjson +119 -0
  76. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/createChildren.qjson +411 -0
  77. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/createClosedPanes.qjson +265 -0
  78. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/creditcard.qjson +49 -0
  79. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/crypto.qjson +5632 -0
  80. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/customFilterUsingCalculateFilterExpressionEvent.qjson +301 -0
  81. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/customStore.qjson +157 -0
  82. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dataTableFormatColumn.qjson +151 -0
  83. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/data_table_component_access.qjson +130 -0
  84. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/datagridAddDynamicColumn.qjson +1381 -0
  85. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/datatableAddandDeleteItem.qjson +1195 -0
  86. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/datatable_selectable_feature_select_unselect_usage.qjson +300 -0
  87. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/deleteComponent.qjson +501 -0
  88. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/divider.qjson +180 -0
  89. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxColumncssClass.qjson +249 -0
  90. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxDataGridAddinEditingDeleting.qjson +486 -0
  91. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxDataGridLines.qjson +121 -0
  92. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxDataGridRemove.qjson +209 -0
  93. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxDatagridHeatMap.qjson +335 -0
  94. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxDatagridUpdate.qjson +80 -0
  95. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxMasterDetail.qjson +257 -0
  96. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxPaging_withServiceCall.qjson +160 -0
  97. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxRowDragging.qjson +175 -0
  98. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxSummary_dxTotalItem_usage.qjson +215 -0
  99. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxTotalItemCustomizeText.qjson +222 -0
  100. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dxTreeList_exportToExcel.qjson +267 -0
  101. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/dynamicComp.qjson +156 -0
  102. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/efficientTreeviewSearchforLargeDatasets.qjson +736 -0
  103. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/email.qjson +177 -0
  104. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/encoding.qjson +304 -0
  105. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/encryptedStorage_Sample.qjson +596 -0
  106. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/exportToXlsx_Sample.qjson +1956 -0
  107. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/images.qjson +1379 -0
  108. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/images_olddd.qjson +1366 -0
  109. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/newCustomerRegister.qjson +2598 -0
  110. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/number.qjson +169 -0
  111. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/number_VTextarea.qjson +163 -0
  112. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/onlyAlphabetic.qjson +164 -0
  113. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/parentPage.qjson +351 -0
  114. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/pipeline.qjson +78 -0
  115. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/pipelineSample.qjson +410 -0
  116. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/placeQidDynamic.qjson +289 -0
  117. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/progress-circular.qjson +1014 -0
  118. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/samplePageLottie.qjson +696 -0
  119. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/server-SideAutocompleteHandling.qjson +696 -0
  120. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/examples/style/xlsxToJson_Sample.qjson +772 -0
  121. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/index.md +153 -0
  122. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/13-application.md +164 -0
  123. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/alert-component.md +91 -0
  124. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/appSettings.md +204 -0
  125. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/component-list.md +63 -0
  126. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/container-services-file.md +71 -0
  127. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/container-services-intellisense.md +42 -0
  128. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/global-localization.md +78 -0
  129. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/loading-component.md +61 -0
  130. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/local-proxy-file.md +62 -0
  131. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/pipeline.md +139 -0
  132. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/settings-file.md +66 -0
  133. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/style-file.md +58 -0
  134. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/appSettings/theme.md +58 -0
  135. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/components.md +105 -0
  136. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/container-configuration.md +157 -0
  137. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/dynamic-components.md +169 -0
  138. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/events-and-scripting.md +79 -0
  139. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots-legacy.md +15 -0
  140. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots.md +64 -0
  141. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/localization.md +40 -0
  142. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/page-skeletons-legacy.md +15 -0
  143. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/page-skeletons.md +111 -0
  144. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/properties.md +77 -0
  145. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/qjson-structure-legacy.md +15 -0
  146. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/qjson-structure.md +67 -0
  147. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/services.md +68 -0
  148. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/styling-legacy.md +15 -0
  149. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/styling.md +177 -0
  150. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/validation-legacy.md +15 -0
  151. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/knowledge/validation.md +56 -0
  152. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/legacy-track.md +15 -0
  153. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/component-catalog-legacy.md +15 -0
  154. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/component-catalog.md +144 -0
  155. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/component-contracts.json +16920 -0
  156. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/component-index.json +266 -0
  157. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/component-styles.json +7128 -0
  158. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/events-system.md +96 -0
  159. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/layout-system.md +15 -0
  160. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/mapping-S-vuetify-class.md +103 -0
  161. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/qjson-schema-legacy.md +15 -0
  162. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/qjson-schema.md +188 -0
  163. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/quick-api.json +1746 -0
  164. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/quick-api.md +284 -0
  165. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/reference/styling-system.md +193 -0
  166. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/s-track.md +30 -0
  167. package/dist/studio-cli/kits/miniapp-app-kit/.ai-kit/ui-kit/skills/quick-qjson/SKILL.md +10 -0
  168. package/dist/studio-cli/kits/miniapp-app-kit/.claude/skills/figma-to-qjson/SKILL.md +116 -0
  169. package/dist/studio-cli/kits/miniapp-app-kit/.claude/skills/quick-qjson/SKILL.md +10 -0
  170. package/dist/studio-cli/kits/miniapp-app-kit/.mcp.json +8 -0
  171. package/dist/studio-cli/kits/miniapp-app-kit/.opencode/opencode.json +19 -0
  172. package/dist/studio-cli/kits/miniapp-app-kit/.opencode/skills/figma-to-qjson/SKILL.md +116 -0
  173. package/dist/studio-cli/kits/miniapp-app-kit/.opencode/skills/quick-qjson/SKILL.md +10 -0
  174. package/dist/studio-cli/kits/miniapp-app-kit/AGENTS.md +24 -0
  175. package/dist/studio-cli/kits/miniapp-app-kit/CLAUDE.md +24 -0
  176. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/cli-kit/knowledge/buildqjson.md +35 -0
  177. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/cli-kit/knowledge/cli-bridge.md +97 -0
  178. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/cli-kit/knowledge/render-check.md +48 -0
  179. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/cli-kit/knowledge/sync.md +50 -0
  180. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/index.md +22 -0
  181. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/README.md +11 -0
  182. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/AllowdDates.qjson +126 -0
  183. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/BarChartEvents.qjson +323 -0
  184. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/BarChartTitle.qjson +411 -0
  185. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/BarChartYTicks.qjson +399 -0
  186. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/BarChart_TicksCallback.qjson +309 -0
  187. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/CalendarClickMoreExample.qjson +2 -0
  188. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/CalendarUsageExample.qjson +2 -0
  189. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/ChartLegendFont.qjson +788 -0
  190. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/DataTable_customSort.qjson +277 -0
  191. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/DocumentViewer_tiff_Sample.qjson +927 -0
  192. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/DoughnutChartEvents.qjson +243 -0
  193. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/DxDataGrid_CustomStore.qjson +267 -0
  194. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/Icon_Samples.qjson +181 -0
  195. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/Instructions.request.qjson +584 -0
  196. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/Intersect.qjson +404 -0
  197. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/LightBox.qjson +777 -0
  198. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/LineChart.qjson +1049 -0
  199. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/LineChartEvents.qjson +327 -0
  200. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/LineChartPointProps.qjson +416 -0
  201. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/LineChart_TicksCallback.qjson +309 -0
  202. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/LineChart_Type_Time_Sample.qjson +342 -0
  203. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/MMDelay.qjson +384 -0
  204. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/MMtrigger.qjson +209 -0
  205. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/NavigationDrawerExample.qjson +899 -0
  206. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/NavigationDrawerWithAppBar.qjson +1647 -0
  207. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/Parallax.qjson +416 -0
  208. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/PieChart.qjson +1103 -0
  209. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/QCaptcha.qjson +409 -0
  210. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/QDocumentViewer.qjson +149 -0
  211. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/QFrameAllowFullScreenExample.qjson +360 -0
  212. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/QFrameExample.qjson +213 -0
  213. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/QIdleTimer.qjson +221 -0
  214. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/QImgZoomRotate.qjson +432 -0
  215. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/QImgZoomTypeNextTo.qjson +196 -0
  216. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/QImgZoomTypeOn.qjson +196 -0
  217. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/QLabel_URL_Click_SendParams.qjson +477 -0
  218. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/VList_NavMenu.qjson +3008 -0
  219. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/alertSamplePage.qjson +450 -0
  220. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/authorizationDashboard.qjson +24914 -0
  221. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/badge.qjson +151 -0
  222. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/bottomSheetScrollable.qjson +3120 -0
  223. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/breadcrumbs.qjson +563 -0
  224. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/button.qjson +1658 -0
  225. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/cellTemplate.qjson +96 -0
  226. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/combobox.qjson +109 -0
  227. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/comboboxSelected.qjson +119 -0
  228. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/createChildren.qjson +411 -0
  229. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/createClosedPanes.qjson +265 -0
  230. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/creditcard.qjson +49 -0
  231. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/crypto.qjson +5632 -0
  232. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/customFilterUsingCalculateFilterExpressionEvent.qjson +301 -0
  233. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/customStore.qjson +157 -0
  234. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dataTableFormatColumn.qjson +151 -0
  235. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/data_table_component_access.qjson +130 -0
  236. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/datagridAddDynamicColumn.qjson +1381 -0
  237. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/datatableAddandDeleteItem.qjson +1195 -0
  238. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/datatable_selectable_feature_select_unselect_usage.qjson +300 -0
  239. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/deleteComponent.qjson +501 -0
  240. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/divider.qjson +180 -0
  241. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxColumncssClass.qjson +249 -0
  242. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxDataGridAddinEditingDeleting.qjson +486 -0
  243. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxDataGridLines.qjson +121 -0
  244. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxDataGridRemove.qjson +209 -0
  245. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxDatagridHeatMap.qjson +335 -0
  246. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxDatagridUpdate.qjson +80 -0
  247. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxMasterDetail.qjson +257 -0
  248. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxPaging_withServiceCall.qjson +160 -0
  249. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxRowDragging.qjson +175 -0
  250. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxSummary_dxTotalItem_usage.qjson +215 -0
  251. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxTotalItemCustomizeText.qjson +222 -0
  252. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dxTreeList_exportToExcel.qjson +267 -0
  253. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/dynamicComp.qjson +156 -0
  254. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/efficientTreeviewSearchforLargeDatasets.qjson +736 -0
  255. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/email.qjson +177 -0
  256. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/encoding.qjson +304 -0
  257. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/encryptedStorage_Sample.qjson +596 -0
  258. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/exportToXlsx_Sample.qjson +1956 -0
  259. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/images.qjson +1379 -0
  260. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/images_olddd.qjson +1366 -0
  261. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/newCustomerRegister.qjson +2598 -0
  262. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/number.qjson +169 -0
  263. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/number_VTextarea.qjson +163 -0
  264. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/onlyAlphabetic.qjson +164 -0
  265. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/parentPage.qjson +351 -0
  266. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/pipeline.qjson +78 -0
  267. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/pipelineSample.qjson +410 -0
  268. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/placeQidDynamic.qjson +289 -0
  269. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/progress-circular.qjson +1014 -0
  270. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/samplePageLottie.qjson +696 -0
  271. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/server-SideAutocompleteHandling.qjson +696 -0
  272. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/examples/style/xlsxToJson_Sample.qjson +772 -0
  273. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/index.md +112 -0
  274. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/13-application.md +164 -0
  275. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/alert-component.md +91 -0
  276. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/appSettings.md +204 -0
  277. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/component-list.md +63 -0
  278. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/container-services-file.md +71 -0
  279. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/container-services-intellisense.md +42 -0
  280. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/global-localization.md +78 -0
  281. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/loading-component.md +61 -0
  282. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/local-proxy-file.md +62 -0
  283. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/pipeline.md +139 -0
  284. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/settings-file.md +66 -0
  285. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/style-file.md +58 -0
  286. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/appSettings/theme.md +58 -0
  287. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/components.md +105 -0
  288. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/container-configuration.md +157 -0
  289. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/dynamic-components.md +169 -0
  290. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/events-and-scripting.md +79 -0
  291. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots-legacy.md +15 -0
  292. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots.md +64 -0
  293. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/localization.md +40 -0
  294. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/page-skeletons-legacy.md +15 -0
  295. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/page-skeletons.md +111 -0
  296. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/properties.md +77 -0
  297. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/qjson-structure-legacy.md +15 -0
  298. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/qjson-structure.md +67 -0
  299. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/services.md +68 -0
  300. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/styling-legacy.md +15 -0
  301. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/styling.md +177 -0
  302. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/validation-legacy.md +15 -0
  303. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/knowledge/validation.md +56 -0
  304. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/legacy-track.md +15 -0
  305. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/component-catalog-legacy.md +15 -0
  306. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/component-catalog.md +144 -0
  307. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/component-contracts.json +16920 -0
  308. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/component-index.json +266 -0
  309. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/component-styles.json +7128 -0
  310. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/events-system.md +96 -0
  311. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/layout-system.md +15 -0
  312. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/mapping-S-vuetify-class.md +103 -0
  313. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/qjson-schema-legacy.md +15 -0
  314. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/qjson-schema.md +188 -0
  315. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/quick-api.json +1746 -0
  316. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/quick-api.md +284 -0
  317. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/reference/styling-system.md +193 -0
  318. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/s-track.md +30 -0
  319. package/dist/studio-cli/kits/mobile-app-kit/.ai-kit/ui-kit/skills/quick-qjson/SKILL.md +10 -0
  320. package/dist/studio-cli/kits/mobile-app-kit/.claude/skills/figma-to-qjson/SKILL.md +116 -0
  321. package/dist/studio-cli/kits/mobile-app-kit/.claude/skills/quick-qjson/SKILL.md +10 -0
  322. package/dist/studio-cli/kits/mobile-app-kit/.mcp.json +8 -0
  323. package/dist/studio-cli/kits/mobile-app-kit/.opencode/opencode.json +19 -0
  324. package/dist/studio-cli/kits/mobile-app-kit/.opencode/skills/figma-to-qjson/SKILL.md +116 -0
  325. package/dist/studio-cli/kits/mobile-app-kit/.opencode/skills/quick-qjson/SKILL.md +10 -0
  326. package/dist/studio-cli/kits/mobile-app-kit/AGENTS.md +23 -0
  327. package/dist/studio-cli/kits/mobile-app-kit/CLAUDE.md +23 -0
  328. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/index.md +5 -0
  329. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/appSettings/component-list.md +2 -2
  330. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/appSettings/container-services-file.md +3 -3
  331. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/components.md +22 -14
  332. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots-legacy.md +1 -1
  333. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots.md +1 -1
  334. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/reference/component-catalog-legacy.md +4 -0
  335. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/reference/component-catalog.md +4 -0
  336. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/reference/component-index.json +1 -1
  337. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/reference/layout-system.md +1 -1
  338. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/reference/styling-system.md +1 -1
  339. package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/index.md +5 -0
  340. package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/appSettings/component-list.md +2 -2
  341. package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/appSettings/container-services-file.md +3 -3
  342. package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/components.md +22 -14
  343. package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots-legacy.md +1 -1
  344. package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots.md +1 -1
  345. package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/component-catalog-legacy.md +4 -0
  346. package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/component-catalog.md +4 -0
  347. package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/component-index.json +1 -1
  348. package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/layout-system.md +1 -1
  349. package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/styling-system.md +1 -1
  350. package/dist/studio-cli/src/control/kitInstall.js +28 -1
  351. package/dist/studio-cli/src/control/kitInstall.js.map +1 -1
  352. package/dist/studio-cli/src/control/pull.js +6 -3
  353. package/dist/studio-cli/src/control/pull.js.map +1 -1
  354. package/dist/studio-cli/src/version.js +1 -1
  355. package/package.json +1 -1
  356. package/dist/studio-cli/kits/super-app-kit/.ai-kit/coming-soon.md +0 -0
  357. package/dist/studio-cli/kits/super-app-kit/AGENTS.md +0 -0
  358. package/dist/studio-cli/kits/super-app-kit/CLAUDE.md +0 -0
@@ -0,0 +1,153 @@
1
+ # Quick qjson — agent guide (start here)
2
+
3
+ You are an AI coding agent working on **Quick / Plateau Studio `.qjson` files** — UI pages that live in Studio (the web IDE). These docs are the source of truth for Quick. Follow this guide.
4
+
5
+ ## Step 0 — determine the style system, then follow your track guide
6
+
7
+ Quick has **two style systems**, and they are not interchangeable on a page. Decide which one the target page is on **before** you style, lay out, or validate — then follow that track's guide and doc set for the rest of the task.
8
+
9
+ **Read the target's root-level `opt.V`:**
10
+
11
+ | Condition | Track | Guide to follow |
12
+ |-----------|-------|-----------------|
13
+ | **Creating a new page** | **`S` (new)** — new pages are always created at the current `V` | [s-track.md](s-track.md) |
14
+ | **`opt.V >= 2.0`** | **`S` (new)** — the `S` object renders; author design in `S` | [s-track.md](s-track.md) |
15
+ | **`opt.V` missing OR `< 2.0`** | **legacy (`cssClass`)** — `S` does NOT render; author `O.layout` + CSS classes | [legacy-track.md](legacy-track.md) |
16
+
17
+ There is no in-between: a page is either fully `S` or fully legacy. **Do not mix mechanisms** (never introduce `S` on a legacy page — it silently won't render; never author `O.layout` on an `S` page). **The presence of an `S` object is the ground truth for which system a page is on**, and `opt.V` should agree with it (`>= 2.0` ⇔ uses `S`). If the two disagree — `opt.V >= 2.0` but the nodes carry `O.layout`, or `opt.V` missing/`< 2.0` but the nodes carry an `S` object — the page is mid-migration or mis-tagged: go by whether an `S` object is actually present, and flag the mismatch to the user.
18
+
19
+ > **On Mobile, two things above work differently.** Mobile does not parse or apply `O.layout`, so legacy css declarations simply **have no effect** there — the page still renders, it is just not styled by them, and Studio's editor injects some of these fragments on its own.
20
+ >
21
+ > - **`opt.V >= 2.0` with leftover `O.layout` is normal on Mobile — do NOT flag it as a mismatch.** It is an ordinary `S` page. Never read `O.layout` to work out how it currently looks, author its design in `S`, and **strip its `O.layout` (`dOpt`/`class`) when you edit it**, so the page comes out clean.
22
+ > - **`opt.V` missing or `< 2.0` on Mobile: stop.** That page is legacy and **cannot be edited from a mobile workspace** — neither style system can author it there. Tell the user and make no changes.
23
+
24
+ Your track guide lists the exact doc set to use (schema, structure, layout, styling, catalog, skeletons, validation, examples) — **open only your track's docs plus the shared docs below.**
25
+
26
+ ## What a `.qjson` is (one paragraph)
27
+ A JS module exporting `pjson = { ... }`. You author `pJson` (a tree of component nodes) and `lrids` (localization) — so an **AI-authored file carries only `{ pJson, lrids, opt }`**. The editor/compiler generates the compiled twins `cJson`/`clrids`; **omit them entirely from files you author** — never write them into a new file, and **strip them if present** when editing an existing file (Studio regenerates them on import). Each node is `{ T, P, E, C, O, _Editor }` plus styling fields — `S`/`SA`/`SC` on `S`-system pages, `O.layout` on legacy pages. Full schema: `S` → [reference/qjson-schema.md](reference/qjson-schema.md); legacy → [reference/qjson-schema-legacy.md](reference/qjson-schema-legacy.md).
28
+
29
+ ## Where to look — shared docs (both tracks)
30
+ These carry no style-era content; use them regardless of track:
31
+ - **Task-oriented how-to (shared topics)** → [knowledge/properties.md](knowledge/properties.md), [events-and-scripting.md](knowledge/events-and-scripting.md), [components.md](knowledge/components.md), [services.md](knowledge/services.md), [localization.md](knowledge/localization.md), [dynamic-components.md](knowledge/dynamic-components.md).
32
+ - **Exact API of `quick.*`** (store, alert, request, navigation, validation, dates…) → [reference/quick-api.md](reference/quick-api.md) — the authoring rules **plus a complete index of every member**. Scan that index to see what exists, then grep the member's full signature/params/example in [reference/quick-api.json](reference/quick-api.json) (per-member blocks; never read it whole).
33
+ - **Events deep dive** → [reference/events-system.md](reference/events-system.md).
34
+ - **Which `T` exists + registry** → [reference/component-index.json](reference/component-index.json) (machine-readable; era-agnostic).
35
+ - **Valid props/events for a component (so you don't invent them)** → [reference/component-contracts.json](reference/component-contracts.json) (per `T`: each prop's `pType` prop/class/text/attr, value `type`, allowed `options` (enum), `default`; and `events` as `{ name, params?: [{name,type}] }`).
36
+ - **Valid Style-tab (`S`) params for a component** → [reference/component-styles.json](reference/component-styles.json) (per `T`: supported style param → value `type` + editor `default`). **Not every component has a block** — `componentsWithStyleBlocks` in [reference/component-index.json](reference/component-index.json) lists the ones that do (and `componentsWithSC` the ones that take an `SC`), so a grep returning nothing is an answer, not a failed lookup.
37
+
38
+ > **Do NOT read these big files whole.** `component-contracts.json`, `component-styles.json` (keyed per `T`, one component block each) and `quick-api.json` (keyed per API member) are lookup tables, not documents. Reading either whole wastes context and the file tools cap at 2000 lines — so a whole-file read silently truncates and you'd miss most components without knowing. Instead, **for each component you place, grep its block and read only that slice**: `grep -n '"VIcon":' reference/component-contracts.json` → a line number → `Read` that offset for ~30–60 lines. Same for an API member: `grep -n '"setRegion"' reference/quick-api.json`. Batch the lookups a section needs before writing it.
39
+
40
+ > **Why read these first (the core principle):** these dictionaries are *generation inputs*. Pick the prop/event/param/style from the contract **before** you write — then you never invent something the editor rejects. Never discover the valid set by trial and error against editor/compiler messages (a raw error says *what's wrong*, not *what's right*). Look it up up front.
41
+
42
+
43
+ **Everything else — the schema, structure, layout, styling how-to, component catalog, page skeletons, validation checklist, and examples folder — is era-specific and listed in your track guide** ([s-track.md](s-track.md) / [legacy-track.md](legacy-track.md)).
44
+
45
+
46
+ ## Workflow for every task
47
+ 1. **Read the target + neighbors.** Open the `.qjson` you'll edit and 1–2 sibling pages in the same folder. These docs give you the *rules*; sibling pages give you *project conventions* (ID style, service URLs, `QJsonPath` of any service component, navigation `<<qjson:id>>` references). Mirror them.
48
+ 2. **Classify the work** — static layout / service / table / dialog-form / chart / navigation / localization / dynamic component (any repeated rows or cards built from data). Read the matching shared `knowledge/` file(s).
49
+ 3. **Determine the style system (Step 0) and open your track guide.** Everything about *how* you build the tree's design, style, lay out, and validate lives there — follow it.
50
+ 4. **Validate** before finishing: walk your track's `validation…` checklist and fix every issue. Touched multiple files → validate them all.
51
+ 5. **Report**: changed file(s), what changed (including styling), the validation result — say plainly what was and wasn't checked — and any project assumption you made.
52
+
53
+ ## Non-negotiable rules — shared (both tracks)
54
+ These apply on every page regardless of era. (Style/layout-mechanism rules are in your track guide.)
55
+ 1. **Omit `cJson`/`clrids` entirely from AI-authored files.** Author `pJson`/`lrids` only; never write the compiled twins into a new file, and **strip them if present** when editing an existing one. Studio regenerates them on import.
56
+ 2. Every node: valid `T` (check the index), unique `P.ID.H`, unique `_Editor.eID`. (eID need not equal ID.) Don't invent props **or events** — use the props/events listed for that `T` in [reference/component-contracts.json](reference/component-contracts.json), with the PType it specifies and the event `params` it gives.
57
+ 3. Strings in prop `H` are single-quoted (`"'primary'"`); booleans/numbers/expressions are bare; QScript object literals use `=` (`{text='A', value=1}`).
58
+ 4. `QLabel.text` → PType `"prop"`. `VIcon` icon name → `text` with PType `"text"` — `H` is still a QScript string, so single-quote it: `"H": "'mdi-home'"` (never bare `"mdi-home"`).
59
+ 5. Events: never native `return` (use `quick.return`); close object literals with `};`; no browser globals (`window`/`document`/`console`/`setTimeout`) — use `quick.*`. **Event handlers are always TypeScript — set `"HL":"TS"` on every handler.** (Property/binding expressions are the ones that default to `QS`.)
60
+ 6. Props use bare `LR('key')`; events use `quick.LR('key')`.
61
+ 7. **Containment** (editor-enforced, era-agnostic): `VCol` only inside `VRow` (never at root); `VRow` holds only `VCol`; `VFooter` holds only `VContainer`; canonical wrapper `VContainer > VRow > VCol > content`.
62
+ 8. Charts: only `Bar`/`Line`/`Doughnut` (no `Pie`); no `visible` prop on charts.
63
+ 9. `quick.Quick.alert({...})` always includes `actionButtons`.
64
+ 10. `VBtn` label is a child `QLabel`/`VIcon`/`VImg`, not a text prop.
65
+ 11. **If you rename/move/delete a page that others reference**, update every referrer's `<<qjson:path>>` in the same change (references are path-based, so they go stale) — see [knowledge/validation.md](knowledge/validation.md#renaming--moving--deleting-a-referenced-page--update-the-referrers-yourself).
66
+ 12. **Never paste compiled (`╬…╩╩`) content** into a file — that is generated output (see rule 1).
67
+
68
+ ## Easy to get wrong
69
+ These are the rules most often assumed backwards. Check them against what you were about to write.
70
+ - **Props *can* contain `if/else` conditionals** — QScript returns the last evaluated value.
71
+ - **`VIcon`'s icon name uses PType `"text"`**, not `"prop"` — and `H` is still a single-quoted QScript string: `"H": "'mdi-home'"`, never `"H": "mdi-home"`.
72
+ - **`_Editor.eID` need not equal `P.ID.H`** (equal when auto-generated; differs after a rename).
73
+ - **Property/binding expressions default to `QS`; event handlers are always `TS`** (`"HL":"TS"` on every handler). The default applies to properties only — handlers are TS-only.
74
+ - **`quick.store` prefixes** are Page/Bag(`#`)/Global(`$`)/Shared(`&`) — for cross-session persistence use `quick.permanentStore`.
75
+ - **`quick.Quick.validation`** has `required/minLength/maxLength/email/iban/regex/tckn/vkn` — there is no `phone` rule (use the input's `format` + `regex`).
76
+ - **Per-component design lives in the Style tab, not only in CSS utility classes.** How it serializes depends on the page's era — see your track guide.
77
+
78
+ ## When unsure
79
+ Don't invent props/events/slots/values. Check [reference/component-index.json](reference/component-index.json) and your track's component catalog; for Vuetify components Vuetify 2 semantics apply; otherwise find a real example in a sibling page or ask the user. If a `T` isn't in the index, it's probably wrong (or the index needs updating from a newer runtime).
80
+
81
+ ## Calling the host from a page
82
+
83
+ If this app runs inside a host — a shell, a native wrapper, a portal — it can call functions the host
84
+ exposes, through `quick.container`. Those functions are not discovered at runtime: the app declares them in
85
+ a **Container Configuration** (a `.container` file), one per app, each entry carrying a mock that answers
86
+ while the app runs in Studio.
87
+
88
+ Two rules catch most of the mistakes:
89
+
90
+ - **A function a page calls must be declared in the container file**, and `buildQjson` cannot check that —
91
+ an undeclared call fails only at runtime.
92
+ - **Call through a cast: `(<any>quick.container).<funcName>()`.** `quick.container` is typed `{}`, so a bare
93
+ call fails validation.
94
+
95
+ The full capability — finding or creating the file, the entry shape, mocks, and the deprecated
96
+ `quick.Quick.host.trigger` it replaces → [knowledge/container-configuration.md](knowledge/container-configuration.md).
97
+
98
+ Not to be confused with the **Container Services File**, a different feature that shares the word
99
+ → [knowledge/appSettings/container-services-file.md](knowledge/appSettings/container-services-file.md).
100
+
101
+ ## MiniApp — host rules for every page
102
+
103
+ The pages in this workspace are a **MiniApp**: they run inside a SuperApp shell that owns the surrounding experience. Everything in the ui-kit manual ([../../.ai-kit/ui-kit/index.md](../../.ai-kit/ui-kit/index.md)) still applies; these are the additional constraints the host imposes. Read this before authoring or editing any page here.
104
+
105
+ ### Non-negotiable — every page
106
+
107
+ 1. **Every page has a top-level `VAppBar`** carrying a back control (`quick.Quick.back()`) and an exit control that returns the user to the host app (`(<any>quick.container).stopMiniApp()`) and **shows the standard host-app image** — the `VImg` from [reference/host-app-image.json](reference/host-app-image.json), copied as-is, never a `VIcon` or another image. A page without one compiles, validates and pushes clean, and is still wrong. → [guides/miniapp-page-structure.md](guides/miniapp-page-structure.md)
108
+ 2. **Never rebuild a host-owned experience.** Payments go through the platform's payment component — no hand-built card pickers or card-number inputs. User details (name, TCKN, e-mail, phone, customer numbers) come from the host through `quick.container`, not from your own forms or services. → [guides/platform-payments.md](guides/platform-payments.md), [guides/host-functions.md](guides/host-functions.md)
109
+ 3. **Back and exit are different actions.** `quick.Quick.back()` moves within the MiniApp; `stopMiniApp` leaves it. Never substitute one for the other. → [guides/navigation-and-lifecycle.md](guides/navigation-and-lifecycle.md)
110
+ 4. **Secrets go in the project's constants**, never hard-coded into a page.
111
+ 5. **A `logHandler` in the pipeline file blocks the production build.** If you add one, say so. → [guides/analytics-and-logging.md](guides/analytics-and-logging.md)
112
+ 6. **The app has one container file** (`*.container`) declaring every host function its pages call, with a mock for each. Find it before adding a host call — the appbar's exit is one — and if the workspace has none, create it from the kit's template. Never create a second. → [../../.ai-kit/ui-kit/knowledge/container-configuration.md](../../.ai-kit/ui-kit/knowledge/container-configuration.md) for finding and creating it, [guides/host-functions.md](guides/host-functions.md) for which functions the SuperApp exposes
113
+
114
+ ### Corrections to the ui-kit manual
115
+
116
+ These are the only ui-kit rules a MiniApp changes; each replaces the rule it names.
117
+
118
+ - **Rule S4 is narrowed.** On a MiniApp page, `VAppBar` — and `VFooter` when used — are allowed and expected as top-level `pJson` siblings of the content `VContainer`, alongside `Messaging`.
119
+ - **Call `quick.container` through a cast: `(<any>quick.container).<funcName>()`.** [quick-api.json](../../.ai-kit/ui-kit/reference/quick-api.json) rightly marks `quick.Quick.host.trigger` deprecated in favour of `quick.container`, but it types `quick.container` as `{}`, so `buildQjson` rejects a bare `quick.container.<funcName>()`. `host.trigger` remains only on older pages and inside the payment component — leave those calls alone unless asked to migrate.
120
+ - **`quick.integrations` is missing from this workspace's API table.** Analytics still works: `quick.integrations.Dataroid.track(name, payload)`. A grep returning nothing is not an answer for it.
121
+ - **The platform payment component is not a registry `T`.** It will not appear in [component-index.json](../../.ai-kit/ui-kit/reference/component-index.json) or [component-contracts.json](../../.ai-kit/ui-kit/reference/component-contracts.json), and that absence does **not** mean it doesn't exist — it is an embedded page reached through a `QJsonPath`.
122
+
123
+ ### Where the detail is
124
+
125
+ | Read | For |
126
+ |---|---|
127
+ | [concepts.md](concepts.md) | what the host owns vs. what you own; what the project provides; how host calls behave in development |
128
+ | [guides/miniapp-page-structure.md](guides/miniapp-page-structure.md) | the page shell and the appbar |
129
+ | [guides/navigation-and-lifecycle.md](guides/navigation-and-lifecycle.md) | moving within the MiniApp vs. leaving it |
130
+ | [../../.ai-kit/ui-kit/knowledge/container-configuration.md](../../.ai-kit/ui-kit/knowledge/container-configuration.md) | the container file itself — finding or creating it, the entry shape, mocks, the `(<any>…)` cast, and the deprecated `host.trigger` |
131
+ | [guides/host-functions.md](guides/host-functions.md) | which functions the SuperApp exposes, what each returns, and the consent call patterns |
132
+ | [guides/platform-payments.md](guides/platform-payments.md) | wiring the platform payment component |
133
+ | [guides/analytics-and-logging.md](guides/analytics-and-logging.md) | Dataroid events, log forwarding, secrets |
134
+ | [reference/host-functions.json](reference/host-functions.json) | each host function's purpose and rules — grep by `funcName` |
135
+ | [reference/host-functions.container](reference/host-functions.container) | the template for the app's container file — every host function with its default mock |
136
+ | [reference/platform-components.json](reference/platform-components.json) | the payment component's props, methods and callbacks |
137
+ | [reference/host-app-image.json](reference/host-app-image.json) | the fixed host-app image `VImg` that goes inside the appbar's exit button |
138
+ | [examples/](examples/) | complete MiniApp pages to copy structure from |
139
+
140
+ **When a detail you need is not in these files, ask.** Do not infer host behaviour from how a standalone mobile or browser app would do it.
141
+
142
+ ## This workspace: the studio CLI loop
143
+
144
+ These pages were pulled from Studio with the studio CLI and will be synced back. On top of the steps above:
145
+
146
+ - **Validate — always, before finishing.** `studio buildQjson <file-or-folder>` runs the official Quick compiler plus the structural and `S`-style checks. It **never edits the file**: read the errors, apply every fix yourself, re-run until clean. Details: [`../cli-kit/knowledge/buildqjson.md`](../cli-kit/knowledge/buildqjson.md).
147
+ - **Sync.** Once validation is clean and `.studio/server.json` exists (the CLI bridge is running), run `studio push` yourself — the page lands in the user's open Studio session as unsaved work. Round-trip rules, frontmatter, `<<qjson:path>>` translation, `convertToBlock`: [`../cli-kit/knowledge/sync.md`](../cli-kit/knowledge/sync.md).
148
+ - **Render-check.** Compiling clean does not prove the page runs clean. With the `playwright` MCP available, open `http://127.0.0.1:<port>/render` (port from `.studio/server.json`), fix what the render and console show, then `browser_close`: [`../cli-kit/knowledge/render-check.md`](../cli-kit/knowledge/render-check.md).
149
+ - **Locked files.** A pulled page may be readonly (`0444`) — checked out by someone else in Studio. Run `studio startWorking <file>`; never `chmod`.
150
+ - **Frontmatter.** Files may carry a `---studio-metadata---` header (model id, flags like `blockComponent`). Never edit or strip it, and never rename files — Studio matches them back by name/id. A new file gets its frontmatter written back by `studio push`.
151
+ - **Report** the validation, push and render-check results. If the bridge or the browser wasn't available, say so — never skip silently.
152
+
153
+ Bridge setup and troubleshooting: [`../cli-kit/knowledge/cli-bridge.md`](../cli-kit/knowledge/cli-bridge.md).
@@ -0,0 +1,164 @@
1
+ # 13 · Application — what a Studio app is
2
+
3
+ ## What an Application is
4
+
5
+ An **Application** (app) is the whole project a user builds in Studio. Everything you work on — UI pages, styles, services, entities, workflows, themes — lives **inside one application**.
6
+
7
+ - An app belongs to an **organization** (and, within it, an organization group).
8
+ - The app groups all of its content into **modules** (folders, some of them shareable) that hold the individual **files**: UI pages, style files, services, and so on.
9
+ - Each app has its own name, description, logo, color, and a set of tags.
10
+
11
+ ```
12
+ organization
13
+ └─ application
14
+ ├─ App Settings ← one settings screen per app (see appSettings/)
15
+ ├─ setting files ← reusable config files selected in App Settings (see appSettings/)
16
+ ├─ modules (folders)
17
+ │ └─ files …
18
+ └─ files: UI pages, styles, services, entities, themes, …
19
+ ```
20
+
21
+ ## Creating an application
22
+
23
+ Apps are created from the **application list** (the screen you see after choosing an organization, *before* entering the editor), not from inside the editor.
24
+
25
+ 1. On the application list, choose to add a new app.
26
+ 2. Fill in **Application Name** (required, 3–25 characters) and an optional **Description** (up to 100 characters), then confirm with **CREATE**.
27
+ 3. Studio opens the new app's editor. A fresh app is essentially empty — no pages yet, and an empty App Settings.
28
+
29
+ Other ways an app can come into existence:
30
+ - **From a template** — start from a pre-built app instead of a blank one.
31
+ - **By uploading an existing app file** — bring an app that was exported/downloaded elsewhere into this organization (Studio checks for ID conflicts on import).
32
+
33
+ > **Copy App is intentionally not covered here yet — to be added later.** (Duplicating an existing app, and the "Download Application File" → upload round-trip used to move an app between organizations.)
34
+
35
+ ## The editor layout
36
+
37
+ Once inside an app, the screen has three regions: the **top bar**, the **left explorer**, and the **work area** (where an opened file's editor appears).
38
+
39
+ ## Top bar (left → right)
40
+
41
+ | Element | What it does |
42
+ |---|---|
43
+ | **Plateau logo** | Returns to the application list / organization home. Warns first if you have unsaved changes. |
44
+ | **App logo + name** | Shows the current app. Clicking the logo lets you change the app image. |
45
+ | **Open tabs** | Each file you open becomes a tab here; a dot marks unsaved changes. |
46
+ | **Connect CLI / Disconnect CLI** | Connects the editor to a local folder through the Studio CLI so you can pull/push files. A status dot shows the connection state (searching, selecting a folder, pulling, connected). See [cli-bridge.md](../../cli-kit/knowledge/cli-bridge.md). |
47
+ | **AI assistant** | Opens the in-editor AI chat helper. |
48
+ | **Preview** | Runs the app **temporarily** without deploying it — including on a real device by scanning a QR code, plus custom-preview options. Use it to try the app while building. |
49
+ | **Export** | Gets the app's content **out of Studio**. Two modes: *Export Compiled App Package* (download a ready-to-run zip) and *Export Uncompiled App Models* (sync the source files to a local folder). "See Progress Details" shows past exports. |
50
+ | **Publish** | **Deploys** the app to a live host so real users can reach it. Pick **Web** and/or **Mobile**, then publish. (More below.) |
51
+ | **Account menu** | User and organization info, Documentation, Academy, (Back Office for admins), Logout. |
52
+
53
+ **Preview vs Export vs Publish** are three different things: *Preview* runs it now and throws it away; *Export* hands you the files; *Publish* puts it live.
54
+
55
+ ## Export
56
+
57
+ Export gets the app's content **out of Studio** (as opposed to Publish, which deploys it). It requires a **Premium** account. What you see depends on the app type: a **UI app** gets the two dropdown modes below (compiled / uncompiled); a **workflow / backend** app gets the module-picker export instead.
58
+
59
+ **1. Export Compiled App Package**
60
+ - Downloads a **compiled, ready-to-run** build of the app as a zip to your device.
61
+ - Opens a **Choose Modules to Download** picker so you can pick which modules/items to include. Each item is exported at its **published version** (or *latest* when it has none), so the package is built from versioned content.
62
+ - Before **DOWNLOAD** enables, Studio applies checks like the workflow export below: at least one item selected and **version-ready**, all dependencies present, and all setting files assigned in App Settings.
63
+ - It warns when a newer version of an included module exists (the export uses the updated version) or when you're about to export an **unreleased** version.
64
+ - Use it to hand someone a runnable build or to self-host the compiled app.
65
+
66
+ **2. Export Uncompiled App Models**
67
+ - Writes the app's **uncompiled source files** to a local folder — the raw pages, styles, services, and setting files, plus a generated app-settings file and a small export-info file naming the organization and app.
68
+ - This is the source format the Studio CLI works with. The modern way to get it locally is the **Connect CLI** bridge and a pull (see [cli-bridge.md](../../cli-kit/knowledge/cli-bridge.md)); the classic way is running the sync command shown in the dropdown from your local app folder.
69
+ - Before it runs, Studio checks that required **tag values** are filled and that App Settings has no missing selections, and warns you if any file references are broken.
70
+
71
+ **3. Workflow / Backend Export**
72
+ - For workflow / backend apps, Export opens a **Choose Modules to Download** picker instead of the two modes above. You select exactly which items (modules, pages, workflows, services, …) to include, and Studio produces the export as a background **job**.
73
+ - Studio validates the selection before the **DOWNLOAD** button enables:
74
+ - At least one item is selected.
75
+ - Selected items are **version-ready** (ready to publish); at least one must be.
76
+ - The **root** UI page is included.
77
+ - If a workflow is included, its required execution items are also selected (e.g. *getUser*, *notify*, *TaskPreview*, *IPaaS_Endpoint*).
78
+ - All **dependencies** of the selected items are present in the selection.
79
+ - All **setting files** are assigned in App Settings — otherwise it links you to the Settings page to fix it first.
80
+ - It warns when a newer version of an included module exists (the export uses the updated version), or when you're about to export an **unreleased** version.
81
+ - Because it runs as a job, the finished export shows up under **See Progress Details**.
82
+
83
+ **See Progress Details** lists past and running exports.
84
+
85
+ > Compiled vs uncompiled: the **compiled package** runs as-is; the **uncompiled models** are the editable source you sync locally — e.g. to work on `.qjson` files with the CLI and this kit.
86
+
87
+ ## Publish
88
+
89
+ The Publish menu deploys the current app:
90
+
91
+ - **Web** — publishes the web build. Once published, the menu shows *when* and *by whom* it was last published and a link to the live web app.
92
+ - **Mobile** — publishes to **StudioApps** (Plateau's mobile host). The menu shows a QR code to open the app on a phone, a copyable link, and App Store / Google Play links for the StudioApps container app.
93
+ - After choosing platforms, **Publish Application** starts the deploy; **See Progress Details** tracks running/past publishes.
94
+ - Publishing requires the app to have content and the organization to have deploy permission. An empty app cannot be published.
95
+ - Depending on the organization, the Publish menu may instead offer **Create Package** — bundling a specific **App Version** (see below) for delivery rather than a direct deploy.
96
+
97
+ ## App Versions
98
+
99
+ **App Versions** are named **snapshots** of the app's files, kept for versioning and rollback — independent of publishing.
100
+
101
+ - Managed from the **App Versions** tab inside App Settings (see [appSettings](appSettings/appSettings.md)), and also reachable when creating a delivery package.
102
+ - You can create a new version, list existing versions, delete one, or build a package from a chosen version.
103
+ - A version captures the set of files as they were at that moment; it does **not** change the app's live deployment by itself.
104
+
105
+ > Publish and App Versions are separate: *Publish* makes the app reachable by users; *App Versions* preserves a copy of the app's files at a point in time.
106
+
107
+ ## Explorer
108
+
109
+ The left panel lists everything in the app as a tree and is where you create, open, and organize files.
110
+
111
+ **App actions** (the "**⋯**" menu next to the app name):
112
+
113
+ | Action | Meaning |
114
+ |---|---|
115
+ | Edit | Change the app's name/description. |
116
+ | Download Application File | Save the whole app to a file (used to move/copy an app — *Copy App, covered later*). |
117
+ | Delete | Remove the app. |
118
+ | Change App Image | Set the app logo. |
119
+ | Info | App details (counts, dates). |
120
+ | Bulk Save and Version | Save all your checked-out work at once and create a version. |
121
+ | Bulk Stop Working | Release all your checkouts at once. |
122
+
123
+ **Toolbar icons** next to it: **Reload Cache** (refresh the tree), **Expand/Collapse All**, and collapse the panel.
124
+
125
+ **Search area** — two tabs:
126
+ - **Model Search** — search files by name or ID, with **filter chips** (All / UI / Asset / and more, scrollable) to narrow the tree to certain file types.
127
+ - **Find in Models** — search (and replace) *inside* file contents across the app, with case / whole-word / regex options.
128
+
129
+ **The tree** — modules and folders containing files. Each file shows a type icon; a **checkmark** next to a file means **you have it checked out** (you're the one working on it, so it's editable). Right-click / row actions let you open, check out, rename, move, and delete items.
130
+
131
+ **"Try New A.I. Feature"** card — turns a design into a UI page via AI.
132
+
133
+ **+ Add New** — the create menu (next section).
134
+
135
+ **⚙ gear** (bottom of the panel) — opens **App Settings** ([appSettings](appSettings/appSettings.md)). This is the main entry point to the app-wide configuration.
136
+
137
+ ## The "Add New" menu
138
+
139
+ **+ Add New** opens a grouped menu of everything you can create in the app. Which groups and items appear depends on the app's capabilities (a UI-only app won't show workflow/backend items).
140
+
141
+ | Group | What you can create |
142
+ |---|---|
143
+ | **User Interface** | UI Page with AI, UI Page, Global Localization, Theme Group, CSS, Style File, Alert Component, Loading Component, Component List |
144
+ | **Business Logic** | Workflow, Decision Table, Job Scheduler, SLA Definition |
145
+ | **Data** | Data Type, Data Set, Constant |
146
+ | **Services & Integration** | Backend Function, Workflow Function, REST Service, SOAP Service (from WSDL), Endpoint |
147
+ | **Security & Access** | Persona, Role, Swimlane, Action, Privilege, Certificate |
148
+ | **Application Configuration** | Settings File, Container Configuration, Pipeline, Local Proxy File, Container Services File, Container Services Intellisense |
149
+ | **Project Organization** | Module, Folder |
150
+ | **Import & Migration** | Import Module, Upload From Local |
151
+
152
+ Note that several **User Interface** and **Application Configuration** items (Global Localization, Theme Group, Style File, Alert Component, Loading Component, Component List, Settings File, Pipeline, Local Proxy File, Container Services…) create **setting files** — the reusable config files an app points to from App Settings. See [appSettings](appSettings/appSettings.md).
153
+
154
+ ## App type: UI vs workflow
155
+
156
+ An app is either a normal **UI app** or a **workflow app**. The difference mainly affects which page is treated as the app's **entry point** (start page), and which of the Add New groups above are available. Day-to-day page authoring is the same in both.
157
+
158
+ ## What to take from this
159
+
160
+ - A qjson workspace is **one app**; its App Settings and setting files sit next to the pages.
161
+ - **Preview** (try it now), **Export** (get the files), and **Publish** (deploy live) are three distinct actions.
162
+ - **App Versions** are point-in-time snapshots, separate from publishing.
163
+ - The **⚙ gear** in the explorer opens **App Settings**; **+ Add New** creates files — including the setting files App Settings points to.
164
+ - To understand *how the app is configured* and the reusable *setting files* it points to, read [appSettings](appSettings/appSettings.md).
@@ -0,0 +1,91 @@
1
+ # Alert Component · the app's alert UI
2
+
3
+ One file per app that renders **every** `quick.Quick.alert(...)` call. Build it once and every alert in the app — confirmations, network errors, validation errors — gets your design instead of the framework default.
4
+
5
+ Selected in **App Settings → General → Alert Component**. Until it is selected there it does nothing → [appSettings.md](appSettings.md).
6
+
7
+ ## With and without it
8
+
9
+ | | |
10
+ |---|---|
11
+ | **Not selected** | The engine renders a built-in `VAlert`: dismissible, coloured border, and an icon chosen from `category` (`Info` → `mdi-information`, `Success` → `mdi-check-circle`, `Warning` → `mdi-alert-circle`, `Error` → `mdi-close-circle`). |
12
+ | **Selected** | Your qjson is rendered instead, as a child page injected at the top of the app shell. The built-in alert is not used at all. |
13
+
14
+ ## Shape
15
+
16
+ A normal `.qjson` file: a `Messaging` root plus whatever UI you want (typically a Dialog or a card). It is rendered as a **child page**, so it talks to the caller through `quick.parent`.
17
+
18
+ ## What it receives — `quick.parent.props`
19
+
20
+ | Prop | Type | Meaning |
21
+ |---|---|---|
22
+ | `title` | string | Header text. |
23
+ | `text` | string | Message body. |
24
+ | `category` | `Warning` \| `Info` \| `Success` \| `Error` | Severity. |
25
+ | `actionButtons` | array | `{ name?, type, clickEventName? }`; `type` is `Confirm` or `Cancel`. |
26
+ | `error` | object | `{ errorMessage?, errorCode?, errorSource? }`; `errorSource` is `Page`, `Network` or `Validation`. |
27
+ | `additionals` | object | `{ props?, events? }` — free-form extras from the caller. |
28
+
29
+ Read them once the page is up, normally in `PostRender`:
30
+
31
+ ```typescript
32
+ if (quick.parent.props) {
33
+ components.alertHeader.type = quick.parent.props.category;
34
+ components.alertHeaderText.text = quick.parent.props.title;
35
+ components.alertText.text = quick.parent.props.text;
36
+ }
37
+ ```
38
+
39
+ `error` is what tells the three cases apart — branch on `quick.parent.props.error?.errorSource` to lay out validation errors, network errors and plain confirmations differently.
40
+
41
+ ## What it calls back — `quick.parent.events`
42
+
43
+ ```typescript
44
+ quick.parent.events.onConfirm();
45
+ quick.parent.events.onCancel();
46
+ ```
47
+
48
+ The engine wires these from `actionButtons` **by `type`**: the `Confirm` button's `clickEventName` becomes `onConfirm`, the `Cancel` button's becomes `onCancel`. Calling one fires that custom event **on the component that raised the alert**.
49
+
50
+ Consequences worth knowing:
51
+
52
+ - If the action button carried no `clickEventName`, calling the matching parent event does nothing. That is normal for an OK-only alert, not a bug.
53
+ - These callbacks **do not dismiss the alert**. Closing is your job — hide your dialog or call `quick.Quick.closeAlert()`.
54
+
55
+ ## Closing
56
+
57
+ - `quick.Quick.closeAlert()` — from anywhere; tears the alert page down.
58
+ - Only **one** alert exists at a time: raising a new one removes the current one first.
59
+ - **`additionals.props.timeout` does not auto-close a custom alert.** The engine's timeout auto-close only runs on the built-in fallback alert. With an Alert Component selected you receive `timeout` inside `quick.parent.props.additionals` and must honour it yourself — in `PostRender`:
60
+
61
+ ```typescript
62
+ let timeout = quick.parent.props.additionals?.props?.timeout;
63
+ if (timeout) {
64
+ setTimeout(() => { quick.Quick.closeAlert(); }, timeout);
65
+ }
66
+ ```
67
+
68
+ ## How callers raise alerts
69
+
70
+ ```typescript
71
+ quick.Quick.alert({
72
+ title: 'Onay',
73
+ text: 'Kayıt silinecektir, onaylıyor musunuz?',
74
+ category: 'Warning',
75
+ actionButtons: [
76
+ { name: 'Onayla', type: 'Confirm', clickEventName: 'onDeleteConfirmed' },
77
+ { name: 'İptal', type: 'Cancel', clickEventName: 'onDeleteCancelled' }
78
+ ]
79
+ });
80
+ ```
81
+
82
+ `onDeleteConfirmed` / `onDeleteCancelled` are custom events (`"C": true`) on the calling component — that is where the work goes, not in the alert file.
83
+
84
+ ## Rules that prevent the common failures
85
+
86
+ - Render nothing until `quick.parent.props` exists; reading it too early gives you an empty alert.
87
+ - Handle the `error` shape as well as `title`/`text` — network and validation alerts arrive with `error` set and often no `text`.
88
+ - Don't expect `onConfirm`/`onCancel` to close the dialog; close it yourself.
89
+ - Don't rely on `timeout` auto-closing — implement it from `additionals` when a custom alert is selected.
90
+ - Keep business logic in the caller's `clickEventName` events; the alert file is presentation.
91
+ - Creating the file is not enough — it must be selected in App Settings → General → Alert Component.
@@ -0,0 +1,204 @@
1
+ # App Settings · overview
2
+
3
+ Every app has **exactly one** App Settings — its app-wide configuration. It decides which theme, localization, alert, loading and pipeline files the running app uses. You will rarely edit it, but you must understand it: it determines whether the pages you author actually behave the way you expect.
4
+
5
+ ## Why you care
6
+
7
+ - Localization keys in your pages resolve only if a **Global Localization** file is selected → [global-localization.md](global-localization.md).
8
+ - Theme tokens and app-wide CSS come from the selected **Theme** and **Style File** → [theme.md](theme.md), [style-file.md](style-file.md).
9
+ - Framework alerts render through the selected **Alert Component** → [alert-component.md](alert-component.md).
10
+ - Every service call passes through the selected **Pipeline** → [pipeline.md](pipeline.md).
11
+ - If a required selection is missing, **Export and Publish are blocked** — the app cannot ship no matter how correct your pages are.
12
+
13
+ ## It points at files, it does not contain them
14
+
15
+ Most of App Settings is a **dropdown that selects a file**:
16
+
17
+ 1. The file is created — in Studio via **+ Add New** in the Explorer, or from the CLI (below).
18
+ 2. It is **selected** in the matching App Settings dropdown.
19
+ 3. Only then does the app use it.
20
+
21
+ Creating the file is **not** enough. A setting file sitting in the workspace but not selected does nothing.
22
+
23
+ The rest of App Settings is direct configuration (site title, Shadow DOM, oAuth, log levels, tags) stored in App Settings itself.
24
+
25
+ ## You can edit it yourself
26
+
27
+ App Settings is pulled into the workspace like any other model, and it is pushable. So when you create a setting file, **wire it up yourself** — don't hand that back to the user as a manual step.
28
+
29
+ | | |
30
+ |---|---|
31
+ | **Do** | Read it to see which setting files are active, and author your pages against them. |
32
+ | **Do** | Edit it to select a file you just created, then push it with the rest of your work. |
33
+ | **Don't** | Create a second App Settings. It is a singleton — one per app. |
34
+ | **Don't** | Hand-write the keys Studio generates on export → [settings-file.md](settings-file.md). |
35
+
36
+ In Studio it opens from the **⚙ gear** at the bottom of the Explorer panel; the user needs that only to review your change.
37
+
38
+ ## Creating a new setting file from the CLI
39
+
40
+ A setting file is not just a `.qjson` with the right content — Studio also has to mark it `usageType: appSettings` with a `key` (`pipeline`, `alert`, …) so it shows up in the right App Settings dropdown at all. A plain file you create and push yourself does **not** get these — it lands as an ordinary page, invisible to App Settings.
41
+
42
+ So creation goes through Studio's own setting-creation flow, triggered by frontmatter:
43
+
44
+ 1. Create the file **empty**, with frontmatter declaring `id: new` and `settingKey: <key>`:
45
+
46
+ ```
47
+ ---studio-metadata DO NOT EDIT---
48
+ id: new
49
+ settingKey: pipeline
50
+ ---studio-metadata DO NOT EDIT---
51
+ ```
52
+
53
+ `settingKey` is the value from the **Setting file** column below. Match the file's extension to what that setting expects (qjson/yaml/ts/css/…) — the per-file doc says which; if you get it wrong, push reports the exact extension required.
54
+
55
+ 2. **Push.** Studio creates the file through its own template — proper `key`, `usageType`, and starter content — and the CLI writes the real `id` plus that template body back into the file, replacing what you had.
56
+
57
+ 3. **Pull is not required** — the write-back happens automatically as part of the same push. Open the file, edit the template into what you need, and push again normally from then on.
58
+
59
+ If the `settingKey` is unknown or unavailable for this organization, or the extension doesn't match, push fails with an error naming the problem — nothing is created.
60
+
61
+ | Setting file | `settingKey` | Doc |
62
+ |---|---|---|
63
+ | Pipeline | `pipeline` | [pipeline.md](pipeline.md) |
64
+ | Alert Component | `alert` | [alert-component.md](alert-component.md) |
65
+ | Loading Component | `loading` | [loading-component.md](loading-component.md) |
66
+ | Global Localization | `globalLocalization` | [global-localization.md](global-localization.md) |
67
+ | Theme | `theme` | [theme.md](theme.md) |
68
+ | Style File | `style` | [style-file.md](style-file.md) |
69
+ | Settings File | `settings` | [settings-file.md](settings-file.md) |
70
+ | Local Proxy File | `localProxy` | [local-proxy-file.md](local-proxy-file.md) |
71
+ | Component List | `componentList` | [component-list.md](component-list.md) |
72
+ | Container Services File | `containerServices` | [container-services-file.md](container-services-file.md) |
73
+ | Container Services IntelliSense | `containerServIntelli` | [container-services-intellisense.md](container-services-intellisense.md) |
74
+
75
+ This `id: new` + `settingKey` frontmatter is specific to setting files. An ordinary new page instead carries **no** frontmatter at all and still becomes a new model on push — see [sync.md](../../../cli-kit/knowledge/sync.md).
76
+
77
+ ## Editing App Settings itself from the CLI
78
+
79
+ The local file is named after the model with an `.appSettings` extension (`App Settings.appSettings`) and carries the usual frontmatter `id`.
80
+
81
+ Like any pulled model it arrives **readonly** unless it is checked out. If you cannot write to it, check it out first — don't `chmod` it → [cli-bridge.md](../../../cli-kit/knowledge/cli-bridge.md):
82
+
83
+ ```bash
84
+ studio startWorking "App Settings.appSettings"
85
+ ```
86
+
87
+ Its body is JSON:
88
+
89
+ ```json
90
+ {
91
+ "general": {
92
+ "siteTitle": "Saha Servis",
93
+ "pipeline": "<<pipeline:settings/appPipeline>>",
94
+ "alert": "<<alert:settings/appAlert>>",
95
+ "loading": "<<loading:settings/appLoading>>",
96
+ "useShadowDOM": false
97
+ },
98
+ "globalLocalization": "<<globalLocalization:settings/common, settings/errors>>",
99
+ "themeSettings": { "themeModelId": "…", "defaultTheme": "corporate" },
100
+ "logging": {}, "tagValues": {}, "oAuthSettings": {}
101
+ }
102
+ ```
103
+
104
+ **Selections are reference tokens, and locally they hold file *paths*, not ids.** The bridge rewrites `<<type:id>>` → `<<type:diskPath>>` on pull and back on push, so you wire a setting by writing the target file's workspace path — no extension, forward slashes, prefixed with its module name when it lives in one.
105
+
106
+ | Where | Key | Value |
107
+ |---|---|---|
108
+ | `general` | `pipeline`, `alert`, `loading`, `settings`, `localProxy`, `componentList`, `containerServices`, `containerServIntelli` | `<<key:path/to/file>>` |
109
+ | `general` | `webLoading`, `mobileLoading` | `<<lottie:path/to/file>>` |
110
+ | `general` | `siteTitle`, `useShadowDOM`, `renderCCOnEdit` | plain values |
111
+ | root | `globalLocalization` | `<<globalLocalization:pathA, pathB>>` — **ordered, first wins** → [global-localization.md](global-localization.md) |
112
+ | root | `themeSettings.themeModelId` | see below |
113
+
114
+ > **`themeModelId` is the exception.** It is stored as a bare model id, not a `<<…>>` token, so the bridge does **not** convert it to a path — it stays an id locally. To select a theme, copy the target theme file's `id` from its frontmatter.
115
+
116
+ A file only has a usable id/path once it has been **created through the flow above and pushed**. So the order is: create the setting file (`id: new` + `settingKey`) and push it first, then reference its now-real path in App Settings and push that.
117
+
118
+ ## Tabs
119
+
120
+ | Group | Tab | What it holds |
121
+ |---|---|---|
122
+ | **Settings** | **General** | Site title, app image, and the selection of most setting files. |
123
+ | | **App Versions** | Named snapshots of the app's files. Not part of the app's configuration. |
124
+ | | **Localization** | Selects the **Global Localization** file(s) that give the app its languages. |
125
+ | **User Interface** | **Themes** | Selects the app's **Theme**; older apps are migrated here. |
126
+ | | **Loading** | Selects the **Loading Component** and the loading animations for web and mobile. |
127
+ | **Connections** | **Tags** | Values for the app's tags. Must be filled before export. |
128
+ | | **oAuth** | Identity-provider / login configuration. |
129
+ | | **Integrations** | Third-party integrations — activate one for its token, or define custom ones. |
130
+ | **Other** | **Log** | Log level, log type and bulk size. |
131
+
132
+ A tab carries an **alert icon** when something in it is unassigned or points at a file that no longer exists.
133
+
134
+ ## Which tabs you actually see
135
+
136
+ The tab list is not identical in every app:
137
+
138
+ | What | When it is hidden |
139
+ |---|---|
140
+ | **App Versions** tab | Hidden unless the *App Version* feature is enabled for the organization (or its organization group). This is the **only tab** that is conditionally hidden — every other tab is always present. |
141
+
142
+ Beyond that, the tabs are always there but their **content** depends on what the app can use:
143
+
144
+ - A file dropdown lists only setting files **of its own kind that exist in this app**. None created → the dropdown is empty (just *Select*).
145
+ - Which kinds can be created at all depends on the organization's enabled capabilities — the same flags that drive **+ Add New**. A UI-only app has no workflow/backend files to select; without the container capability there are no Container Configuration files.
146
+ - An empty dropdown therefore means "none of that kind exists here" or "that capability is off" — not that something is broken.
147
+
148
+ ## The General tab
149
+
150
+ | Field | Kind | Meaning |
151
+ |---|---|---|
152
+ | **Application name** | read-only | Edit with the pencil. |
153
+ | **Site title** | text | Title shown in the browser tab. |
154
+ | **Container Services** | file | → [container-services-file.md](container-services-file.md) |
155
+ | **Container Services Intellisense** | file | → [container-services-intellisense.md](container-services-intellisense.md) |
156
+ | **Component List** | file | → [component-list.md](component-list.md) |
157
+ | **Show Block Components On Edit Mode** | Yes / No | Renders block components while editing. Editor-only; never reaches the running app. |
158
+ | **Settings File** | file | → [settings-file.md](settings-file.md) |
159
+ | **Alert Component** | file | → [alert-component.md](alert-component.md) |
160
+ | **Local Proxy File** | file | → [local-proxy-file.md](local-proxy-file.md) |
161
+ | **Pipeline** | file | → [pipeline.md](pipeline.md) |
162
+ | **Use Shadow DOM** | Yes / No | Renders the app inside a Shadow DOM. |
163
+ | **App Image** | image | The app logo. |
164
+
165
+ ## The setting files
166
+
167
+ | Setting file | Selected in | Doc |
168
+ |---|---|---|
169
+ | Settings File | General | [settings-file.md](settings-file.md) |
170
+ | Alert Component | General | [alert-component.md](alert-component.md) |
171
+ | Local Proxy File | General | [local-proxy-file.md](local-proxy-file.md) |
172
+ | Pipeline | General | [pipeline.md](pipeline.md) |
173
+ | Container Services File | General | [container-services-file.md](container-services-file.md) |
174
+ | Container Services IntelliSense | General | [container-services-intellisense.md](container-services-intellisense.md) |
175
+ | Component List | General | [component-list.md](component-list.md) |
176
+ | Loading Component | Loading | [loading-component.md](loading-component.md) |
177
+ | Global Localization | Localization | [global-localization.md](global-localization.md) |
178
+ | Theme | Themes | [theme.md](theme.md) |
179
+ | Style File | *(applied automatically)* | [style-file.md](style-file.md) |
180
+
181
+ ## When a setting is broken
182
+
183
+ A setting counts as **invalid** when it is empty, or points at a file that was deleted or is no longer a setting file of that kind.
184
+
185
+ A kind is only **required** once the app contains at least one setting file of that kind. Creating the first Pipeline file is what makes an unassigned *Pipeline* a problem; an app that never had one is not nagged about it.
186
+
187
+ Consequences — none of them cosmetic:
188
+
189
+ - The tab shows an alert icon and the dropdown is highlighted.
190
+ - Opening the app can raise a **Settings Selection Required** dialog.
191
+ - **Export** and **Publish** refuse to run until every required setting file is assigned.
192
+ - Apps on an old theme setup get **Theme Migration Required** on the Themes tab.
193
+
194
+ Most of this you can fix yourself: point the setting at a valid file, or remove the key to clear it, then push. The exception is **theme migration**, which only the Migrate button in Studio performs — report that one and let the user run it.
195
+
196
+ ## Rules that prevent the common failures
197
+
198
+ - Never author a second App Settings, and never assume one is in a state you did not read.
199
+ - A new setting file needs `id: new` + `settingKey` frontmatter and a push — writing a plain file yourself creates an ordinary page, not a setting file.
200
+ - A setting file has **no effect until it is selected here** — creating one and stopping is an unfinished job, not a handoff.
201
+ - Push a new setting file **before** referencing it, so its path resolves to a real id.
202
+ - Reference files by workspace **path** inside `<<…>>` tokens; `themeSettings.themeModelId` is the lone id-valued exception.
203
+ - Don't diagnose an empty dropdown as breakage; check whether that kind of file exists in the app at all.
204
+ - Before reporting the app ready to export, check that nothing is left unassigned.