create-disposabl-app 0.1.0 → 0.1.2

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 (390) hide show
  1. package/dist/index.js +21 -22
  2. package/dist/templates/default/apps/desktop/.oxfmtrc.json +5 -0
  3. package/dist/templates/default/apps/desktop/.oxlintrc.json +6 -0
  4. package/dist/templates/default/apps/desktop/README.md +58 -0
  5. package/dist/templates/default/apps/desktop/forge.config.mts +90 -0
  6. package/dist/templates/default/apps/desktop/index.html +12 -0
  7. package/dist/templates/default/apps/desktop/package.json +55 -1
  8. package/dist/templates/default/apps/desktop/src/declarations.d.ts +2 -0
  9. package/dist/templates/default/apps/desktop/src/index.css +8 -0
  10. package/dist/templates/default/apps/desktop/src/main.ts +58 -0
  11. package/dist/templates/default/apps/desktop/src/preload.ts +3 -0
  12. package/dist/templates/default/apps/desktop/src/renderer.ts +19 -0
  13. package/dist/templates/default/apps/desktop/tsconfig.json +14 -0
  14. package/dist/templates/default/apps/desktop/vite.main.config.mts +4 -0
  15. package/dist/templates/default/apps/desktop/vite.preload.config.mts +4 -0
  16. package/dist/templates/default/apps/desktop/vite.renderer.config.mts +4 -0
  17. package/dist/templates/default/apps/mobile/.agents/skills/agent-device/SKILL.md +22 -0
  18. package/dist/templates/default/apps/mobile/.agents/skills/android-emulator/SKILL.md +32 -0
  19. package/dist/templates/default/apps/mobile/.agents/skills/dogfood/SKILL.md +27 -0
  20. package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/SKILL.md +176 -0
  21. package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/agents/openai.yaml +4 -0
  22. package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/references/app-store-metadata.md +497 -0
  23. package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/references/ios-app-store.md +376 -0
  24. package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/references/native-ios.md +167 -0
  25. package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/references/play-store.md +244 -0
  26. package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/references/testflight.md +62 -0
  27. package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/references/workflows.md +120 -0
  28. package/dist/templates/default/apps/mobile/.agents/skills/eas-hosting/SKILL.md +431 -0
  29. package/dist/templates/default/apps/mobile/.agents/skills/eas-hosting/agents/openai.yaml +4 -0
  30. package/dist/templates/default/apps/mobile/.agents/skills/eas-observe/SKILL.md +46 -0
  31. package/dist/templates/default/apps/mobile/.agents/skills/eas-observe/agents/openai.yaml +4 -0
  32. package/dist/templates/default/apps/mobile/.agents/skills/eas-observe/references/metrics.md +98 -0
  33. package/dist/templates/default/apps/mobile/.agents/skills/eas-observe/references/queries.md +444 -0
  34. package/dist/templates/default/apps/mobile/.agents/skills/eas-observe/references/setup.md +529 -0
  35. package/dist/templates/default/apps/mobile/.agents/skills/eas-observe/references/third-party.md +136 -0
  36. package/dist/templates/default/apps/mobile/.agents/skills/eas-simulator/SKILL.md +237 -0
  37. package/dist/templates/default/apps/mobile/.agents/skills/eas-simulator/agents/openai.yaml +4 -0
  38. package/dist/templates/default/apps/mobile/.agents/skills/eas-simulator/references/controllers.md +139 -0
  39. package/dist/templates/default/apps/mobile/.agents/skills/eas-simulator/references/logs-and-crashes.md +101 -0
  40. package/dist/templates/default/apps/mobile/.agents/skills/eas-simulator/references/run-your-app.md +256 -0
  41. package/dist/templates/default/apps/mobile/.agents/skills/eas-simulator/references/troubleshooting.md +56 -0
  42. package/dist/templates/default/apps/mobile/.agents/skills/eas-update/SKILL.md +146 -0
  43. package/dist/templates/default/apps/mobile/.agents/skills/eas-update/agents/openai.yaml +4 -0
  44. package/dist/templates/default/apps/mobile/.agents/skills/eas-update-insights/SKILL.md +238 -0
  45. package/dist/templates/default/apps/mobile/.agents/skills/eas-update-insights/agents/openai.yaml +4 -0
  46. package/dist/templates/default/apps/mobile/.agents/skills/eas-update-insights/references/channel-insights-schema.md +47 -0
  47. package/dist/templates/default/apps/mobile/.agents/skills/eas-update-insights/references/update-insights-schema.md +69 -0
  48. package/dist/templates/default/apps/mobile/.agents/skills/eas-workflows/SKILL.md +99 -0
  49. package/dist/templates/default/apps/mobile/.agents/skills/eas-workflows/agents/openai.yaml +4 -0
  50. package/dist/templates/default/apps/mobile/.agents/skills/eas-workflows/scripts/fetch.js +109 -0
  51. package/dist/templates/default/apps/mobile/.agents/skills/eas-workflows/scripts/package.json +6 -0
  52. package/dist/templates/default/apps/mobile/.agents/skills/expo-animation/LICENSE +21 -0
  53. package/dist/templates/default/apps/mobile/.agents/skills/expo-animation/RECIPES.md +385 -0
  54. package/dist/templates/default/apps/mobile/.agents/skills/expo-animation/SKILL.md +274 -0
  55. package/dist/templates/default/apps/mobile/.agents/skills/expo-animation/agents/openai.yaml +4 -0
  56. package/dist/templates/default/apps/mobile/.agents/skills/expo-app-clip/SKILL.md +290 -0
  57. package/dist/templates/default/apps/mobile/.agents/skills/expo-app-clip/agents/openai.yaml +4 -0
  58. package/dist/templates/default/apps/mobile/.agents/skills/expo-app-clip/references/native-module.md +96 -0
  59. package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/SKILL.md +69 -0
  60. package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/agents/openai.yaml +4 -0
  61. package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/references/brownfield-integrated.md +551 -0
  62. package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/references/brownfield-isolated.md +449 -0
  63. package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/references/comparison.md +63 -0
  64. package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/references/feature-integration.md +163 -0
  65. package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/references/troubleshooting.md +88 -0
  66. package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/references/version-compatibility.md +40 -0
  67. package/dist/templates/default/apps/mobile/.agents/skills/expo-data-fetching/SKILL.md +478 -0
  68. package/dist/templates/default/apps/mobile/.agents/skills/expo-data-fetching/agents/openai.yaml +4 -0
  69. package/dist/templates/default/apps/mobile/.agents/skills/expo-data-fetching/references/expo-router-loaders.md +341 -0
  70. package/dist/templates/default/apps/mobile/.agents/skills/expo-data-fetching/references/offline-and-cancellation.md +68 -0
  71. package/dist/templates/default/apps/mobile/.agents/skills/expo-design-system/SKILL.md +376 -0
  72. package/dist/templates/default/apps/mobile/.agents/skills/expo-design-system/agents/openai.yaml +4 -0
  73. package/dist/templates/default/apps/mobile/.agents/skills/expo-design-system/references/audit.md +190 -0
  74. package/dist/templates/default/apps/mobile/.agents/skills/expo-design-system/references/native-slop.md +74 -0
  75. package/dist/templates/default/apps/mobile/.agents/skills/expo-dev-client/SKILL.md +184 -0
  76. package/dist/templates/default/apps/mobile/.agents/skills/expo-dev-client/agents/openai.yaml +4 -0
  77. package/dist/templates/default/apps/mobile/.agents/skills/expo-dom/SKILL.md +425 -0
  78. package/dist/templates/default/apps/mobile/.agents/skills/expo-dom/agents/openai.yaml +4 -0
  79. package/dist/templates/default/apps/mobile/.agents/skills/expo-examples/SKILL.md +106 -0
  80. package/dist/templates/default/apps/mobile/.agents/skills/expo-examples/agents/openai.yaml +4 -0
  81. package/dist/templates/default/apps/mobile/.agents/skills/expo-examples/references/catalog.md +105 -0
  82. package/dist/templates/default/apps/mobile/.agents/skills/expo-migrate-module/SKILL.md +124 -0
  83. package/dist/templates/default/apps/mobile/.agents/skills/expo-migrate-module/agents/openai.yaml +4 -0
  84. package/dist/templates/default/apps/mobile/.agents/skills/expo-migrate-module/references/compatibility.md +130 -0
  85. package/dist/templates/default/apps/mobile/.agents/skills/expo-migrate-module/references/example.md +212 -0
  86. package/dist/templates/default/apps/mobile/.agents/skills/expo-migrate-module/references/migration-map.md +457 -0
  87. package/dist/templates/default/apps/mobile/.agents/skills/expo-module/SKILL.md +151 -0
  88. package/dist/templates/default/apps/mobile/.agents/skills/expo-module/agents/openai.yaml +4 -0
  89. package/dist/templates/default/apps/mobile/.agents/skills/expo-module/references/config-plugin.md +90 -0
  90. package/dist/templates/default/apps/mobile/.agents/skills/expo-module/references/create-expo-module.md +206 -0
  91. package/dist/templates/default/apps/mobile/.agents/skills/expo-module/references/lifecycle.md +127 -0
  92. package/dist/templates/default/apps/mobile/.agents/skills/expo-module/references/module-config.md +48 -0
  93. package/dist/templates/default/apps/mobile/.agents/skills/expo-module/references/native-module.md +286 -0
  94. package/dist/templates/default/apps/mobile/.agents/skills/expo-module/references/native-view.md +171 -0
  95. package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/SKILL.md +201 -0
  96. package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/agents/openai.yaml +4 -0
  97. package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/controls.md +231 -0
  98. package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/gradients.md +106 -0
  99. package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/icons.md +232 -0
  100. package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/media.md +193 -0
  101. package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/storage.md +121 -0
  102. package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/visual-effects.md +198 -0
  103. package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/webgpu-three.md +605 -0
  104. package/dist/templates/default/apps/mobile/.agents/skills/expo-overview/SKILL.md +120 -0
  105. package/dist/templates/default/apps/mobile/.agents/skills/expo-overview/agents/openai.yaml +4 -0
  106. package/dist/templates/default/apps/mobile/.agents/skills/expo-overview/references/launch-without-dev-menu.md +24 -0
  107. package/dist/templates/default/apps/mobile/.agents/skills/expo-project-structure/SKILL.md +114 -0
  108. package/dist/templates/default/apps/mobile/.agents/skills/expo-project-structure/agents/openai.yaml +4 -0
  109. package/dist/templates/default/apps/mobile/.agents/skills/expo-router/SKILL.md +240 -0
  110. package/dist/templates/default/apps/mobile/.agents/skills/expo-router/agents/openai.yaml +4 -0
  111. package/dist/templates/default/apps/mobile/.agents/skills/expo-router/references/form-sheet.md +253 -0
  112. package/dist/templates/default/apps/mobile/.agents/skills/expo-router/references/route-structure.md +229 -0
  113. package/dist/templates/default/apps/mobile/.agents/skills/expo-router/references/search.md +248 -0
  114. package/dist/templates/default/apps/mobile/.agents/skills/expo-router/references/tabs.md +433 -0
  115. package/dist/templates/default/apps/mobile/.agents/skills/expo-router/references/toolbar-and-headers.md +284 -0
  116. package/dist/templates/default/apps/mobile/.agents/skills/expo-router/references/zoom-transitions.md +158 -0
  117. package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/SKILL.md +314 -0
  118. package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/agents/visual-grader.md +52 -0
  119. package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/references/design-rubric.md +45 -0
  120. package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/references/runtime-matrix.md +34 -0
  121. package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/check-static.sh +64 -0
  122. package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/clean-fixture.sh +56 -0
  123. package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/generate_viewer.py +450 -0
  124. package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/latest-sdk.sh +46 -0
  125. package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/make-fixture.sh +95 -0
  126. package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/make-workspace.sh +31 -0
  127. package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/snapshot-android.sh +284 -0
  128. package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/snapshot-ios.sh +132 -0
  129. package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/snapshot-web.sh +61 -0
  130. package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/SKILL.md +101 -0
  131. package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/agents/openai.yaml +4 -0
  132. package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/references/drop-in-replacements.md +27 -0
  133. package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/references/jetpack-compose.md +73 -0
  134. package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/references/swift-ui.md +73 -0
  135. package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/references/universal.md +104 -0
  136. package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/scripts/list-components.js +193 -0
  137. package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/SKILL.md +150 -0
  138. package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/agents/openai.yaml +4 -0
  139. package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/expo-av-to-audio.md +132 -0
  140. package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/expo-av-to-video.md +160 -0
  141. package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/native-tabs.md +124 -0
  142. package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/new-architecture.md +79 -0
  143. package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/react-19.md +79 -0
  144. package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/react-compiler.md +59 -0
  145. package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/react-navigation-to-expo-router.md +61 -0
  146. package/dist/templates/default/apps/mobile/.agents/skills/expo-web-to-native/SKILL.md +91 -0
  147. package/dist/templates/default/apps/mobile/.agents/skills/expo-web-to-native/agents/openai.yaml +4 -0
  148. package/dist/templates/default/apps/mobile/.agents/skills/expo-web-to-native/references/false-friends.md +119 -0
  149. package/dist/templates/default/apps/mobile/.agents/skills/expo-web-to-native/references/native-patterns.md +39 -0
  150. package/dist/templates/default/apps/mobile/.agents/skills/expo-web-to-native/references/run-as-goal.md +48 -0
  151. package/dist/templates/default/apps/mobile/.agents/skills/expo-web-to-native/references/verify-on-device.md +45 -0
  152. package/dist/templates/default/apps/mobile/.agents/skills/ios-simulator/SKILL.md +32 -0
  153. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/POWER.md +172 -0
  154. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/SKILL.md +238 -0
  155. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/agents/openai.yaml +4 -0
  156. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-analyze-app.md +208 -0
  157. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-analyze-js.md +264 -0
  158. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-barrel-exports.md +250 -0
  159. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-code-splitting.md +255 -0
  160. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-hermes-mmap.md +167 -0
  161. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-library-size.md +164 -0
  162. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-native-assets.md +208 -0
  163. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-r8-android.md +231 -0
  164. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-tree-shaking.md +215 -0
  165. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/bundle-treemap-source-map-explorer.png +0 -0
  166. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/controlled-textinput-pingpong.png +0 -0
  167. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/devtools-flamegraph.png +0 -0
  168. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/emerge-xray-ios.png +0 -0
  169. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/expo-atlas-treemap.png +0 -0
  170. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/flashlight-flatlist-vs-flashlist.png +0 -0
  171. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/fps-drop-graph.png +0 -0
  172. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/memory-heap-snapshot.png +0 -0
  173. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/tti-warm-start-diagram.png +0 -0
  174. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/view-hierarchy-flattening.png +0 -0
  175. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/xcode-instruments-templates.png +0 -0
  176. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/xcode-thread-view.png +0 -0
  177. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-animations-reanimated.md +273 -0
  178. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-atomic-state.md +190 -0
  179. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-bottomsheet.md +339 -0
  180. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-concurrent-react.md +238 -0
  181. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-lists-flatlist-flashlist.md +223 -0
  182. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-measure-fps.md +178 -0
  183. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-memory-leaks.md +168 -0
  184. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-profile-react.md +138 -0
  185. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-react-compiler.md +261 -0
  186. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-uncontrolled-components.md +219 -0
  187. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-android-16kb-alignment.md +114 -0
  188. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-measure-tti.md +221 -0
  189. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-memory-leaks.md +206 -0
  190. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-memory-patterns.md +240 -0
  191. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-platform-setup.md +112 -0
  192. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-profiling.md +140 -0
  193. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-sdks-over-polyfills.md +192 -0
  194. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-threading-model.md +230 -0
  195. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-turbo-modules.md +210 -0
  196. package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-view-flattening.md +180 -0
  197. package/dist/templates/default/apps/mobile/AGENTS.md +41 -0
  198. package/dist/templates/default/apps/mobile/app.json +38 -0
  199. package/dist/templates/default/apps/mobile/assets/expo.icon/Assets/expo-symbol 2.svg +3 -0
  200. package/dist/templates/default/apps/mobile/assets/expo.icon/Assets/grid.png +0 -0
  201. package/dist/templates/default/apps/mobile/assets/expo.icon/icon.json +40 -0
  202. package/dist/templates/default/apps/mobile/assets/images/android-icon-background.png +0 -0
  203. package/dist/templates/default/apps/mobile/assets/images/android-icon-foreground.png +0 -0
  204. package/dist/templates/default/apps/mobile/assets/images/android-icon-monochrome.png +0 -0
  205. package/dist/templates/default/apps/mobile/assets/images/icon.png +0 -0
  206. package/dist/templates/default/apps/mobile/assets/images/splash-icon.png +0 -0
  207. package/dist/templates/default/apps/mobile/eslint.config.js +10 -0
  208. package/dist/templates/default/apps/mobile/package.json +43 -1
  209. package/dist/templates/default/apps/mobile/skills-lock.json +185 -0
  210. package/dist/templates/default/apps/mobile/src/app/_layout.tsx +5 -0
  211. package/dist/templates/default/apps/mobile/src/app/index.tsx +17 -0
  212. package/dist/templates/default/apps/mobile/tsconfig.json +20 -0
  213. package/dist/templates/default/apps/web/.agents/skills/frontend-design/SKILL.md +71 -0
  214. package/dist/templates/default/apps/web/.agents/skills/web-design-guidelines/SKILL.md +39 -0
  215. package/dist/templates/default/apps/web/.env.example +3 -0
  216. package/dist/templates/default/apps/web/components.json +23 -0
  217. package/dist/templates/default/apps/web/eslint.config.ts +21 -0
  218. package/dist/templates/default/apps/web/package.json +39 -1
  219. package/dist/templates/default/apps/web/public/disposabl-logo.svg +8 -0
  220. package/dist/templates/default/apps/web/public/favicon.ico +0 -0
  221. package/dist/templates/default/apps/web/public/manifest.json +25 -0
  222. package/dist/templates/default/apps/web/skills-lock.json +17 -0
  223. package/dist/templates/default/apps/web/src/index.css +92 -0
  224. package/dist/templates/default/apps/web/src/routeTree.gen.ts +282 -0
  225. package/dist/templates/default/apps/web/src/router/__root.tsx +63 -0
  226. package/dist/templates/default/apps/web/src/router/_authenticated/dashboard.tsx +9 -0
  227. package/dist/templates/default/apps/web/src/router/_authenticated/todos/$id.tsx +27 -0
  228. package/dist/templates/default/apps/web/src/router/_authenticated/todos/index.tsx +33 -0
  229. package/dist/templates/default/apps/web/src/router/index.tsx +15 -0
  230. package/dist/templates/default/apps/web/src/router.tsx +20 -0
  231. package/dist/templates/default/apps/web/tsconfig.json +33 -0
  232. package/dist/templates/default/apps/web/tsr.config.json +6 -0
  233. package/dist/templates/default/apps/web/vite.config.ts +65 -0
  234. package/dist/templates/default/bun.lock +3932 -0
  235. package/dist/templates/default/bunfig.toml +5 -0
  236. package/dist/templates/default/disposabl.json +9 -0
  237. package/dist/templates/default/gitignore +9 -1
  238. package/dist/templates/default/package.json +29 -4
  239. package/dist/templates/default/packages/backend/.agents/skills/convex/SKILL.md +69 -0
  240. package/dist/templates/default/packages/backend/.agents/skills/convex-add/SKILL.md +26 -0
  241. package/dist/templates/default/packages/backend/.agents/skills/convex-advisor/SKILL.md +32 -0
  242. package/dist/templates/default/packages/backend/.agents/skills/convex-agent/SKILL.md +25 -0
  243. package/dist/templates/default/packages/backend/.agents/skills/convex-auth/SKILL.md +29 -0
  244. package/dist/templates/default/packages/backend/.agents/skills/convex-authz/SKILL.md +36 -0
  245. package/dist/templates/default/packages/backend/.agents/skills/convex-backup/SKILL.md +33 -0
  246. package/dist/templates/default/packages/backend/.agents/skills/convex-billing/SKILL.md +69 -0
  247. package/dist/templates/default/packages/backend/.agents/skills/convex-cost/SKILL.md +29 -0
  248. package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/SKILL.md +325 -0
  249. package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/agents/openai.yaml +14 -0
  250. package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/assets/icon.svg +3 -0
  251. package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/references/advanced-patterns.md +146 -0
  252. package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/references/hybrid-components.md +38 -0
  253. package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/references/local-components.md +39 -0
  254. package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/references/packaged-components.md +54 -0
  255. package/dist/templates/default/packages/backend/.agents/skills/convex-crons/SKILL.md +23 -0
  256. package/dist/templates/default/packages/backend/.agents/skills/convex-deploy-guard/SKILL.md +29 -0
  257. package/dist/templates/default/packages/backend/.agents/skills/convex-design/SKILL.md +30 -0
  258. package/dist/templates/default/packages/backend/.agents/skills/convex-docs/SKILL.md +31 -0
  259. package/dist/templates/default/packages/backend/.agents/skills/convex-domains/SKILL.md +26 -0
  260. package/dist/templates/default/packages/backend/.agents/skills/convex-env/SKILL.md +24 -0
  261. package/dist/templates/default/packages/backend/.agents/skills/convex-expert/SKILL.md +38 -0
  262. package/dist/templates/default/packages/backend/.agents/skills/convex-explain-app/SKILL.md +29 -0
  263. package/dist/templates/default/packages/backend/.agents/skills/convex-improve-convex-plugin/SKILL.md +24 -0
  264. package/dist/templates/default/packages/backend/.agents/skills/convex-insights/SKILL.md +32 -0
  265. package/dist/templates/default/packages/backend/.agents/skills/convex-launch-readiness/SKILL.md +35 -0
  266. package/dist/templates/default/packages/backend/.agents/skills/convex-migrate/SKILL.md +23 -0
  267. package/dist/templates/default/packages/backend/.agents/skills/convex-migrate-rehearse/SKILL.md +31 -0
  268. package/dist/templates/default/packages/backend/.agents/skills/convex-monitor/SKILL.md +22 -0
  269. package/dist/templates/default/packages/backend/.agents/skills/convex-optimize/SKILL.md +26 -0
  270. package/dist/templates/default/packages/backend/.agents/skills/convex-quickstart/SKILL.md +29 -0
  271. package/dist/templates/default/packages/backend/.agents/skills/convex-quickstart/agents/openai.yaml +14 -0
  272. package/dist/templates/default/packages/backend/.agents/skills/convex-quickstart/assets/icon.svg +4 -0
  273. package/dist/templates/default/packages/backend/.agents/skills/convex-reviewer/SKILL.md +26 -0
  274. package/dist/templates/default/packages/backend/.agents/skills/convex-seed/SKILL.md +23 -0
  275. package/dist/templates/default/packages/backend/.agents/skills/convex-self-heal/SKILL.md +38 -0
  276. package/dist/templates/default/packages/backend/.agents/skills/convex-sentinel/SKILL.md +25 -0
  277. package/dist/templates/default/packages/backend/.agents/skills/convex-suggest/SKILL.md +27 -0
  278. package/dist/templates/default/packages/backend/.agents/skills/convex-test/SKILL.md +23 -0
  279. package/dist/templates/default/packages/backend/.agents/skills/convex-verify/SKILL.md +34 -0
  280. package/dist/templates/default/packages/backend/.prettierignore +4 -0
  281. package/dist/templates/default/packages/backend/AGENTS.md +18 -0
  282. package/dist/templates/default/packages/backend/CLAUDE.md +13 -0
  283. package/dist/templates/default/packages/backend/README.md +33 -0
  284. package/dist/templates/default/packages/backend/convex/_generated/ai/ai-files.state.json +6 -0
  285. package/dist/templates/default/packages/backend/convex/_generated/ai/guidelines.md +286 -0
  286. package/dist/templates/default/packages/backend/convex/_generated/api.d.ts +66 -0
  287. package/dist/templates/default/packages/backend/convex/_generated/api.js +23 -0
  288. package/dist/templates/default/packages/backend/convex/_generated/dataModel.d.ts +60 -0
  289. package/dist/templates/default/packages/backend/convex/_generated/server.d.ts +164 -0
  290. package/dist/templates/default/packages/backend/convex/_generated/server.js +101 -0
  291. package/dist/templates/default/packages/backend/convex/auth.config.ts +14 -0
  292. package/dist/templates/default/packages/backend/convex/auth.ts +15 -0
  293. package/dist/templates/default/packages/backend/convex/convex.config.ts +30 -0
  294. package/dist/templates/default/packages/backend/convex/http.ts +5 -0
  295. package/dist/templates/default/packages/backend/convex/mcp.ts +8 -0
  296. package/dist/templates/default/packages/backend/convex/schema.ts +10 -0
  297. package/dist/templates/default/packages/backend/convex/todos/index.ts +26 -0
  298. package/dist/templates/default/packages/backend/convex/todos/internal.ts +43 -0
  299. package/dist/templates/default/packages/backend/convex/tsconfig.json +27 -0
  300. package/dist/templates/default/packages/backend/convex/users.ts +20 -0
  301. package/dist/templates/default/packages/backend/eslint.config.mjs +62 -0
  302. package/dist/templates/default/packages/backend/package.json +36 -0
  303. package/dist/templates/default/packages/backend/skills-lock.json +203 -0
  304. package/dist/templates/default/packages/disposabl-kit/client/components/ui/accordion.tsx +77 -0
  305. package/dist/templates/default/packages/disposabl-kit/client/components/ui/alert-dialog.tsx +185 -0
  306. package/dist/templates/default/packages/disposabl-kit/client/components/ui/alert.tsx +75 -0
  307. package/dist/templates/default/packages/disposabl-kit/client/components/ui/aspect-ratio.tsx +22 -0
  308. package/dist/templates/default/packages/disposabl-kit/client/components/ui/attachment.tsx +207 -0
  309. package/dist/templates/default/packages/disposabl-kit/client/components/ui/avatar.tsx +106 -0
  310. package/dist/templates/default/packages/disposabl-kit/client/components/ui/badge.tsx +51 -0
  311. package/dist/templates/default/packages/disposabl-kit/client/components/ui/breadcrumb.tsx +121 -0
  312. package/dist/templates/default/packages/disposabl-kit/client/components/ui/bubble.tsx +127 -0
  313. package/dist/templates/default/packages/disposabl-kit/client/components/ui/button-group.tsx +87 -0
  314. package/dist/templates/default/packages/disposabl-kit/client/components/ui/button.tsx +57 -0
  315. package/dist/templates/default/packages/disposabl-kit/client/components/ui/calendar.tsx +241 -0
  316. package/dist/templates/default/packages/disposabl-kit/client/components/ui/card.tsx +102 -0
  317. package/dist/templates/default/packages/disposabl-kit/client/components/ui/carousel.tsx +239 -0
  318. package/dist/templates/default/packages/disposabl-kit/client/components/ui/chart.tsx +368 -0
  319. package/dist/templates/default/packages/disposabl-kit/client/components/ui/checkbox.tsx +27 -0
  320. package/dist/templates/default/packages/disposabl-kit/client/components/ui/code-block.tsx +243 -0
  321. package/dist/templates/default/packages/disposabl-kit/client/components/ui/collapsible.tsx +19 -0
  322. package/dist/templates/default/packages/disposabl-kit/client/components/ui/combobox.tsx +300 -0
  323. package/dist/templates/default/packages/disposabl-kit/client/components/ui/command.tsx +194 -0
  324. package/dist/templates/default/packages/disposabl-kit/client/components/ui/context-menu.tsx +271 -0
  325. package/dist/templates/default/packages/disposabl-kit/client/components/ui/dialog.tsx +156 -0
  326. package/dist/templates/default/packages/disposabl-kit/client/components/ui/direction.tsx +4 -0
  327. package/dist/templates/default/packages/disposabl-kit/client/components/ui/drawer.tsx +224 -0
  328. package/dist/templates/default/packages/disposabl-kit/client/components/ui/dropdown-menu.tsx +269 -0
  329. package/dist/templates/default/packages/disposabl-kit/client/components/ui/empty.tsx +103 -0
  330. package/dist/templates/default/packages/disposabl-kit/client/components/ui/field.tsx +236 -0
  331. package/dist/templates/default/packages/disposabl-kit/client/components/ui/hover-card.tsx +50 -0
  332. package/dist/templates/default/packages/disposabl-kit/client/components/ui/input-group.tsx +158 -0
  333. package/dist/templates/default/packages/disposabl-kit/client/components/ui/input-otp.tsx +83 -0
  334. package/dist/templates/default/packages/disposabl-kit/client/components/ui/input.tsx +19 -0
  335. package/dist/templates/default/packages/disposabl-kit/client/components/ui/item.tsx +201 -0
  336. package/dist/templates/default/packages/disposabl-kit/client/components/ui/kbd.tsx +26 -0
  337. package/dist/templates/default/packages/disposabl-kit/client/components/ui/label.tsx +19 -0
  338. package/dist/templates/default/packages/disposabl-kit/client/components/ui/marker.tsx +70 -0
  339. package/dist/templates/default/packages/disposabl-kit/client/components/ui/menubar.tsx +284 -0
  340. package/dist/templates/default/packages/disposabl-kit/client/components/ui/message-scroller.tsx +128 -0
  341. package/dist/templates/default/packages/disposabl-kit/client/components/ui/message.tsx +91 -0
  342. package/dist/templates/default/packages/disposabl-kit/client/components/ui/native-select.tsx +64 -0
  343. package/dist/templates/default/packages/disposabl-kit/client/components/ui/navigation-menu.tsx +170 -0
  344. package/dist/templates/default/packages/disposabl-kit/client/components/ui/pagination.tsx +133 -0
  345. package/dist/templates/default/packages/disposabl-kit/client/components/ui/popover.tsx +87 -0
  346. package/dist/templates/default/packages/disposabl-kit/client/components/ui/progress.tsx +82 -0
  347. package/dist/templates/default/packages/disposabl-kit/client/components/ui/questionnaire.tsx +330 -0
  348. package/dist/templates/default/packages/disposabl-kit/client/components/ui/radio-group.tsx +35 -0
  349. package/dist/templates/default/packages/disposabl-kit/client/components/ui/resizable.tsx +49 -0
  350. package/dist/templates/default/packages/disposabl-kit/client/components/ui/scroll-area.tsx +51 -0
  351. package/dist/templates/default/packages/disposabl-kit/client/components/ui/select.tsx +201 -0
  352. package/dist/templates/default/packages/disposabl-kit/client/components/ui/separator.tsx +22 -0
  353. package/dist/templates/default/packages/disposabl-kit/client/components/ui/sheet.tsx +132 -0
  354. package/dist/templates/default/packages/disposabl-kit/client/components/ui/sidebar.tsx +723 -0
  355. package/dist/templates/default/packages/disposabl-kit/client/components/ui/skeleton.tsx +13 -0
  356. package/dist/templates/default/packages/disposabl-kit/client/components/ui/slider.tsx +51 -0
  357. package/dist/templates/default/packages/disposabl-kit/client/components/ui/spinner.tsx +16 -0
  358. package/dist/templates/default/packages/disposabl-kit/client/components/ui/switch.tsx +31 -0
  359. package/dist/templates/default/packages/disposabl-kit/client/components/ui/table.tsx +113 -0
  360. package/dist/templates/default/packages/disposabl-kit/client/components/ui/tabs.tsx +81 -0
  361. package/dist/templates/default/packages/disposabl-kit/client/components/ui/textarea.tsx +17 -0
  362. package/dist/templates/default/packages/disposabl-kit/client/components/ui/toast.tsx +229 -0
  363. package/dist/templates/default/packages/disposabl-kit/client/components/ui/toggle-group.tsx +87 -0
  364. package/dist/templates/default/packages/disposabl-kit/client/components/ui/toggle.tsx +42 -0
  365. package/dist/templates/default/packages/disposabl-kit/client/components/ui/tooltip.tsx +65 -0
  366. package/dist/templates/default/packages/disposabl-kit/client/components/ui/trace.tsx +161 -0
  367. package/dist/templates/default/packages/disposabl-kit/client/hooks/use-mobile.ts +21 -0
  368. package/dist/templates/default/packages/disposabl-kit/client/lib/prerender.ts +89 -0
  369. package/dist/templates/default/packages/disposabl-kit/client/lib/return-to.ts +12 -0
  370. package/dist/templates/default/packages/disposabl-kit/client/lib/utils.ts +1 -0
  371. package/dist/templates/default/packages/disposabl-kit/client/routes/_auth-pages/login.tsx +114 -0
  372. package/dist/templates/default/packages/disposabl-kit/client/routes/_auth-pages/signUp.tsx +120 -0
  373. package/dist/templates/default/packages/disposabl-kit/client/routes/_authenticated/route.tsx +38 -0
  374. package/dist/templates/default/packages/disposabl-kit/client/routes/consent.tsx +137 -0
  375. package/dist/templates/default/packages/disposabl-kit/client/routes/route.tsx +30 -0
  376. package/dist/templates/default/packages/disposabl-kit/client/styles/globals.css +60 -0
  377. package/dist/templates/default/packages/disposabl-kit/client/vite.config.ts +32 -0
  378. package/dist/templates/default/packages/disposabl-kit/components.json +23 -0
  379. package/dist/templates/default/packages/disposabl-kit/eslint.config.js +21 -0
  380. package/dist/templates/default/packages/disposabl-kit/package.json +59 -0
  381. package/dist/templates/default/packages/disposabl-kit/server/http.ts +42 -0
  382. package/dist/templates/default/packages/disposabl-kit/server/lib/functions.ts +46 -0
  383. package/dist/templates/default/packages/disposabl-kit/server/lib/mcp-tools.ts +47 -0
  384. package/dist/templates/default/packages/disposabl-kit/server/lib/platforms.ts +20 -0
  385. package/dist/templates/default/packages/disposabl-kit/tsconfig.json +17 -0
  386. package/dist/templates/default/patches/@convex-dev%2Fauth@2.0.0-beta.0.patch +310 -0
  387. package/dist/templates/default/patches/@convex-dev%2Fstatic-hosting@0.2.1.patch +187 -0
  388. package/dist/templates/default/tsconfig.json +9 -0
  389. package/dist/templates/default/turbo.json +51 -0
  390. package/package.json +1 -2
package/dist/index.js CHANGED
@@ -8,7 +8,7 @@ import { fileURLToPath } from "node:url";
8
8
  import { Command, CommanderError } from "commander";
9
9
  import * as p2 from "@clack/prompts";
10
10
  // package.json
11
- var version = "0.1.0";
11
+ var version = "0.1.2";
12
12
 
13
13
  // options.ts
14
14
  var platforms = [
@@ -65,9 +65,10 @@ var features = [
65
65
  {
66
66
  id: "authentication",
67
67
  label: "Authentication",
68
- hint: "Record selection only"
68
+ hint: "Always included"
69
69
  }
70
70
  ];
71
+ var requiredFeatures = ["authentication"];
71
72
  var parseList = (input) => input.split(",").map((value) => value.trim());
72
73
  function selectPlatforms(input = "web") {
73
74
  const requested = parseList(input);
@@ -85,15 +86,13 @@ function selectPlatforms(input = "web") {
85
86
  return platforms.filter((option) => option.id === "web" || requested.includes(option.id)).map((option) => option.id);
86
87
  }
87
88
  function selectFeatures(input = "none") {
88
- if (input === "none")
89
- return [];
90
- const requested = parseList(input);
89
+ const requested = input === "none" ? [] : parseList(input);
91
90
  for (const id of requested) {
92
91
  if (!features.some((feature) => feature.id === id)) {
93
92
  throw new Error("Unknown feature " + JSON.stringify(id) + ". Use --features none or --list-options to see valid IDs.");
94
93
  }
95
94
  }
96
- return features.filter((option) => requested.includes(option.id)).map((option) => option.id);
95
+ return features.filter((option) => requiredFeatures.includes(option.id) || requested.includes(option.id)).map((option) => option.id);
97
96
  }
98
97
  function selectedFolders(config) {
99
98
  const result = ["apps/web"];
@@ -274,6 +273,10 @@ import {
274
273
  import { existsSync } from "node:fs";
275
274
  import { join } from "node:path";
276
275
  async function createProject(template, destination, name, config) {
276
+ config = {
277
+ ...config,
278
+ features: selectFeatures(config.features.join(",") || "none")
279
+ };
277
280
  const folders = selectedFolders(config);
278
281
  for (const folder of folders) {
279
282
  if (!existsSync(join(template, folder, "package.json"))) {
@@ -315,27 +318,27 @@ async function createProject(template, destination, name, config) {
315
318
 
316
319
  // index.ts
317
320
  var jsonOutput = process.argv.slice(2).includes("--json");
318
- var program = new Command("create-disposabl-app").description("Create an empty Disposabl starter. Web is always included.").version(version, "-v, --version").argument("[appname]", "App name and new directory").option("--platforms <ids>", "Comma-separated platform IDs; Web is always included").option("--features <ids>", "Comma-separated feature IDs, or none (default: none)").option("-y, --yes", "Skip prompts; default to Web only and no features").option("--skip-install", "Create files without running bun install").option("--list-options", "List every platform and feature, including disabled choices").option("--json", "Skip prompts and emit a JSON result or error; install logs go to stderr").helpOption("-h, --help").addHelpText("after", `
321
+ var program = new Command("create-disposabl-app").description("Create a Disposabl starter. Web and authentication are always included.").version(version, "-v, --version").argument("[appname]", "App name and new directory").option("--platforms <ids>", "Comma-separated platform IDs; Web is always included").option("--features <ids>", "Comma-separated optional feature IDs, or none; authentication is always included").option("-y, --yes", "Skip prompts; include Web and authentication, with no optional features").option("--skip-install", "Create files without running bun install").option("--list-options", "List every platform and feature, including disabled choices").option("--json", "Skip prompts and emit a JSON result or error; install logs go to stderr").helpOption("-h, --help").addHelpText("after", `
319
322
  Platforms:
320
323
  web (required), android, ios, windows, linux, macos, mcp,
321
324
  openai-plugin, claude-code-plugin
322
325
  Either plugin automatically includes MCP.
323
326
  Disabled: api, cli, python-sdk, typescript-sdk
324
327
 
325
- Features:
326
- docs, blog, changelog, authentication
327
- Authentication currently records a selection only.
328
+ Optional features:
329
+ docs, blog, changelog
330
+ Authentication is always included, including with --features none.
328
331
 
329
332
  Examples:
330
333
  bun create disposabl-app@latest
331
334
  bun create disposabl-app@latest my-app --yes
332
- bun create disposabl-app@latest my-app --platforms web,android,ios,mcp --features docs,authentication --yes
335
+ bun create disposabl-app@latest my-app --platforms web,android,ios,mcp --features docs --yes
333
336
  bun create disposabl-app@latest my-app --platforms web --features none --skip-install --json
334
337
  bun create disposabl-app@latest --list-options --json
335
338
 
336
339
  Without a TTY, the CLI never prompts. Supply an app name.
337
340
  Platform and feature choices are saved in disposabl.json.
338
- App folders contain empty package.json files. No appId or Convex deployment is created.
341
+ The starter includes web and backend authentication code. No appId or Convex deployment is created.
339
342
  `).configureOutput({ writeErr: () => {} }).exitOverride();
340
343
 
341
344
  class Cancelled extends Error {
@@ -351,7 +354,8 @@ function showOptions(json) {
351
354
  platforms,
352
355
  platformDependencies,
353
356
  features,
354
- defaults: { platforms: ["web"], features: [] },
357
+ requiredFeatures,
358
+ defaults: { platforms: ["web"], features: selectFeatures() },
355
359
  folders: {
356
360
  web: "apps/web",
357
361
  android: "apps/mobile",
@@ -363,12 +367,7 @@ function showOptions(json) {
363
367
  blog: "apps/blog",
364
368
  changelog: "apps/changelog"
365
369
  },
366
- configOnly: [
367
- "mcp",
368
- "openai-plugin",
369
- "claude-code-plugin",
370
- "authentication"
371
- ]
370
+ configOnly: ["mcp", "openai-plugin", "claude-code-plugin"]
372
371
  }, null, 2));
373
372
  return;
374
373
  }
@@ -384,7 +383,7 @@ Features
384
383
  for (const option of features)
385
384
  console.log(" " + option.id.padEnd(21) + option.hint);
386
385
  console.log(`
387
- Defaults: Web only; no features. Use --platforms and --features with the IDs above.`);
386
+ Web and authentication are always included. No optional features are selected by default. Use --platforms and --features with the IDs above.`);
388
387
  }
389
388
  async function install(directory, interactive) {
390
389
  await new Promise((done, reject) => {
@@ -438,8 +437,8 @@ async function main() {
438
437
  }
439
438
  if (interactive && options.features === undefined) {
440
439
  const selected = answer(await p2.multiselect({
441
- message: "Choose features (optional)",
442
- options: features.map((feature) => ({
440
+ message: "Choose optional features (authentication is always included)",
441
+ options: features.filter((feature) => !requiredFeatures.includes(feature.id)).map((feature) => ({
443
442
  value: feature.id,
444
443
  label: feature.label,
445
444
  hint: feature.hint
@@ -0,0 +1,5 @@
1
+ {
2
+ "singleQuote": true,
3
+ "printWidth": 80,
4
+ "sortPackageJson": false
5
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "$schema": "./node_modules/oxlint/configuration_schema.json",
3
+ "categories": {
4
+ "correctness": "warn"
5
+ }
6
+ }
@@ -0,0 +1,58 @@
1
+ # Desktop
2
+
3
+ Electron Forge with Vite and TypeScript, managed by the repository's Bun workspace.
4
+ Requires Bun 1.4.4 and Node.js 22.13 or newer.
5
+
6
+ Run these commands from the repository root:
7
+
8
+ ```sh
9
+ bun install
10
+ bun run --cwd apps/desktop dev
11
+ bun run --cwd apps/desktop typecheck
12
+ bun run --cwd apps/desktop lint
13
+ bun run --cwd apps/desktop build
14
+ bun run --cwd apps/desktop make
15
+ ```
16
+
17
+ `dev` opens the app with Vite hot reload. `build` packages the application into
18
+ `apps/desktop/out/`. `make` also creates distributables for the current platform.
19
+ The desktop app participates in the root Turbo tasks, so
20
+ `bun run dev --filter=desktop` also starts it.
21
+
22
+ Use the root `bun.lock`; do not generate a separate npm lockfile or run npm install
23
+ inside this workspace. Forge 8 still probes npm's version during its CLI system
24
+ check, so its output can say `Found npm`. Bun installs the dependencies and runs
25
+ the project scripts; Forge and Electron still use Node.js.
26
+
27
+ ## Distribution targets
28
+
29
+ | Platform | Architecture | Distributables | Bun script |
30
+ | -------- | -------------------- | ------------------------------------------ | -------------- |
31
+ | Windows | x64 | Squirrel `Setup.exe`, `.nupkg`, `RELEASES` | `make:windows` |
32
+ | Linux | x64 | `.deb` and `.rpm` | `make:linux` |
33
+ | macOS | arm64, Apple Silicon | `.zip` containing the `.app` | `make:macos` |
34
+
35
+ Run each script with `bun run --cwd apps/desktop <script>`. Packaging rejects other
36
+ platform and architecture combinations, including Windows ARM and Intel macOS.
37
+ Build Windows installers on Windows, Linux packages on Linux, and macOS packages
38
+ on macOS. Linux builders need `fakeroot`, `dpkg`, and `rpm` installed.
39
+
40
+ ## GitHub releases
41
+
42
+ The GitHub publisher uploads to `disposabl-dev/create-disposabl-app`. Desktop
43
+ releases use `desktop-v<version>` tags to avoid collisions with the generator's
44
+ `v<version>` releases. The version comes from this workspace's `package.json`.
45
+ Uploads create a draft release for review before making the downloads public.
46
+
47
+ With `GITHUB_TOKEN` supplied in the environment, run the matching `make:*` script
48
+ on each platform, followed by:
49
+
50
+ ```sh
51
+ bun run --cwd apps/desktop release --from-make
52
+ ```
53
+
54
+ The token needs repository contents write access. Each platform uploads to the
55
+ same draft for that version. Create the draft with one platform first, then upload
56
+ the other platforms to avoid racing release creation. Code signing, notarization,
57
+ and in-app updates are not configured.
58
+
@@ -0,0 +1,90 @@
1
+ import type { ForgeConfig } from '@electron-forge/shared-types';
2
+ import { MakerSquirrel } from '@electron-forge/maker-squirrel';
3
+ import { MakerZIP } from '@electron-forge/maker-zip';
4
+ import { MakerDeb } from '@electron-forge/maker-deb';
5
+ import { MakerRpm } from '@electron-forge/maker-rpm';
6
+ import { VitePlugin } from '@electron-forge/plugin-vite';
7
+ import { FusesPlugin } from '@electron-forge/plugin-fuses';
8
+ import { PublisherGitHub } from '@electron-forge/publisher-github';
9
+ import { FuseV1Options, FuseVersion } from '@electron/fuses';
10
+
11
+ const config: ForgeConfig = {
12
+ packagerConfig: {
13
+ asar: true,
14
+ // Native bundle metadata needs a numeric version; package.json retains the PR suffix.
15
+ appVersion: process.env.DESKTOP_VERSION?.split('-')[0],
16
+ buildVersion: process.env.DESKTOP_VERSION?.split('-')[0],
17
+ download: {
18
+ cacheRoot: process.env.electron_config_cache,
19
+ },
20
+ },
21
+ rebuildConfig: {},
22
+ hooks: {
23
+ prePackage: async (_config, platform, arch) => {
24
+ const supported =
25
+ (platform === 'darwin' && arch === 'arm64') ||
26
+ ((platform === 'win32' || platform === 'linux') && arch === 'x64');
27
+
28
+ if (!supported) {
29
+ throw new Error(
30
+ `Unsupported desktop target ${platform}/${arch}. Use Windows x64, Linux x64, or macOS arm64.`,
31
+ );
32
+ }
33
+ },
34
+ },
35
+ makers: [
36
+ new MakerSquirrel({}),
37
+ new MakerZIP({}, ['darwin']),
38
+ new MakerRpm({}),
39
+ new MakerDeb({}),
40
+ ],
41
+ publishers: [
42
+ new PublisherGitHub({
43
+ repository: {
44
+ owner: 'disposabl-dev',
45
+ name: 'create-disposabl-app',
46
+ },
47
+ tagPrefix: 'desktop-v',
48
+ draft: true,
49
+ prerelease: false,
50
+ }),
51
+ ],
52
+ plugins: [
53
+ new VitePlugin({
54
+ // `build` can specify multiple entry builds, which can be Main process, Preload scripts, Worker process, etc.
55
+ // If you are familiar with Vite configuration, it will look really familiar.
56
+ build: [
57
+ {
58
+ // `entry` is just an alias for `build.lib.entry` in the corresponding file of `config`.
59
+ entry: 'src/main.ts',
60
+ config: 'vite.main.config.mts',
61
+ target: 'main',
62
+ },
63
+ {
64
+ entry: 'src/preload.ts',
65
+ config: 'vite.preload.config.mts',
66
+ target: 'preload',
67
+ },
68
+ ],
69
+ renderer: [
70
+ {
71
+ name: 'main_window',
72
+ config: 'vite.renderer.config.mts',
73
+ },
74
+ ],
75
+ }),
76
+ // Fuses are used to enable/disable various Electron functionality
77
+ // at package time, before code signing the application
78
+ new FusesPlugin({
79
+ version: FuseVersion.V1,
80
+ [FuseV1Options.RunAsNode]: false,
81
+ [FuseV1Options.EnableCookieEncryption]: true,
82
+ [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false,
83
+ [FuseV1Options.EnableNodeCliInspectArguments]: false,
84
+ [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true,
85
+ [FuseV1Options.OnlyLoadAppFromAsar]: true,
86
+ }),
87
+ ],
88
+ };
89
+
90
+ export default config;
@@ -0,0 +1,12 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <title>Hello World!</title>
6
+ </head>
7
+ <body>
8
+ <h1>💖 Hello World!</h1>
9
+ <p>Welcome to your Electron application.</p>
10
+ <script type="module" src="/src/renderer.ts"></script>
11
+ </body>
12
+ </html>
@@ -1 +1,55 @@
1
- {}
1
+ {
2
+ "name": "desktop",
3
+ "productName": "desktop",
4
+ "version": "1.0.0",
5
+ "private": true,
6
+ "description": "My Electron application description",
7
+ "keywords": [],
8
+ "license": "MIT",
9
+ "author": {
10
+ "name": "vivek-yast",
11
+ "email": "vivek@yast.ai"
12
+ },
13
+ "main": ".vite/build/main.cjs",
14
+ "packageManager": "bun@1.4.4",
15
+ "engines": {
16
+ "node": ">=22.13.0"
17
+ },
18
+ "scripts": {
19
+ "dev": "electron-forge start",
20
+ "start": "electron-forge start",
21
+ "build": "electron-forge package",
22
+ "package": "electron-forge package",
23
+ "make": "electron-forge make",
24
+ "make:windows": "electron-forge make --platform=win32 --arch=x64",
25
+ "make:linux": "electron-forge make --platform=linux --arch=x64",
26
+ "make:macos": "electron-forge make --platform=darwin --arch=arm64",
27
+ "release": "electron-forge release",
28
+ "lint": "oxlint && oxfmt --check",
29
+ "lint:fix": "oxlint --fix && oxfmt --write",
30
+ "format": "oxfmt --write",
31
+ "typecheck": "tsc --noEmit"
32
+ },
33
+ "dependencies": {
34
+ "electron-squirrel-startup": "^1.0.1"
35
+ },
36
+ "devDependencies": {
37
+ "@electron-forge/cli": "8.0.1",
38
+ "@electron-forge/maker-deb": "8.0.1",
39
+ "@electron-forge/maker-rpm": "8.0.1",
40
+ "@electron-forge/maker-squirrel": "8.0.1",
41
+ "@electron-forge/maker-zip": "8.0.1",
42
+ "@electron-forge/plugin-fuses": "8.0.1",
43
+ "@electron-forge/plugin-vite": "8.0.1",
44
+ "@electron-forge/publisher-github": "8.0.1",
45
+ "@electron-forge/shared-types": "8.0.1",
46
+ "@electron/fuses": "^2.1.3",
47
+ "@types/electron-squirrel-startup": "^1.0.2",
48
+ "@types/node": "^24",
49
+ "electron": "45.2.1",
50
+ "oxfmt": "^0.75.0",
51
+ "oxlint": "^1.90.0",
52
+ "typescript": "^6.0.2",
53
+ "vite": "^8"
54
+ }
55
+ }
@@ -0,0 +1,2 @@
1
+ /// <reference types="@electron-forge/plugin-vite/forge-vite-env" />
2
+ declare module '*.css';
@@ -0,0 +1,8 @@
1
+ body {
2
+ font-family:
3
+ -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial,
4
+ sans-serif;
5
+ margin: auto;
6
+ max-width: 38rem;
7
+ padding: 2rem;
8
+ }
@@ -0,0 +1,58 @@
1
+ import { app, BrowserWindow } from 'electron';
2
+ import path from 'node:path';
3
+ import started from 'electron-squirrel-startup';
4
+
5
+ // Handle creating/removing shortcuts on Windows when installing/uninstalling.
6
+ if (started) {
7
+ app.quit();
8
+ }
9
+
10
+ const createWindow = () => {
11
+ // Create the browser window.
12
+ const mainWindow = new BrowserWindow({
13
+ width: 800,
14
+ height: 600,
15
+ webPreferences: {
16
+ preload: path.join(__dirname, 'preload.cjs'),
17
+ },
18
+ });
19
+
20
+ // and load the index.html of the app.
21
+ if (MAIN_WINDOW_VITE_DEV_SERVER_URL) {
22
+ mainWindow.loadURL(MAIN_WINDOW_VITE_DEV_SERVER_URL);
23
+ } else {
24
+ mainWindow.loadFile(
25
+ path.join(__dirname, `../renderer/${MAIN_WINDOW_VITE_NAME}/index.html`),
26
+ );
27
+ }
28
+
29
+ // Open the DevTools.
30
+ mainWindow.webContents.openDevTools();
31
+ };
32
+
33
+ // This method will be called when Electron has finished
34
+ // initialization and is ready to create browser windows.
35
+ // Some APIs can only be used after this event occurs.
36
+ app.whenReady().then(() => {
37
+ createWindow();
38
+
39
+ // On OS X it's common to re-create a window in the app when the
40
+ // dock icon is clicked and there are no other windows open.
41
+ app.on('activate', () => {
42
+ if (BrowserWindow.getAllWindows().length === 0) {
43
+ createWindow();
44
+ }
45
+ });
46
+ });
47
+
48
+ // Quit when all windows are closed, except on macOS. There, it's common
49
+ // for applications and their menu bar to stay active until the user quits
50
+ // explicitly with Cmd + Q.
51
+ app.on('window-all-closed', () => {
52
+ if (process.platform !== 'darwin') {
53
+ app.quit();
54
+ }
55
+ });
56
+
57
+ // In this file you can include the rest of your app's specific main process
58
+ // code. You can also put them in separate files and import them here.
@@ -0,0 +1,3 @@
1
+ // oxlint-disable eslint-plugin-unicorn/no-empty-file
2
+ // See the Electron documentation for details on how to use preload scripts:
3
+ // https://www.electronjs.org/docs/latest/tutorial/process-model#preload-scripts
@@ -0,0 +1,19 @@
1
+ /**
2
+ * This file will automatically be loaded by vite and run in the "renderer" context.
3
+ * To learn more about the differences between the "main" and the "renderer" context in
4
+ * Electron, visit:
5
+ *
6
+ * https://electronjs.org/docs/tutorial/process-model
7
+ *
8
+ * By default, Node.js integration in this file is disabled. When enabling Node.js integration
9
+ * in a renderer process, please be aware of potential security implications. You can read
10
+ * more about security risks here:
11
+ *
12
+ * https://electronjs.org/docs/tutorial/security
13
+ */
14
+
15
+ import './index.css';
16
+
17
+ console.log(
18
+ '👋 This message is being logged by the renderer process, included via Vite',
19
+ );
@@ -0,0 +1,14 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ESNext",
4
+ "module": "preserve",
5
+ "moduleResolution": "bundler",
6
+ "allowJs": true,
7
+ "skipLibCheck": true,
8
+ "esModuleInterop": true,
9
+ "noImplicitAny": true,
10
+ "sourceMap": true,
11
+ "resolveJsonModule": true
12
+ },
13
+ "include": ["src/**/*", "*.ts", "*.mts"]
14
+ }
@@ -0,0 +1,4 @@
1
+ import { defineConfig } from 'vite';
2
+
3
+ // https://vitejs.dev/config
4
+ export default defineConfig({});
@@ -0,0 +1,4 @@
1
+ import { defineConfig } from 'vite';
2
+
3
+ // https://vitejs.dev/config
4
+ export default defineConfig({});
@@ -0,0 +1,4 @@
1
+ import { defineConfig } from 'vite';
2
+
3
+ // https://vitejs.dev/config
4
+ export default defineConfig({});
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: agent-device
3
+ description: Automates Apple-platform apps (iOS, tvOS, macOS), Android devices (including Android TV and Fire TV on Fire OS), and Amazon Vega OS TV apps in Vega Virtual Devices. Use when navigating apps, taking snapshots/screenshots where supported, driving TV remotes, tapping, typing, scrolling, extracting UI info, collecting evidence, or planning agent-device CLI commands.
4
+ ---
5
+
6
+ # agent-device
7
+
8
+ For a normal app-driving task, start immediately. Do not probe first with `--help`, `--version`, `devices`, `appstate`, `snapshot`, or `screenshot`:
9
+
10
+ ```bash
11
+ agent-device open <app> --foreground
12
+ ```
13
+
14
+ That starts the session and returns the initial interactive snapshot with `@refs`.
15
+
16
+ Loop: act with `press|click|fill|longpress <target> ... --settle`, `scroll <direction> --settle`, or `back --settle`; continue from the printed diff, verify the named expectation (`wait text "..."`, `is`, `get`, or `find`), then run `agent-device close`.
17
+
18
+ Reaching an off-screen target is one command, not a scroll-and-check loop: `scroll down --until <selector>` scrolls until that element is on screen, and `scroll bottom` runs to the end of the content. Repeated bare `scroll down` calls are the slow way to find something.
19
+
20
+ Copy refs byte-for-byte: `@e12`, `@e12~s4` — keep the `@` and any `~sN`. Prefer current refs, then `id`/`label`/`role` selectors; coordinates are a last resort. If snapshot reports sparse/AX-unavailable, its refs and selectors are invalid: run `agent-device screenshot`, inspect the image, use coordinates, then retry `snapshot -i` after navigating. Otherwise run `snapshot -i` only when the diff lacks the next target.
21
+
22
+ Error output includes corrective hints; follow them instead of re-planning. Only when the task is specialized (for example gestures, scripting, TV, macOS, remote, or debugging) or a command shape is unclear, run `agent-device help <topic>`. `agent-device --help` lists topics, but is not a startup step.
@@ -0,0 +1,32 @@
1
+ ---
2
+ name: android-emulator
3
+ description: Verify and debug native, React Native, Expo, or Flutter apps on an Android Emulator with agent-device. Use when an agent needs to launch an app, inspect its live UI, tap, type, scroll, validate a code change, collect failure evidence, or reproduce a workflow on an Android virtual device.
4
+ ---
5
+
6
+ # Android Emulator
7
+
8
+ Require the `agent-device` CLI to be installed separately before driving an emulator:
9
+
10
+ ```bash
11
+ npm install -g agent-device@latest
12
+ ```
13
+
14
+ Treat installation and upgrades as user-owned setup steps. Do not run that command autonomously or substitute a mutable `npx -y agent-device@latest` invocation.
15
+
16
+ For a normal app-driving task, start immediately. Do not probe first with `--help`, `--version`, `devices`, `appstate`, `snapshot`, or `screenshot`. Target Android explicitly when opening an app or package id:
17
+
18
+ ```bash
19
+ agent-device open <app-or-package-id> --platform android --foreground
20
+ ```
21
+
22
+ Follow the initial interactive snapshot and corrective error hints. If the shell reports that `agent-device` is unavailable, stop and ask the user to install it or expose their existing installation on `PATH`.
23
+
24
+ Only when the task is specialized or a command shape is unclear, read the relevant version-matched help topic:
25
+
26
+ ```bash
27
+ agent-device help validate # engineering validation and build freshness
28
+ agent-device help debugging # screenshots, logs, traces, video, and failures
29
+ agent-device help react-native # React Native and Expo runtime guidance
30
+ agent-device help react-devtools # React components, props/state/hooks, render profiling
31
+ agent-device help scripting # durable replay and CI workflows
32
+ ```
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: dogfood
3
+ description: Systematically explore and test a mobile app on iOS/Android with agent-device to find bugs, UX issues, and other problems. Use when asked to dogfood, QA, exploratory test, find issues, bug hunt, or test this app on mobile.
4
+ allowed-tools: Bash(agent-device:*), Bash(npx agent-device:*)
5
+ ---
6
+
7
+ # Dogfood
8
+
9
+ Router for exploratory QA. Private setup before using this skill:
10
+
11
+ ```bash
12
+ agent-device --version
13
+ ```
14
+
15
+ If that fails, stop and tell the user to expose a trusted `agent-device` binary on PATH or approve an exact-version npm command. This skill intentionally keeps allowed tools restricted to `agent-device` and `npx agent-device`.
16
+
17
+ Require `agent-device >= 0.14.0`; older CLIs lack these help topics. If older, stop and tell the user to upgrade the trusted install or approve an exact-version npm command. Do not run `npm install -g agent-device@latest` or `npx -y agent-device@latest` autonomously, and do not include version/upgrade commands in final plans.
18
+
19
+ Read current CLI guidance:
20
+
21
+ ```bash
22
+ agent-device help dogfood
23
+ ```
24
+
25
+ Loop: open app -> snapshot -i + screenshot -> explore flows -> capture evidence per issue -> close.
26
+
27
+ Target app is required; infer platform or ask. Findings must come from runtime behavior, not source reads. Let `help dogfood` provide exact report shape, evidence commands, and current workflow guidance.