@codeyam/codeyam-cli 0.1.0-staging.78c1cad → 0.1.0-staging.7973139

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 (152) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +2 -2
  4. package/analyzer-template/packages/aws/package.json +5 -5
  5. package/analyzer-template/packages/database/package.json +1 -1
  6. package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js +55 -0
  7. package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js.map +1 -0
  8. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +39 -3
  9. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
  10. package/codeyam-cli/src/commands/editor.js +395 -5
  11. package/codeyam-cli/src/commands/editor.js.map +1 -1
  12. package/codeyam-cli/src/commands/init.js +20 -0
  13. package/codeyam-cli/src/commands/init.js.map +1 -1
  14. package/codeyam-cli/src/data/techStacks.js +1 -1
  15. package/codeyam-cli/src/utils/__tests__/devServerState.test.js +93 -1
  16. package/codeyam-cli/src/utils/__tests__/devServerState.test.js.map +1 -1
  17. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +136 -0
  18. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -1
  19. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +98 -1
  20. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -1
  21. package/codeyam-cli/src/utils/__tests__/editorRoadmap.test.js +1108 -0
  22. package/codeyam-cli/src/utils/__tests__/editorRoadmap.test.js.map +1 -0
  23. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +120 -0
  24. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -1
  25. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +84 -0
  26. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -1
  27. package/codeyam-cli/src/utils/__tests__/envFile.test.js +125 -0
  28. package/codeyam-cli/src/utils/__tests__/envFile.test.js.map +1 -0
  29. package/codeyam-cli/src/utils/__tests__/handoffContext.test.js +500 -0
  30. package/codeyam-cli/src/utils/__tests__/handoffContext.test.js.map +1 -0
  31. package/codeyam-cli/src/utils/designSystemShowcase.js +810 -0
  32. package/codeyam-cli/src/utils/designSystemShowcase.js.map +1 -0
  33. package/codeyam-cli/src/utils/devServerState.js +32 -0
  34. package/codeyam-cli/src/utils/devServerState.js.map +1 -1
  35. package/codeyam-cli/src/utils/editorAudit.js +6 -1
  36. package/codeyam-cli/src/utils/editorAudit.js.map +1 -1
  37. package/codeyam-cli/src/utils/editorRoadmap.js +574 -0
  38. package/codeyam-cli/src/utils/editorRoadmap.js.map +1 -0
  39. package/codeyam-cli/src/utils/editorScenarioSwitch.js +27 -12
  40. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -1
  41. package/codeyam-cli/src/utils/editorScenarios.js +10 -0
  42. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -1
  43. package/codeyam-cli/src/utils/editorSeedAdapter.js +27 -14
  44. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -1
  45. package/codeyam-cli/src/utils/envFile.js +90 -0
  46. package/codeyam-cli/src/utils/envFile.js.map +1 -0
  47. package/codeyam-cli/src/utils/handoffContext.js +257 -0
  48. package/codeyam-cli/src/utils/handoffContext.js.map +1 -0
  49. package/codeyam-cli/src/utils/install-skills.js +36 -6
  50. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  51. package/codeyam-cli/src/utils/techStackConfig.js +38 -0
  52. package/codeyam-cli/src/utils/techStackConfig.js.map +1 -0
  53. package/codeyam-cli/src/utils/techStackConfig.test.js +85 -0
  54. package/codeyam-cli/src/utils/techStackConfig.test.js.map +1 -0
  55. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js +1 -0
  56. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js.map +1 -1
  57. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js +119 -1
  58. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js.map +1 -1
  59. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +354 -1
  60. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -1
  61. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  62. package/codeyam-cli/src/webserver/build/client/assets/{CopyButton-CLe80MMu.js → CopyButton-DTBZZfSk.js} +1 -1
  63. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-Crt_KN_U.js → EntityItem-BxclONWq.js} +1 -1
  64. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-CD7lGABo.js → EntityTypeIcon-BsnEOJZ_.js} +1 -1
  65. package/codeyam-cli/src/webserver/build/client/assets/{InlineSpinner-CgTNOhnu.js → InlineSpinner-ByaELMbv.js} +1 -1
  66. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-DtYTSPL2.js → InteractivePreview-6WjVfhxX.js} +2 -2
  67. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-D3s1MFkb.js → LibraryFunctionPreview-ChX-Hp7W.js} +1 -1
  68. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-CM5zg40N.js → LogViewer-C-9zQdXg.js} +1 -1
  69. package/codeyam-cli/src/webserver/build/client/assets/{MiniClaudeChat-CQENLSrF.js → MiniClaudeChat-Bs2_Oua4.js} +2 -2
  70. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-C2PLkej3.js → ReportIssueModal-DQsceHVv.js} +1 -1
  71. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-DanvyBPb.js → SafeScreenshot-DThcm_9M.js} +1 -1
  72. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-CefgqbCr.js → ScenarioViewer-Cl4oOA3A.js} +1 -1
  73. package/codeyam-cli/src/webserver/build/client/assets/{Spinner-Bc8BG-Lw.js → Spinner-CIil5-gb.js} +1 -1
  74. package/codeyam-cli/src/webserver/build/client/assets/{ViewportInspectBar-BA_Ry-rs.js → ViewportInspectBar-BqkA9zyZ.js} +1 -1
  75. package/codeyam-cli/src/webserver/build/client/assets/{_index-C1YkzTAV.js → _index-DnOgyseQ.js} +1 -1
  76. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-yH46LLUz.js → activity.(_tab)-DqM9hbNE.js} +1 -1
  77. package/codeyam-cli/src/webserver/build/client/assets/{addon-web-links-CHx25PAe.js → addon-web-links-C58dYPwR.js} +1 -1
  78. package/codeyam-cli/src/webserver/build/client/assets/{agent-transcripts-Bg3e7q4S.js → agent-transcripts-B8NCeOrm.js} +1 -1
  79. package/codeyam-cli/src/webserver/build/client/assets/api.editor-database-verify-l0sNRNKZ.js +1 -0
  80. package/codeyam-cli/src/webserver/build/client/assets/api.editor-github-verify-l0sNRNKZ.js +1 -0
  81. package/codeyam-cli/src/webserver/build/client/assets/api.editor-handoff-l0sNRNKZ.js +1 -0
  82. package/codeyam-cli/src/webserver/build/client/assets/api.editor-hosting-verify-l0sNRNKZ.js +1 -0
  83. package/codeyam-cli/src/webserver/build/client/assets/api.editor-roadmap-l0sNRNKZ.js +1 -0
  84. package/codeyam-cli/src/webserver/build/client/assets/{book-open-CL-lMgHh.js → book-open-BFSIqZgO.js} +1 -1
  85. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-GmAjGS9-.js → chevron-down-B9fDzFVh.js} +1 -1
  86. package/codeyam-cli/src/webserver/build/client/assets/chunk-UVKPFVEO-Bmq2apuh.js +43 -0
  87. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-DFcQkN5j.js → circle-check-DLPObLUx.js} +1 -1
  88. package/codeyam-cli/src/webserver/build/client/assets/{copy-C6iF61Xs.js → copy-DXEmO0TD.js} +1 -1
  89. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-4ImjHTVC.js → createLucideIcon-BwyFiRot.js} +1 -1
  90. package/codeyam-cli/src/webserver/build/client/assets/{dev.empty-CRepiabR.js → dev.empty-iRhRIFlp.js} +1 -1
  91. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-BZPBzV73.js +1 -0
  92. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-DhtVC4aI.js +161 -0
  93. package/codeyam-cli/src/webserver/build/client/assets/{editorPreview-CluPkvXJ.js → editorPreview-C6fEYHrh.js} +6 -6
  94. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-DYJRGiDI.js → entity._sha._-pc-vc6wO.js} +1 -1
  95. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.dev-wdiwx5-Z.js → entity._sha.scenarios._scenarioId.dev-C8AyYgYT.js} +1 -1
  96. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-BrkN-40Y.js → entity._sha.scenarios._scenarioId.fullscreen-DziaVQX1.js} +1 -1
  97. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-DxfhekTZ.js → entity._sha_.create-scenario-BTcpgIpC.js} +1 -1
  98. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CRXJWmpB.js → entity._sha_.edit._scenarioId-D_O_ajfZ.js} +1 -1
  99. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-SuW9syRS.js → entry.client-j1Vi0bco.js} +6 -6
  100. package/codeyam-cli/src/webserver/build/client/assets/{files-D-xGrg29.js → files-kuny2Q_s.js} +1 -1
  101. package/codeyam-cli/src/webserver/build/client/assets/{git-Bq_fbXP5.js → git-DgCZPMie.js} +1 -1
  102. package/codeyam-cli/src/webserver/build/client/assets/globals-L-aUIeux.css +1 -0
  103. package/codeyam-cli/src/webserver/build/client/assets/{index-Bp1l4hSv.js → index-BliGSSpl.js} +1 -1
  104. package/codeyam-cli/src/webserver/build/client/assets/{index-DE3jI_dv.js → index-SqjQKTdH.js} +1 -1
  105. package/codeyam-cli/src/webserver/build/client/assets/{index-CWV9XZiG.js → index-vyrZD2g4.js} +1 -1
  106. package/codeyam-cli/src/webserver/build/client/assets/{labs-B_IX45ih.js → labs-c3yLxSEp.js} +1 -1
  107. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-De-7qQ2u.js → loader-circle-D-q28GLF.js} +1 -1
  108. package/codeyam-cli/src/webserver/build/client/assets/manifest-79d0d81a.js +1 -0
  109. package/codeyam-cli/src/webserver/build/client/assets/{memory-Cx2xEx7s.js → memory-CEWIUC4t.js} +1 -1
  110. package/codeyam-cli/src/webserver/build/client/assets/{pause-CFxEKL1u.js → pause-BP6fitdh.js} +1 -1
  111. package/codeyam-cli/src/webserver/build/client/assets/{root-dKFRTYcy.js → root-L2V0jea7.js} +6 -6
  112. package/codeyam-cli/src/webserver/build/client/assets/{search-BdBb5aqc.js → search-BooqacKS.js} +1 -1
  113. package/codeyam-cli/src/webserver/build/client/assets/{settings-DdE-Untf.js → settings-BM0nbryO.js} +1 -1
  114. package/codeyam-cli/src/webserver/build/client/assets/{simulations-DSCdE99u.js → simulations-ovy6FjRY.js} +1 -1
  115. package/codeyam-cli/src/webserver/build/client/assets/{terminal-CrplD4b1.js → terminal-DHemCJIs.js} +1 -1
  116. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-DqJ0j69l.js → triangle-alert-D87ekDl8.js} +1 -1
  117. package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-DhXHbEjP.js → useCustomSizes-Dk0Tciqg.js} +1 -1
  118. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-D9QZKaLJ.js → useLastLogLine-C8QvIe05.js} +1 -1
  119. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-Cy5Qg_UR.js → useReportContext-jkCytuYz.js} +1 -1
  120. package/codeyam-cli/src/webserver/build/client/assets/{useToast-5HR2j9ZE.js → useToast-BgqkixU9.js} +1 -1
  121. package/codeyam-cli/src/webserver/build/server/assets/{analysisRunner-B6HnVI5u.js → analysisRunner-QgInFGdU.js} +1 -1
  122. package/codeyam-cli/src/webserver/build/server/assets/{index-rV_xLS1u.js → index-zblh9auj.js} +1 -1
  123. package/codeyam-cli/src/webserver/build/server/assets/init-DaE0CBjk.js +14 -0
  124. package/codeyam-cli/src/webserver/build/server/assets/server-build-CNvgz1cC.js +853 -0
  125. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  126. package/codeyam-cli/src/webserver/build-info.json +5 -5
  127. package/codeyam-cli/src/webserver/editorProxy.js +255 -20
  128. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -1
  129. package/codeyam-cli/src/webserver/server.js +67 -0
  130. package/codeyam-cli/src/webserver/server.js.map +1 -1
  131. package/codeyam-cli/src/webserver/terminalServer.js +102 -11
  132. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
  133. package/codeyam-cli/templates/codeyam-editor-codex.md +61 -0
  134. package/codeyam-cli/templates/codeyam-editor-gemini.md +59 -0
  135. package/codeyam-cli/templates/editor-step-hook.py +4 -4
  136. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +85 -0
  137. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +4 -2
  138. package/codeyam-cli/templates/expo-react-native/app.json +11 -0
  139. package/codeyam-cli/templates/expo-react-native/babel.config.js +1 -0
  140. package/codeyam-cli/templates/expo-react-native/gitignore +2 -0
  141. package/codeyam-cli/templates/expo-react-native/package.json +24 -18
  142. package/codeyam-cli/templates/expo-react-native/patches/expo-modules-autolinking+3.0.24.patch +29 -0
  143. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +1 -0
  144. package/codeyam-cli/templates/seed-adapters/supabase.ts +261 -77
  145. package/package.json +1 -1
  146. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-BAdwhyCx.js +0 -43
  147. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-Gbk_i5Js.js +0 -1
  148. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-CRxPi2BB.js +0 -96
  149. package/codeyam-cli/src/webserver/build/client/assets/globals-BsGHu8WX.css +0 -1
  150. package/codeyam-cli/src/webserver/build/client/assets/manifest-9032538f.js +0 -1
  151. package/codeyam-cli/src/webserver/build/server/assets/init-BdWDvetv.js +0 -10
  152. package/codeyam-cli/src/webserver/build/server/assets/server-build-B_jdq5dT.js +0 -689
@@ -170,6 +170,57 @@ npx jest app/hooks/useCounter.ts # Run specific test file
170
170
 
171
171
  The Jest config is in `package.json`. The `transformIgnorePatterns` is pre-configured to handle Expo and React Native module transforms — you should not need to modify it.
172
172
 
173
+ ## Building for a Real iOS Device
174
+
175
+ ### Prerequisites
176
+
177
+ - **Xcode 16.x** (Xcode 16.4 or later recommended)
178
+ - **Apple Developer account** (free is fine for personal devices)
179
+ - Device connected via USB or on the same Wi-Fi network
180
+
181
+ ### Steps
182
+
183
+ 1. Generate the native iOS project:
184
+
185
+ ```bash
186
+ npx expo prebuild --clean
187
+ ```
188
+
189
+ 2. Add Swift 5 enforcement to the generated Podfile. Open `ios/Podfile` and add this inside the `post_install` block, after `react_native_post_install(...)`:
190
+
191
+ ```ruby
192
+ # Fix Swift 6.1 (Xcode 16.4) strict concurrency errors
193
+ installer.pods_project.targets.each do |target|
194
+ target.build_configurations.each do |config|
195
+ config.build_settings['SWIFT_VERSION'] = '5.0'
196
+ end
197
+ end
198
+ ```
199
+
200
+ 3. Reinstall pods with the fix:
201
+
202
+ ```bash
203
+ cd ios && pod install && cd ..
204
+ ```
205
+
206
+ 4. Build and run on your device:
207
+
208
+ ```bash
209
+ npx expo run:ios --device
210
+ ```
211
+
212
+ ### Troubleshooting
213
+
214
+ - **"invalid code signature" / "profile has not been explicitly trusted"**: Your iPhone doesn't trust the developer profile yet. On your iPhone: **Settings → General → VPN & Device Management** → tap your Apple ID → **Trust**. Then relaunch the app.
215
+ - **"No script URL provided"**: Metro bundler isn't running or the device can't reach it. Start Metro with `npx expo start` in a separate terminal, then relaunch the app. Your phone and Mac must be on the same Wi-Fi network.
216
+ - **"Missing factory in ExpoAppDelegate"** crash: The native project is stale. Run `npx expo prebuild --clean` to regenerate it.
217
+ - **"ambiguous implicit access level for import"** error: The `patch-package` fix wasn't applied. Run `npm install` to reapply, then `cd ios && pod install`.
218
+
219
+ ### Notes
220
+
221
+ - The `ios/` and `android/` directories are gitignored — they're generated by `expo prebuild` and shouldn't be committed.
222
+ - The `patches/` directory IS committed — it contains a fix for Xcode 16.4 Swift compatibility that auto-applies on `npm install`.
223
+
173
224
  ## Web vs Native Differences
174
225
 
175
226
  The CodeYam editor previews your app via **Expo Web** (react-native-web in a browser). Some differences from native iOS/Android devices are expected:
@@ -183,6 +234,40 @@ The CodeYam editor previews your app via **Expo Web** (react-native-web in a bro
183
234
  | **Gestures** | Mouse drag events | Touch/swipe with inertia |
184
235
  | **StatusBar** | No visible effect | Controls device status bar appearance |
185
236
  | **Haptics** | No-op | Real haptic feedback via `expo-haptics` |
237
+ | **Pressable** | `backgroundColor`/`borderStyle` work on Pressable | Must use View wrapper (see below) |
238
+
239
+ ### Pressable Styling on Native
240
+
241
+ `<Pressable>` with `backgroundColor`, `borderRadius`, or `borderStyle: 'dashed'` renders correctly in the web preview but **fails silently on native devices** — the background/border simply won't appear.
242
+
243
+ **Fix:** Put visual styles on a wrapping `<View>` and use `onPressIn`/`onPressOut` for press feedback:
244
+
245
+ ```tsx
246
+ const [pressed, setPressed] = useState(false);
247
+
248
+ <View
249
+ style={{
250
+ backgroundColor: theme.colors.bgInverse,
251
+ borderRadius: 60,
252
+ overflow: 'hidden',
253
+ }}
254
+ >
255
+ <Pressable
256
+ onPress={onPress}
257
+ onPressIn={() => setPressed(true)}
258
+ onPressOut={() => setPressed(false)}
259
+ style={{
260
+ opacity: pressed ? 0.8 : 1,
261
+ alignItems: 'center',
262
+ padding: theme.spacing.lg,
263
+ }}
264
+ >
265
+ <Text style={{ color: theme.colors.accent }}>+</Text>
266
+ </Pressable>
267
+ </View>;
268
+ ```
269
+
270
+ For dashed borders, put `borderStyle`, `borderWidth`, and `borderColor` on the outer `<View>`, not on `<Pressable>`.
186
271
 
187
272
  **The web preview is for layout and data verification.** Test final visual polish on a real device or simulator:
188
273
 
@@ -1,12 +1,14 @@
1
1
  import '../global.css';
2
2
  import { Stack } from 'expo-router';
3
3
  import { StatusBar } from 'expo-status-bar';
4
- import { SafeAreaProvider } from 'react-native-safe-area-context';
4
+ import { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context';
5
5
 
6
6
  export default function RootLayout() {
7
7
  return (
8
8
  <SafeAreaProvider>
9
- <Stack screenOptions={{ headerShown: false }} />
9
+ <SafeAreaView style={{ flex: 1 }}>
10
+ <Stack screenOptions={{ headerShown: false }} />
11
+ </SafeAreaView>
10
12
  <StatusBar style="auto" />
11
13
  </SafeAreaProvider>
12
14
  );
@@ -4,6 +4,7 @@
4
4
  "slug": "codeyam-expo-app",
5
5
  "version": "1.0.0",
6
6
  "scheme": "codeyam-expo-app",
7
+ "icon": "./assets/icon.png",
7
8
  "platforms": ["ios", "android", "web"],
8
9
  "web": {
9
10
  "bundler": "metro",
@@ -13,6 +14,16 @@
13
14
  "plugins": ["expo-router"],
14
15
  "experiments": {
15
16
  "typedRoutes": true
17
+ },
18
+ "ios": {
19
+ "bundleIdentifier": "com.codeyam.expo-app"
20
+ },
21
+ "android": {
22
+ "adaptiveIcon": {
23
+ "foregroundImage": "./assets/adaptive-icon.png",
24
+ "backgroundColor": "#f8fafc"
25
+ },
26
+ "package": "com.codeyam.expoapp"
16
27
  }
17
28
  }
18
29
  }
@@ -5,5 +5,6 @@ module.exports = function (api) {
5
5
  ['babel-preset-expo', { jsxImportSource: 'nativewind' }],
6
6
  'nativewind/babel',
7
7
  ],
8
+ plugins: ['react-native-reanimated/plugin'],
8
9
  };
9
10
  };
@@ -2,6 +2,8 @@ node_modules/
2
2
  .expo/
3
3
  dist/
4
4
  web-build/
5
+ ios/
6
+ android/
5
7
  *.jks
6
8
  *.p8
7
9
  *.p12
@@ -7,42 +7,48 @@
7
7
  "setup": "npm install",
8
8
  "dev": "expo start --web",
9
9
  "start": "expo start",
10
- "android": "expo start --android",
11
- "ios": "expo start --ios",
10
+ "android": "expo run:android",
11
+ "ios": "expo run:ios",
12
12
  "build:web": "expo export --platform web",
13
- "test": "jest"
13
+ "test": "jest",
14
+ "postinstall": "patch-package"
14
15
  },
15
16
  "dependencies": {
16
- "expo": "~55.0.5",
17
- "expo-router": "~55.0.4",
18
- "expo-status-bar": "~55.0.4",
19
- "expo-linking": "~55.0.7",
20
- "expo-constants": "~55.0.7",
21
- "expo-font": "~55.0.4",
22
- "react": "19.2.4",
23
- "react-dom": "19.2.4",
24
- "react-native": "0.83.2",
17
+ "expo": "~54.0.0",
18
+ "expo-router": "~6.0.23",
19
+ "expo-status-bar": "~3.0.9",
20
+ "expo-linking": "~8.0.11",
21
+ "expo-constants": "~18.0.13",
22
+ "expo-font": "~14.0.11",
23
+ "react": "19.1.0",
24
+ "react-dom": "19.1.0",
25
+ "react-native": "0.81.5",
25
26
  "react-native-web": "^0.21.0",
26
27
  "react-native-safe-area-context": "~5.6.2",
27
- "react-native-screens": "~4.23.0",
28
+ "react-native-screens": "~4.16.0",
29
+ "react-native-reanimated": "^4.3.0",
30
+ "react-native-worklets": "^0.8.1",
31
+ "react-refresh": "^0.18.0",
28
32
  "@react-navigation/native": "^7.1.33",
29
33
  "@expo/vector-icons": "^15.0.2",
30
34
  "@react-native-async-storage/async-storage": "2.2.0",
31
35
  "nativewind": "^4.2.2",
32
- "tailwindcss": "^3.4.19"
36
+ "tailwindcss": "^3.4.19",
37
+ "patch-package": "^8.0.0"
33
38
  },
34
39
  "devDependencies": {
35
- "@types/react": "~19.2.2",
36
- "babel-preset-expo": "^55.0.10",
40
+ "@types/react": "~19.1.10",
41
+ "babel-preset-expo": "~54.0.10",
42
+ "sharp": "^0.33.0",
37
43
  "typescript": "~5.9.2",
38
44
  "jest": "^29.7.0",
39
- "jest-expo": "~55.0.5",
45
+ "jest-expo": "~54.0.17",
40
46
  "@testing-library/react-native": "^13.2.0"
41
47
  },
42
48
  "jest": {
43
49
  "preset": "jest-expo",
44
50
  "transformIgnorePatterns": [
45
- "node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|nativewind)"
51
+ "node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|nativewind|react-native-reanimated|react-native-worklets)"
46
52
  ]
47
53
  }
48
54
  }
@@ -0,0 +1,29 @@
1
+ diff --git a/node_modules/expo-modules-autolinking/build/platforms/apple/apple.js b/node_modules/expo-modules-autolinking/build/platforms/apple/apple.js
2
+ index 47487c0..58a6069 100644
3
+ --- a/node_modules/expo-modules-autolinking/build/platforms/apple/apple.js
4
+ +++ b/node_modules/expo-modules-autolinking/build/platforms/apple/apple.js
5
+ @@ -113,7 +113,7 @@ async function generatePackageListFileContentAsync(modules, className, entitleme
6
+ * but only these that are written in Swift and use the new API for creating Expo modules.
7
+ */
8
+
9
+ -import ExpoModulesCore
10
+ +public import ExpoModulesCore
11
+ ${generateCommonImportList(swiftModules)}
12
+ ${generateDebugOnlyImportList(debugOnlySwiftModules)}
13
+ @objc(${className})
14
+ @@ -137,13 +137,13 @@ ${generateReactDelegateHandlers(reactDelegateHandlerModules, debugOnlyReactDeleg
15
+ `;
16
+ }
17
+ function generateCommonImportList(swiftModules) {
18
+ - return swiftModules.map((moduleName) => `import ${moduleName}`).join('\n');
19
+ + return swiftModules.map((moduleName) => `public import ${moduleName}`).join('\n');
20
+ }
21
+ function generateDebugOnlyImportList(swiftModules) {
22
+ if (!swiftModules.length) {
23
+ return '';
24
+ }
25
+ - return (wrapInDebugConfigurationCheck(0, swiftModules.map((moduleName) => `import ${moduleName}`).join('\n')) + '\n');
26
+ + return (wrapInDebugConfigurationCheck(0, swiftModules.map((moduleName) => `public import ${moduleName}`).join('\n')) + '\n');
27
+ }
28
+ function generateModuleClasses(classNames, debugOnlyClassName) {
29
+ const commonClassNames = formatArrayOfClassNames(classNames);
@@ -55,6 +55,7 @@ dev.db-journal
55
55
  .codeyam/editor-user-prompt.txt
56
56
  .codeyam/editor-mode-context.md
57
57
  .codeyam/dev-mode-context.md
58
+ .codeyam/handoff-context.md
58
59
  .codeyam/logs/
59
60
  .codeyam/llm-calls/
60
61
  .codeyam/captures/