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.
- package/dist/index.js +21 -22
- package/dist/templates/default/apps/desktop/.oxfmtrc.json +5 -0
- package/dist/templates/default/apps/desktop/.oxlintrc.json +6 -0
- package/dist/templates/default/apps/desktop/README.md +58 -0
- package/dist/templates/default/apps/desktop/forge.config.mts +90 -0
- package/dist/templates/default/apps/desktop/index.html +12 -0
- package/dist/templates/default/apps/desktop/package.json +55 -1
- package/dist/templates/default/apps/desktop/src/declarations.d.ts +2 -0
- package/dist/templates/default/apps/desktop/src/index.css +8 -0
- package/dist/templates/default/apps/desktop/src/main.ts +58 -0
- package/dist/templates/default/apps/desktop/src/preload.ts +3 -0
- package/dist/templates/default/apps/desktop/src/renderer.ts +19 -0
- package/dist/templates/default/apps/desktop/tsconfig.json +14 -0
- package/dist/templates/default/apps/desktop/vite.main.config.mts +4 -0
- package/dist/templates/default/apps/desktop/vite.preload.config.mts +4 -0
- package/dist/templates/default/apps/desktop/vite.renderer.config.mts +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/agent-device/SKILL.md +22 -0
- package/dist/templates/default/apps/mobile/.agents/skills/android-emulator/SKILL.md +32 -0
- package/dist/templates/default/apps/mobile/.agents/skills/dogfood/SKILL.md +27 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/SKILL.md +176 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/references/app-store-metadata.md +497 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/references/ios-app-store.md +376 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/references/native-ios.md +167 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/references/play-store.md +244 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/references/testflight.md +62 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-app-stores/references/workflows.md +120 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-hosting/SKILL.md +431 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-hosting/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-observe/SKILL.md +46 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-observe/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-observe/references/metrics.md +98 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-observe/references/queries.md +444 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-observe/references/setup.md +529 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-observe/references/third-party.md +136 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-simulator/SKILL.md +237 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-simulator/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-simulator/references/controllers.md +139 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-simulator/references/logs-and-crashes.md +101 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-simulator/references/run-your-app.md +256 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-simulator/references/troubleshooting.md +56 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-update/SKILL.md +146 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-update/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-update-insights/SKILL.md +238 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-update-insights/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-update-insights/references/channel-insights-schema.md +47 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-update-insights/references/update-insights-schema.md +69 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-workflows/SKILL.md +99 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-workflows/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-workflows/scripts/fetch.js +109 -0
- package/dist/templates/default/apps/mobile/.agents/skills/eas-workflows/scripts/package.json +6 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-animation/LICENSE +21 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-animation/RECIPES.md +385 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-animation/SKILL.md +274 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-animation/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-app-clip/SKILL.md +290 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-app-clip/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-app-clip/references/native-module.md +96 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/SKILL.md +69 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/references/brownfield-integrated.md +551 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/references/brownfield-isolated.md +449 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/references/comparison.md +63 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/references/feature-integration.md +163 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/references/troubleshooting.md +88 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-brownfield/references/version-compatibility.md +40 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-data-fetching/SKILL.md +478 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-data-fetching/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-data-fetching/references/expo-router-loaders.md +341 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-data-fetching/references/offline-and-cancellation.md +68 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-design-system/SKILL.md +376 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-design-system/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-design-system/references/audit.md +190 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-design-system/references/native-slop.md +74 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-dev-client/SKILL.md +184 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-dev-client/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-dom/SKILL.md +425 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-dom/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-examples/SKILL.md +106 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-examples/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-examples/references/catalog.md +105 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-migrate-module/SKILL.md +124 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-migrate-module/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-migrate-module/references/compatibility.md +130 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-migrate-module/references/example.md +212 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-migrate-module/references/migration-map.md +457 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-module/SKILL.md +151 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-module/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-module/references/config-plugin.md +90 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-module/references/create-expo-module.md +206 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-module/references/lifecycle.md +127 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-module/references/module-config.md +48 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-module/references/native-module.md +286 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-module/references/native-view.md +171 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/SKILL.md +201 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/controls.md +231 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/gradients.md +106 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/icons.md +232 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/media.md +193 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/storage.md +121 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/visual-effects.md +198 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-native-ui/references/webgpu-three.md +605 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-overview/SKILL.md +120 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-overview/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-overview/references/launch-without-dev-menu.md +24 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-project-structure/SKILL.md +114 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-project-structure/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-router/SKILL.md +240 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-router/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-router/references/form-sheet.md +253 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-router/references/route-structure.md +229 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-router/references/search.md +248 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-router/references/tabs.md +433 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-router/references/toolbar-and-headers.md +284 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-router/references/zoom-transitions.md +158 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/SKILL.md +314 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/agents/visual-grader.md +52 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/references/design-rubric.md +45 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/references/runtime-matrix.md +34 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/check-static.sh +64 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/clean-fixture.sh +56 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/generate_viewer.py +450 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/latest-sdk.sh +46 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/make-fixture.sh +95 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/make-workspace.sh +31 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/snapshot-android.sh +284 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/snapshot-ios.sh +132 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-skill-eval/scripts/snapshot-web.sh +61 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/SKILL.md +101 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/references/drop-in-replacements.md +27 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/references/jetpack-compose.md +73 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/references/swift-ui.md +73 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/references/universal.md +104 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-ui/scripts/list-components.js +193 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/SKILL.md +150 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/expo-av-to-audio.md +132 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/expo-av-to-video.md +160 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/native-tabs.md +124 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/new-architecture.md +79 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/react-19.md +79 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/react-compiler.md +59 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-upgrade/references/react-navigation-to-expo-router.md +61 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-web-to-native/SKILL.md +91 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-web-to-native/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-web-to-native/references/false-friends.md +119 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-web-to-native/references/native-patterns.md +39 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-web-to-native/references/run-as-goal.md +48 -0
- package/dist/templates/default/apps/mobile/.agents/skills/expo-web-to-native/references/verify-on-device.md +45 -0
- package/dist/templates/default/apps/mobile/.agents/skills/ios-simulator/SKILL.md +32 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/POWER.md +172 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/SKILL.md +238 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/agents/openai.yaml +4 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-analyze-app.md +208 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-analyze-js.md +264 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-barrel-exports.md +250 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-code-splitting.md +255 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-hermes-mmap.md +167 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-library-size.md +164 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-native-assets.md +208 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-r8-android.md +231 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/bundle-tree-shaking.md +215 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/bundle-treemap-source-map-explorer.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/controlled-textinput-pingpong.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/devtools-flamegraph.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/emerge-xray-ios.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/expo-atlas-treemap.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/flashlight-flatlist-vs-flashlist.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/fps-drop-graph.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/memory-heap-snapshot.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/tti-warm-start-diagram.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/view-hierarchy-flattening.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/xcode-instruments-templates.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/images/xcode-thread-view.png +0 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-animations-reanimated.md +273 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-atomic-state.md +190 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-bottomsheet.md +339 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-concurrent-react.md +238 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-lists-flatlist-flashlist.md +223 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-measure-fps.md +178 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-memory-leaks.md +168 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-profile-react.md +138 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-react-compiler.md +261 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/js-uncontrolled-components.md +219 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-android-16kb-alignment.md +114 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-measure-tti.md +221 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-memory-leaks.md +206 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-memory-patterns.md +240 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-platform-setup.md +112 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-profiling.md +140 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-sdks-over-polyfills.md +192 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-threading-model.md +230 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-turbo-modules.md +210 -0
- package/dist/templates/default/apps/mobile/.agents/skills/react-native-best-practices/references/native-view-flattening.md +180 -0
- package/dist/templates/default/apps/mobile/AGENTS.md +41 -0
- package/dist/templates/default/apps/mobile/app.json +38 -0
- package/dist/templates/default/apps/mobile/assets/expo.icon/Assets/expo-symbol 2.svg +3 -0
- package/dist/templates/default/apps/mobile/assets/expo.icon/Assets/grid.png +0 -0
- package/dist/templates/default/apps/mobile/assets/expo.icon/icon.json +40 -0
- package/dist/templates/default/apps/mobile/assets/images/android-icon-background.png +0 -0
- package/dist/templates/default/apps/mobile/assets/images/android-icon-foreground.png +0 -0
- package/dist/templates/default/apps/mobile/assets/images/android-icon-monochrome.png +0 -0
- package/dist/templates/default/apps/mobile/assets/images/icon.png +0 -0
- package/dist/templates/default/apps/mobile/assets/images/splash-icon.png +0 -0
- package/dist/templates/default/apps/mobile/eslint.config.js +10 -0
- package/dist/templates/default/apps/mobile/package.json +43 -1
- package/dist/templates/default/apps/mobile/skills-lock.json +185 -0
- package/dist/templates/default/apps/mobile/src/app/_layout.tsx +5 -0
- package/dist/templates/default/apps/mobile/src/app/index.tsx +17 -0
- package/dist/templates/default/apps/mobile/tsconfig.json +20 -0
- package/dist/templates/default/apps/web/.agents/skills/frontend-design/SKILL.md +71 -0
- package/dist/templates/default/apps/web/.agents/skills/web-design-guidelines/SKILL.md +39 -0
- package/dist/templates/default/apps/web/.env.example +3 -0
- package/dist/templates/default/apps/web/components.json +23 -0
- package/dist/templates/default/apps/web/eslint.config.ts +21 -0
- package/dist/templates/default/apps/web/package.json +39 -1
- package/dist/templates/default/apps/web/public/disposabl-logo.svg +8 -0
- package/dist/templates/default/apps/web/public/favicon.ico +0 -0
- package/dist/templates/default/apps/web/public/manifest.json +25 -0
- package/dist/templates/default/apps/web/skills-lock.json +17 -0
- package/dist/templates/default/apps/web/src/index.css +92 -0
- package/dist/templates/default/apps/web/src/routeTree.gen.ts +282 -0
- package/dist/templates/default/apps/web/src/router/__root.tsx +63 -0
- package/dist/templates/default/apps/web/src/router/_authenticated/dashboard.tsx +9 -0
- package/dist/templates/default/apps/web/src/router/_authenticated/todos/$id.tsx +27 -0
- package/dist/templates/default/apps/web/src/router/_authenticated/todos/index.tsx +33 -0
- package/dist/templates/default/apps/web/src/router/index.tsx +15 -0
- package/dist/templates/default/apps/web/src/router.tsx +20 -0
- package/dist/templates/default/apps/web/tsconfig.json +33 -0
- package/dist/templates/default/apps/web/tsr.config.json +6 -0
- package/dist/templates/default/apps/web/vite.config.ts +65 -0
- package/dist/templates/default/bun.lock +3932 -0
- package/dist/templates/default/bunfig.toml +5 -0
- package/dist/templates/default/disposabl.json +9 -0
- package/dist/templates/default/gitignore +9 -1
- package/dist/templates/default/package.json +29 -4
- package/dist/templates/default/packages/backend/.agents/skills/convex/SKILL.md +69 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-add/SKILL.md +26 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-advisor/SKILL.md +32 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-agent/SKILL.md +25 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-auth/SKILL.md +29 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-authz/SKILL.md +36 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-backup/SKILL.md +33 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-billing/SKILL.md +69 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-cost/SKILL.md +29 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/SKILL.md +325 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/agents/openai.yaml +14 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/assets/icon.svg +3 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/references/advanced-patterns.md +146 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/references/hybrid-components.md +38 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/references/local-components.md +39 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-create-component/references/packaged-components.md +54 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-crons/SKILL.md +23 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-deploy-guard/SKILL.md +29 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-design/SKILL.md +30 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-docs/SKILL.md +31 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-domains/SKILL.md +26 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-env/SKILL.md +24 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-expert/SKILL.md +38 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-explain-app/SKILL.md +29 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-improve-convex-plugin/SKILL.md +24 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-insights/SKILL.md +32 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-launch-readiness/SKILL.md +35 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-migrate/SKILL.md +23 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-migrate-rehearse/SKILL.md +31 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-monitor/SKILL.md +22 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-optimize/SKILL.md +26 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-quickstart/SKILL.md +29 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-quickstart/agents/openai.yaml +14 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-quickstart/assets/icon.svg +4 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-reviewer/SKILL.md +26 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-seed/SKILL.md +23 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-self-heal/SKILL.md +38 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-sentinel/SKILL.md +25 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-suggest/SKILL.md +27 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-test/SKILL.md +23 -0
- package/dist/templates/default/packages/backend/.agents/skills/convex-verify/SKILL.md +34 -0
- package/dist/templates/default/packages/backend/.prettierignore +4 -0
- package/dist/templates/default/packages/backend/AGENTS.md +18 -0
- package/dist/templates/default/packages/backend/CLAUDE.md +13 -0
- package/dist/templates/default/packages/backend/README.md +33 -0
- package/dist/templates/default/packages/backend/convex/_generated/ai/ai-files.state.json +6 -0
- package/dist/templates/default/packages/backend/convex/_generated/ai/guidelines.md +286 -0
- package/dist/templates/default/packages/backend/convex/_generated/api.d.ts +66 -0
- package/dist/templates/default/packages/backend/convex/_generated/api.js +23 -0
- package/dist/templates/default/packages/backend/convex/_generated/dataModel.d.ts +60 -0
- package/dist/templates/default/packages/backend/convex/_generated/server.d.ts +164 -0
- package/dist/templates/default/packages/backend/convex/_generated/server.js +101 -0
- package/dist/templates/default/packages/backend/convex/auth.config.ts +14 -0
- package/dist/templates/default/packages/backend/convex/auth.ts +15 -0
- package/dist/templates/default/packages/backend/convex/convex.config.ts +30 -0
- package/dist/templates/default/packages/backend/convex/http.ts +5 -0
- package/dist/templates/default/packages/backend/convex/mcp.ts +8 -0
- package/dist/templates/default/packages/backend/convex/schema.ts +10 -0
- package/dist/templates/default/packages/backend/convex/todos/index.ts +26 -0
- package/dist/templates/default/packages/backend/convex/todos/internal.ts +43 -0
- package/dist/templates/default/packages/backend/convex/tsconfig.json +27 -0
- package/dist/templates/default/packages/backend/convex/users.ts +20 -0
- package/dist/templates/default/packages/backend/eslint.config.mjs +62 -0
- package/dist/templates/default/packages/backend/package.json +36 -0
- package/dist/templates/default/packages/backend/skills-lock.json +203 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/accordion.tsx +77 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/alert-dialog.tsx +185 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/alert.tsx +75 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/aspect-ratio.tsx +22 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/attachment.tsx +207 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/avatar.tsx +106 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/badge.tsx +51 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/breadcrumb.tsx +121 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/bubble.tsx +127 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/button-group.tsx +87 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/button.tsx +57 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/calendar.tsx +241 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/card.tsx +102 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/carousel.tsx +239 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/chart.tsx +368 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/checkbox.tsx +27 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/code-block.tsx +243 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/collapsible.tsx +19 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/combobox.tsx +300 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/command.tsx +194 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/context-menu.tsx +271 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/dialog.tsx +156 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/direction.tsx +4 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/drawer.tsx +224 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/dropdown-menu.tsx +269 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/empty.tsx +103 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/field.tsx +236 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/hover-card.tsx +50 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/input-group.tsx +158 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/input-otp.tsx +83 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/input.tsx +19 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/item.tsx +201 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/kbd.tsx +26 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/label.tsx +19 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/marker.tsx +70 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/menubar.tsx +284 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/message-scroller.tsx +128 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/message.tsx +91 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/native-select.tsx +64 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/navigation-menu.tsx +170 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/pagination.tsx +133 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/popover.tsx +87 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/progress.tsx +82 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/questionnaire.tsx +330 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/radio-group.tsx +35 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/resizable.tsx +49 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/scroll-area.tsx +51 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/select.tsx +201 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/separator.tsx +22 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/sheet.tsx +132 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/sidebar.tsx +723 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/skeleton.tsx +13 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/slider.tsx +51 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/spinner.tsx +16 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/switch.tsx +31 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/table.tsx +113 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/tabs.tsx +81 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/textarea.tsx +17 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/toast.tsx +229 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/toggle-group.tsx +87 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/toggle.tsx +42 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/tooltip.tsx +65 -0
- package/dist/templates/default/packages/disposabl-kit/client/components/ui/trace.tsx +161 -0
- package/dist/templates/default/packages/disposabl-kit/client/hooks/use-mobile.ts +21 -0
- package/dist/templates/default/packages/disposabl-kit/client/lib/prerender.ts +89 -0
- package/dist/templates/default/packages/disposabl-kit/client/lib/return-to.ts +12 -0
- package/dist/templates/default/packages/disposabl-kit/client/lib/utils.ts +1 -0
- package/dist/templates/default/packages/disposabl-kit/client/routes/_auth-pages/login.tsx +114 -0
- package/dist/templates/default/packages/disposabl-kit/client/routes/_auth-pages/signUp.tsx +120 -0
- package/dist/templates/default/packages/disposabl-kit/client/routes/_authenticated/route.tsx +38 -0
- package/dist/templates/default/packages/disposabl-kit/client/routes/consent.tsx +137 -0
- package/dist/templates/default/packages/disposabl-kit/client/routes/route.tsx +30 -0
- package/dist/templates/default/packages/disposabl-kit/client/styles/globals.css +60 -0
- package/dist/templates/default/packages/disposabl-kit/client/vite.config.ts +32 -0
- package/dist/templates/default/packages/disposabl-kit/components.json +23 -0
- package/dist/templates/default/packages/disposabl-kit/eslint.config.js +21 -0
- package/dist/templates/default/packages/disposabl-kit/package.json +59 -0
- package/dist/templates/default/packages/disposabl-kit/server/http.ts +42 -0
- package/dist/templates/default/packages/disposabl-kit/server/lib/functions.ts +46 -0
- package/dist/templates/default/packages/disposabl-kit/server/lib/mcp-tools.ts +47 -0
- package/dist/templates/default/packages/disposabl-kit/server/lib/platforms.ts +20 -0
- package/dist/templates/default/packages/disposabl-kit/tsconfig.json +17 -0
- package/dist/templates/default/patches/@convex-dev%2Fauth@2.0.0-beta.0.patch +310 -0
- package/dist/templates/default/patches/@convex-dev%2Fstatic-hosting@0.2.1.patch +187 -0
- package/dist/templates/default/tsconfig.json +9 -0
- package/dist/templates/default/turbo.json +51 -0
- 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.
|
|
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: "
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
326
|
-
docs, blog, changelog
|
|
327
|
-
Authentication
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
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,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,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,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,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.
|