native-update 1.4.9 → 3.1.0

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 (265) hide show
  1. package/Readme.md +35 -9
  2. package/android/manifest-additions.xml +28 -0
  3. package/android/src/main/AndroidManifest.xml +3 -7
  4. package/android/src/main/java/com/aoneahsan/nativeupdate/BackgroundNotificationManager.kt +21 -13
  5. package/android/src/main/java/com/aoneahsan/nativeupdate/BackgroundUpdatePlugin.kt +15 -0
  6. package/android/src/main/java/com/aoneahsan/nativeupdate/BackgroundUpdateWorker.kt +23 -7
  7. package/android/src/main/java/com/aoneahsan/nativeupdate/LiveUpdatePlugin.kt +346 -31
  8. package/android/src/main/java/com/aoneahsan/nativeupdate/NativeUpdatePlugin.kt +32 -34
  9. package/android/src/main/java/com/aoneahsan/nativeupdate/NotificationActionReceiver.kt +10 -1
  10. package/android/src/main/java/com/aoneahsan/nativeupdate/SecurityManager.kt +18 -18
  11. package/cli/AGENTS.md +43 -0
  12. package/cli/CLAUDE.md +65 -0
  13. package/cli/commands/backend-create.js +56 -15
  14. package/cli/commands/bundle-create.js +39 -7
  15. package/cli/commands/monitor.js +72 -51
  16. package/cli/index.js +10 -24
  17. package/cli/package.json +11 -3
  18. package/dist/esm/app-review/app-review-manager.js +0 -1
  19. package/dist/esm/app-review/index.js +0 -1
  20. package/dist/esm/app-review/platform-review-handler.js +0 -1
  21. package/dist/esm/app-review/review-conditions-checker.js +0 -1
  22. package/dist/esm/app-review/review-rate-limiter.js +0 -1
  23. package/dist/esm/app-review/types.js +0 -1
  24. package/dist/esm/app-update/app-update-checker.js +0 -1
  25. package/dist/esm/app-update/app-update-installer.d.ts +1 -0
  26. package/dist/esm/app-update/app-update-installer.js +19 -8
  27. package/dist/esm/app-update/app-update-manager.js +0 -1
  28. package/dist/esm/app-update/app-update-notifier.js +0 -1
  29. package/dist/esm/app-update/index.js +0 -1
  30. package/dist/esm/app-update/platform-app-update.js +12 -3
  31. package/dist/esm/app-update/types.js +0 -1
  32. package/dist/esm/background-update/background-scheduler.js +0 -1
  33. package/dist/esm/background-update/index.js +0 -1
  34. package/dist/esm/background-update/notification-manager.js +0 -1
  35. package/dist/esm/config/support.js +0 -1
  36. package/dist/esm/core/analytics.d.ts +13 -0
  37. package/dist/esm/core/analytics.js +15 -1
  38. package/dist/esm/core/cache-manager.js +0 -1
  39. package/dist/esm/core/config.d.ts +6 -30
  40. package/dist/esm/core/config.js +1 -8
  41. package/dist/esm/core/errors.d.ts +1 -0
  42. package/dist/esm/core/errors.js +1 -1
  43. package/dist/esm/core/event-emitter.d.ts +0 -3
  44. package/dist/esm/core/event-emitter.js +8 -3
  45. package/dist/esm/core/logger.js +0 -1
  46. package/dist/esm/core/performance.js +0 -1
  47. package/dist/esm/core/plugin-manager.js +3 -1
  48. package/dist/esm/core/security.d.ts +22 -3
  49. package/dist/esm/core/security.js +46 -7
  50. package/dist/esm/definitions.d.ts +13 -40
  51. package/dist/esm/definitions.js +0 -1
  52. package/dist/esm/index.d.ts +3 -4
  53. package/dist/esm/index.js +3 -3
  54. package/dist/esm/live-update/bundle-manager.d.ts +8 -0
  55. package/dist/esm/live-update/bundle-manager.js +20 -1
  56. package/dist/esm/live-update/certificate-pinning.js +0 -1
  57. package/dist/esm/live-update/delta-processor.d.ts +1 -1
  58. package/dist/esm/live-update/delta-processor.js +3 -1
  59. package/dist/esm/live-update/download-manager.d.ts +36 -5
  60. package/dist/esm/live-update/download-manager.js +70 -24
  61. package/dist/esm/live-update/rollout-checker.d.ts +1 -1
  62. package/dist/esm/live-update/rollout-checker.js +5 -6
  63. package/dist/esm/live-update/update-manager.d.ts +12 -1
  64. package/dist/esm/live-update/update-manager.js +38 -11
  65. package/dist/esm/live-update/version-manager.d.ts +9 -12
  66. package/dist/esm/live-update/version-manager.js +40 -68
  67. package/dist/esm/plugin.js +82 -89
  68. package/dist/esm/security/crypto.js +11 -7
  69. package/dist/esm/security/validator.js +0 -1
  70. package/dist/esm/types/rollout.d.ts +85 -0
  71. package/dist/esm/types/rollout.js +25 -0
  72. package/dist/esm/web.d.ts +26 -1
  73. package/dist/esm/web.js +214 -75
  74. package/dist/plugin.cjs.js +1 -2
  75. package/dist/plugin.esm.js +1 -2
  76. package/dist/plugin.js +2 -3
  77. package/docs/AGENTS.md +38 -0
  78. package/docs/CHANGELOG.md +275 -0
  79. package/docs/CLAUDE.md +101 -0
  80. package/docs/MANUAL-TASKS.md +17 -0
  81. package/docs/MARKETING_WEBSITE_TRACKER.md +18 -2
  82. package/docs/MIGRATION.md +170 -0
  83. package/docs/PACKAGES.md +167 -0
  84. package/docs/PERFORMANCE.md +110 -0
  85. package/docs/PROJECT_COMPLETION_TRACKER.md +4 -35
  86. package/docs/README.md +12 -2
  87. package/docs/REMAINING_FEATURES.md +123 -76
  88. package/docs/ROADMAP.md +200 -120
  89. package/docs/SECURITY-IF-REPO-PUBLIC.md +232 -0
  90. package/docs/TESTING_REQUIREMENTS.md +1 -112
  91. package/docs/ai-knowledge-base/00-project-profile.md +38 -0
  92. package/docs/ai-knowledge-base/01-features.md +46 -0
  93. package/docs/ai-knowledge-base/02-routes.md +72 -0
  94. package/docs/ai-knowledge-base/03-tech-stack.md +57 -0
  95. package/docs/ai-knowledge-base/README.md +23 -0
  96. package/docs/analytics-tracking.md +37 -0
  97. package/docs/capacitor-official-plugins.md +46 -0
  98. package/docs/capawesome-plugins.md +29 -0
  99. package/docs/deployment/HOSTINGER_DEPLOY.md +370 -0
  100. package/docs/deployment/PRODUCTION-DEPLOY-CHECKLIST.md +184 -0
  101. package/docs/docs-site/plan.md +201 -0
  102. package/docs/docs-site/scope.md +127 -0
  103. package/docs/docs-site/tracker.json +235 -0
  104. package/docs/error-handling-tracking.md +37 -0
  105. package/docs/features/laravel-nova-backend/ASSESSMENT-SUMMARY.md +96 -0
  106. package/docs/features/laravel-nova-backend/IMPLEMENTATION-PLAN.md +504 -0
  107. package/docs/features/laravel-nova-backend/progress-tracker.json +184 -0
  108. package/docs/guides/testing-guide.md +15 -41
  109. package/docs/package-audit.md +41 -0
  110. package/docs/play-store/ASO-METADATA.md +5 -0
  111. package/docs/play-store/DATA-SAFETY.md +5 -0
  112. package/docs/play-store/DECLARATIONS.md +5 -0
  113. package/docs/play-store/README.md +27 -0
  114. package/docs/play-store/RELEASE-NOTES.md +99 -0
  115. package/docs/play-store/RELEASE-STEPS.md +6 -0
  116. package/docs/play-store/STORE-LISTING.md +7 -0
  117. package/docs/play-store/SUBMISSION-CHECKLIST.md +5 -0
  118. package/docs/production-readiness.md +1 -1
  119. package/docs/project-audit/2026-05-16/00-FINALIZATION-PLAN.md +123 -0
  120. package/docs/project-audit/2026-05-16/01-BATCH-PLAN.md +227 -0
  121. package/docs/project-audit/2026-05-16/02-AUDIT-FINDINGS.md +144 -0
  122. package/docs/project-audit/2026-05-16/sessions/batch-01.md +42 -0
  123. package/docs/project-audit/2026-05-16/sessions/batch-02.md +74 -0
  124. package/docs/project-audit/2026-05-16/sessions/batch-03.md +71 -0
  125. package/docs/project-audit/2026-05-16/sessions/batch-04.md +88 -0
  126. package/docs/project-audit/2026-05-16/sessions/batch-05.md +63 -0
  127. package/docs/project-audit/2026-05-16/sessions/batch-06.md +103 -0
  128. package/docs/project-audit/2026-05-16/sessions/batch-07.md +61 -0
  129. package/docs/project-audit/2026-05-16/sessions/batch-08.md +101 -0
  130. package/docs/project-audit/2026-05-16/sessions/batch-09.md +105 -0
  131. package/docs/project-audit/2026-05-16/sessions/batch-10.md +102 -0
  132. package/docs/project-audit/AUDIT-HISTORY.md +74 -0
  133. package/docs/project-audit/BATCH-PLAN.md +168 -0
  134. package/docs/project-audit/MARKETING-WEBSITE-FINDINGS-2026-05-11.md +73 -0
  135. package/docs/project-audit/PRODUCTION-READINESS-AUDIT-2026-05-08.md +275 -0
  136. package/docs/project-finalization/00-tracker.json +60 -0
  137. package/docs/project-knowledge-base/01-system-overview.md +227 -0
  138. package/docs/project-knowledge-base/02-routes-pages-forms-users.md +352 -0
  139. package/docs/project-knowledge-base/03-tech-stack-modules-services.md +379 -0
  140. package/docs/project-knowledge-base/04-data-models-integrations.md +244 -0
  141. package/docs/project-knowledge-base/05-docs-corpus-inventory.md +256 -0
  142. package/docs/project-knowledge-base/06-operations-testing-legal-content.md +208 -0
  143. package/docs/project-knowledge-base/README.md +103 -0
  144. package/docs/project-profiles/native-update-capacitor-update-platform-project-profile-last-updated-2026-05-19.md +81 -0
  145. package/docs/rules-tracker.md +102 -0
  146. package/docs/security/PRE-LAUNCH-PENTEST-CHECKLIST.md +116 -0
  147. package/docs/seo-aeo-rules.json +3043 -0
  148. package/docs/social-media-marketing/README.md +81 -0
  149. package/docs/social-media-marketing/posts-batch-01.md +613 -0
  150. package/docs/social-media-marketing/posts-batch-02.md +528 -0
  151. package/docs/social-media-marketing/whatsapp-messages-batch-01.md +458 -0
  152. package/docs/social-media-marketing/whatsapp-status-batch-01.md +355 -0
  153. package/docs/tracking/finalization-2026-05-16-tracker.json +346 -0
  154. package/docs/tracking/full-audit-tracker.json +121 -0
  155. package/docs/tracking/production-readiness-audit-tracker.json +429 -0
  156. package/docs/tracking/seo-checklist-tracker.json +333 -0
  157. package/ios/Plugin/BackgroundUpdate/BackgroundUpdatePlugin.swift +66 -9
  158. package/ios/Plugin/LiveUpdate/LiveUpdatePlugin.swift +306 -52
  159. package/ios/Plugin/NativeUpdatePlugin.swift +22 -9
  160. package/ios/Plugin/Security/SecurityManager.swift +13 -14
  161. package/package.json +37 -38
  162. package/cli/node_modules/.yarn-integrity +0 -16
  163. package/cli/node_modules/commander/LICENSE +0 -22
  164. package/cli/node_modules/commander/Readme.md +0 -1148
  165. package/cli/node_modules/commander/esm.mjs +0 -16
  166. package/cli/node_modules/commander/index.js +0 -26
  167. package/cli/node_modules/commander/lib/argument.js +0 -145
  168. package/cli/node_modules/commander/lib/command.js +0 -2179
  169. package/cli/node_modules/commander/lib/error.js +0 -43
  170. package/cli/node_modules/commander/lib/help.js +0 -462
  171. package/cli/node_modules/commander/lib/option.js +0 -329
  172. package/cli/node_modules/commander/lib/suggestSimilar.js +0 -100
  173. package/cli/node_modules/commander/package-support.json +0 -16
  174. package/cli/node_modules/commander/package.json +0 -80
  175. package/cli/node_modules/commander/typings/esm.d.mts +0 -3
  176. package/cli/node_modules/commander/typings/index.d.ts +0 -884
  177. package/cli/yarn.lock +0 -8
  178. package/dist/esm/__tests__/bundle-manager.test.d.ts +0 -1
  179. package/dist/esm/__tests__/bundle-manager.test.js +0 -151
  180. package/dist/esm/__tests__/bundle-manager.test.js.map +0 -1
  181. package/dist/esm/__tests__/config.test.d.ts +0 -1
  182. package/dist/esm/__tests__/config.test.js +0 -70
  183. package/dist/esm/__tests__/config.test.js.map +0 -1
  184. package/dist/esm/__tests__/delta-processor.test.d.ts +0 -1
  185. package/dist/esm/__tests__/delta-processor.test.js +0 -77
  186. package/dist/esm/__tests__/delta-processor.test.js.map +0 -1
  187. package/dist/esm/__tests__/firestore-schema.test.d.ts +0 -1
  188. package/dist/esm/__tests__/firestore-schema.test.js +0 -74
  189. package/dist/esm/__tests__/firestore-schema.test.js.map +0 -1
  190. package/dist/esm/__tests__/integration.test.d.ts +0 -1
  191. package/dist/esm/__tests__/integration.test.js +0 -78
  192. package/dist/esm/__tests__/integration.test.js.map +0 -1
  193. package/dist/esm/__tests__/manifest-reader.test.d.ts +0 -1
  194. package/dist/esm/__tests__/manifest-reader.test.js +0 -271
  195. package/dist/esm/__tests__/manifest-reader.test.js.map +0 -1
  196. package/dist/esm/__tests__/rollout-checker.test.d.ts +0 -1
  197. package/dist/esm/__tests__/rollout-checker.test.js +0 -210
  198. package/dist/esm/__tests__/rollout-checker.test.js.map +0 -1
  199. package/dist/esm/__tests__/security.test.d.ts +0 -1
  200. package/dist/esm/__tests__/security.test.js +0 -54
  201. package/dist/esm/__tests__/security.test.js.map +0 -1
  202. package/dist/esm/__tests__/version-manager.test.d.ts +0 -1
  203. package/dist/esm/__tests__/version-manager.test.js +0 -45
  204. package/dist/esm/__tests__/version-manager.test.js.map +0 -1
  205. package/dist/esm/app-review/app-review-manager.js.map +0 -1
  206. package/dist/esm/app-review/index.js.map +0 -1
  207. package/dist/esm/app-review/platform-review-handler.js.map +0 -1
  208. package/dist/esm/app-review/review-conditions-checker.js.map +0 -1
  209. package/dist/esm/app-review/review-rate-limiter.js.map +0 -1
  210. package/dist/esm/app-review/types.js.map +0 -1
  211. package/dist/esm/app-update/app-update-checker.js.map +0 -1
  212. package/dist/esm/app-update/app-update-installer.js.map +0 -1
  213. package/dist/esm/app-update/app-update-manager.js.map +0 -1
  214. package/dist/esm/app-update/app-update-notifier.js.map +0 -1
  215. package/dist/esm/app-update/index.js.map +0 -1
  216. package/dist/esm/app-update/platform-app-update.js.map +0 -1
  217. package/dist/esm/app-update/types.js.map +0 -1
  218. package/dist/esm/background-update/background-scheduler.js.map +0 -1
  219. package/dist/esm/background-update/index.js.map +0 -1
  220. package/dist/esm/background-update/notification-manager.js.map +0 -1
  221. package/dist/esm/config/support.js.map +0 -1
  222. package/dist/esm/core/analytics.js.map +0 -1
  223. package/dist/esm/core/cache-manager.js.map +0 -1
  224. package/dist/esm/core/config.js.map +0 -1
  225. package/dist/esm/core/errors.js.map +0 -1
  226. package/dist/esm/core/event-emitter.js.map +0 -1
  227. package/dist/esm/core/logger.js.map +0 -1
  228. package/dist/esm/core/performance.js.map +0 -1
  229. package/dist/esm/core/plugin-manager.js.map +0 -1
  230. package/dist/esm/core/security.js.map +0 -1
  231. package/dist/esm/definitions.js.map +0 -1
  232. package/dist/esm/firestore/firestore-client.d.ts +0 -109
  233. package/dist/esm/firestore/firestore-client.js +0 -264
  234. package/dist/esm/firestore/firestore-client.js.map +0 -1
  235. package/dist/esm/firestore/index.d.ts +0 -11
  236. package/dist/esm/firestore/index.js +0 -11
  237. package/dist/esm/firestore/index.js.map +0 -1
  238. package/dist/esm/firestore/manifest-reader.d.ts +0 -87
  239. package/dist/esm/firestore/manifest-reader.js +0 -294
  240. package/dist/esm/firestore/manifest-reader.js.map +0 -1
  241. package/dist/esm/firestore/schema.d.ts +0 -507
  242. package/dist/esm/firestore/schema.js +0 -73
  243. package/dist/esm/firestore/schema.js.map +0 -1
  244. package/dist/esm/index.js.map +0 -1
  245. package/dist/esm/live-update/bundle-manager.js.map +0 -1
  246. package/dist/esm/live-update/certificate-pinning.js.map +0 -1
  247. package/dist/esm/live-update/delta-processor.js.map +0 -1
  248. package/dist/esm/live-update/download-manager.js.map +0 -1
  249. package/dist/esm/live-update/rollout-checker.js.map +0 -1
  250. package/dist/esm/live-update/update-manager.js.map +0 -1
  251. package/dist/esm/live-update/version-manager.js.map +0 -1
  252. package/dist/esm/plugin.js.map +0 -1
  253. package/dist/esm/security/crypto.js.map +0 -1
  254. package/dist/esm/security/validator.js.map +0 -1
  255. package/dist/esm/web.js.map +0 -1
  256. package/dist/plugin.cjs.js.map +0 -1
  257. package/dist/plugin.esm.js.map +0 -1
  258. package/dist/plugin.js.map +0 -1
  259. package/docs/FIREBASE_INTEGRATION_TRACKER.md +0 -321
  260. package/docs/FIREBASE_QUERIES_AND_INDEXES_AUDIT.md +0 -221
  261. package/docs/examples/firebase-backend-example.md +0 -27
  262. package/docs/guides/no-cost-backend-implementation-plan.md +0 -77
  263. package/docs/guides/no-cost-firestore-google-drive-backend.md +0 -60
  264. package/docs/play-console-rejection-rules.json +0 -428
  265. /package/docs/{MARKETING_WEBSITE_PLAN.md → archive/MARKETING_WEBSITE_PLAN.md} +0 -0
@@ -0,0 +1,184 @@
1
+ {
2
+ "feature": "Laravel + Nova Backend for Native Update",
3
+ "created": "2026-03-28",
4
+ "lastUpdated": "2026-03-28",
5
+ "status": "in_progress",
6
+ "estimatedWeeks": 5,
7
+ "currentPhase": 3,
8
+ "phases": [
9
+ {
10
+ "id": 1,
11
+ "name": "Laravel Project Setup",
12
+ "status": "completed",
13
+ "completedAt": "2026-03-28",
14
+ "estimatedDays": 5,
15
+ "tasks": [
16
+ { "task": "Create Laravel 11 project", "status": "completed" },
17
+ { "task": "Install and configure Nova 5", "status": "completed" },
18
+ { "task": "Configure MySQL database", "status": "completed", "note": "Using SQLite for dev, MySQL for production" },
19
+ { "task": "Set up Firebase token validation middleware", "status": "completed" },
20
+ { "task": "Configure S3/Cloudflare R2 storage", "status": "partial", "note": "Config added, needs keys" },
21
+ { "task": "Set up development environment (.env)", "status": "completed" }
22
+ ]
23
+ },
24
+ {
25
+ "id": 2,
26
+ "name": "Database Schema & Models",
27
+ "status": "completed",
28
+ "completedAt": "2026-03-28",
29
+ "estimatedDays": 4,
30
+ "tasks": [
31
+ { "task": "Create users migration and model", "status": "completed" },
32
+ { "task": "Create apps migration and model", "status": "completed" },
33
+ { "task": "Create builds migration and model", "status": "completed" },
34
+ { "task": "Create api_keys migration and model", "status": "completed" },
35
+ { "task": "Create subscriptions migration and model", "status": "completed" },
36
+ { "task": "Create device_activities migration and model", "status": "completed" },
37
+ { "task": "Create signing_keys migration and model", "status": "completed" },
38
+ { "task": "Set up model relationships", "status": "completed" }
39
+ ]
40
+ },
41
+ {
42
+ "id": 3,
43
+ "name": "API Endpoints",
44
+ "status": "in_progress",
45
+ "estimatedDays": 5,
46
+ "tasks": [
47
+ { "task": "Create ValidateApiKey middleware", "status": "completed" },
48
+ { "task": "Create ValidateFirebaseToken middleware", "status": "completed" },
49
+ { "task": "Create UpdateController (check for updates)", "status": "completed" },
50
+ { "task": "Create BundleController (upload, download)", "status": "completed" },
51
+ { "task": "Create AnalyticsController (MAU ping)", "status": "completed" },
52
+ { "task": "Create AppController (dashboard CRUD)", "status": "pending" },
53
+ { "task": "Create ApiKeyController (key management)", "status": "pending" },
54
+ { "task": "Create SubscriptionController (billing)", "status": "pending" },
55
+ { "task": "Set up API routes", "status": "completed" },
56
+ { "task": "Add rate limiting", "status": "pending" }
57
+ ]
58
+ },
59
+ {
60
+ "id": 4,
61
+ "name": "Stripe Integration",
62
+ "status": "partial",
63
+ "estimatedDays": 4,
64
+ "tasks": [
65
+ { "task": "Install Laravel Cashier", "status": "completed" },
66
+ { "task": "Configure Stripe API keys", "status": "pending", "note": "Config added, needs keys" },
67
+ { "task": "Create pricing plans in Stripe", "status": "pending" },
68
+ { "task": "Implement checkout session creation", "status": "pending" },
69
+ { "task": "Implement customer portal redirect", "status": "pending" },
70
+ { "task": "Create webhook handler", "status": "pending" },
71
+ { "task": "Handle subscription lifecycle events", "status": "pending" },
72
+ { "task": "Implement MAU overage billing", "status": "pending" }
73
+ ]
74
+ },
75
+ {
76
+ "id": 5,
77
+ "name": "Bundle Signing & Security",
78
+ "status": "completed",
79
+ "completedAt": "2026-03-28",
80
+ "estimatedDays": 4,
81
+ "tasks": [
82
+ { "task": "Create BundleSigningService", "status": "completed", "note": "In SigningKey model" },
83
+ { "task": "Implement RSA key pair generation", "status": "completed" },
84
+ { "task": "Implement RSA-PSS signing", "status": "completed" },
85
+ { "task": "Create SignedUrlService", "status": "completed", "note": "Using Laravel's built-in signed URLs" },
86
+ { "task": "Implement time-limited download URLs", "status": "completed" },
87
+ { "task": "Add device binding to URLs", "status": "completed" },
88
+ { "task": "Implement one-time download tokens", "status": "pending" },
89
+ { "task": "Add request signature validation (replay protection)", "status": "pending" }
90
+ ]
91
+ },
92
+ {
93
+ "id": 6,
94
+ "name": "Nova Admin Panel",
95
+ "status": "pending",
96
+ "estimatedDays": 4,
97
+ "tasks": [
98
+ { "task": "Create User Nova resource", "status": "completed", "note": "Auto-generated by Nova install" },
99
+ { "task": "Create App Nova resource", "status": "pending" },
100
+ { "task": "Create Build Nova resource", "status": "pending" },
101
+ { "task": "Create Subscription Nova resource", "status": "pending" },
102
+ { "task": "Create ApiKey Nova resource", "status": "pending" },
103
+ { "task": "Create Main dashboard (revenue, usage)", "status": "pending" },
104
+ { "task": "Add admin actions (suspend, adjust plan)", "status": "pending" },
105
+ { "task": "Add metrics cards and charts", "status": "pending" }
106
+ ]
107
+ },
108
+ {
109
+ "id": 7,
110
+ "name": "Plugin Updates",
111
+ "status": "pending",
112
+ "estimatedDays": 3,
113
+ "tasks": [
114
+ { "task": "Add apiKey to PluginInitConfig in definitions.ts", "status": "pending" },
115
+ { "task": "Add X-API-Key header to HTTP requests in plugin.ts", "status": "pending" },
116
+ { "task": "Add MAU ping endpoint call", "status": "pending" },
117
+ { "task": "Update iOS SecureStorage for API key", "status": "pending" },
118
+ { "task": "Update Android SecureStorage for API key", "status": "pending" },
119
+ { "task": "Update documentation", "status": "pending" }
120
+ ]
121
+ },
122
+ {
123
+ "id": 8,
124
+ "name": "Migration & Testing",
125
+ "status": "pending",
126
+ "estimatedDays": 5,
127
+ "tasks": [
128
+ { "task": "Write unit tests for API key validation", "status": "pending" },
129
+ { "task": "Write unit tests for bundle signing", "status": "pending" },
130
+ { "task": "Write unit tests for MAU calculation", "status": "pending" },
131
+ { "task": "Write integration tests for upload flow", "status": "pending" },
132
+ { "task": "Write integration tests for download flow", "status": "pending" },
133
+ { "task": "Write integration tests for Stripe flow", "status": "pending" },
134
+ { "task": "Create Firebase user sync script", "status": "pending" },
135
+ { "task": "Deploy to staging environment", "status": "pending" },
136
+ { "task": "Perform end-to-end testing", "status": "pending" },
137
+ { "task": "Deploy to production", "status": "pending" },
138
+ { "task": "Monitor and fix issues", "status": "pending" }
139
+ ]
140
+ }
141
+ ],
142
+ "decisions": {
143
+ "keepFirebaseAuth": true,
144
+ "keepGoogleDrive": "optional-free-tier",
145
+ "primaryStorage": "s3-or-r2",
146
+ "adminPanel": "laravel-nova",
147
+ "paymentProcessor": "stripe",
148
+ "mauTracking": "device-hash-monthly"
149
+ },
150
+ "pricingTiers": [
151
+ { "name": "Free", "price": 0, "mauLimit": 1000, "appsLimit": 1 },
152
+ { "name": "Pro", "price": 29, "mauLimit": 10000, "appsLimit": 5 },
153
+ { "name": "Enterprise", "price": 199, "mauLimit": 100000, "appsLimit": -1 }
154
+ ],
155
+ "securityFeatures": [
156
+ "api-key-authentication",
157
+ "firebase-token-validation",
158
+ "rsa-pss-bundle-signing",
159
+ "signed-download-urls",
160
+ "device-binding",
161
+ "rate-limiting",
162
+ "replay-attack-prevention"
163
+ ],
164
+ "completedToday": [
165
+ "Laravel 11 + Nova 5 project created in /backend",
166
+ "All database migrations created and run",
167
+ "All models with relationships created",
168
+ "API key validation middleware created",
169
+ "Firebase token validation middleware created",
170
+ "Update check API endpoint created",
171
+ "Bundle download API with signed URLs created",
172
+ "Analytics/MAU tracking API created",
173
+ "RSA key generation and signing in SigningKey model",
174
+ "Laravel Cashier, Firebase SDK, AWS SDK installed"
175
+ ],
176
+ "blockers": [],
177
+ "notes": [
178
+ "Nova license configured globally",
179
+ "Stripe API keys needed",
180
+ "Firebase service account JSON needed",
181
+ "S3/R2 bucket and keys needed",
182
+ "Current plugin already supports HTTP backend - minimal changes needed"
183
+ ]
184
+ }
@@ -1,36 +1,10 @@
1
1
  # Comprehensive Testing Guide
2
2
 
3
- This guide covers all testing approaches for the Capacitor Native Update plugin.
3
+ This guide covers the manual and on-device testing approaches for the Capacitor Native Update plugin. Verification is done in actual/live apps using the plugin rather than an automated JS test runner.
4
4
 
5
5
  ## Testing Levels
6
6
 
7
- ### 1. Unit Testing
8
-
9
- The plugin includes unit tests for core functionality:
10
-
11
- ```bash
12
- # Run all tests
13
- yarn test
14
-
15
- # Run with coverage
16
- yarn test:coverage
17
-
18
- # Watch mode for development
19
- yarn test:watch
20
- ```
21
-
22
- #### Test Structure
23
-
24
- ```
25
- src/__tests__/
26
- ├── security.test.ts # Security validation tests
27
- ├── version-manager.test.ts # Version comparison tests
28
- ├── bundle-manager.test.ts # Bundle management tests
29
- ├── config.test.ts # Configuration tests
30
- └── integration.test.ts # Integration tests
31
- ```
32
-
33
- ### 2. Integration Testing
7
+ ### 1. Integration Testing
34
8
 
35
9
  #### Web Platform Testing
36
10
 
@@ -103,7 +77,7 @@ src/__tests__/
103
77
  - In-app update UI
104
78
  - Rollback functionality
105
79
 
106
- ### 3. Security Testing
80
+ ### 2. Security Testing
107
81
 
108
82
  #### Certificate Validation
109
83
  ```typescript
@@ -130,7 +104,7 @@ const isValid = await NativeUpdate.validateUpdate({
130
104
  });
131
105
  ```
132
106
 
133
- ### 4. Performance Testing
107
+ ### 3. Performance Testing
134
108
 
135
109
  #### Download Performance
136
110
  ```typescript
@@ -146,7 +120,7 @@ NativeUpdate.addListener('downloadProgress', (progress) => {
146
120
  - Test with large bundles (50MB+)
147
121
  - Verify cleanup of old bundles
148
122
 
149
- ### 5. End-to-End Testing
123
+ ### 4. End-to-End Testing
150
124
 
151
125
  #### Complete Update Cycle
152
126
 
@@ -189,7 +163,7 @@ NativeUpdate.addListener('downloadProgress', (progress) => {
189
163
  }
190
164
  ```
191
165
 
192
- ### 6. Error Handling Testing
166
+ ### 5. Error Handling Testing
193
167
 
194
168
  #### Network Failures
195
169
  ```typescript
@@ -211,7 +185,7 @@ await NativeUpdate.download({
211
185
  });
212
186
  ```
213
187
 
214
- ### 7. Rollback Testing
188
+ ### 6. Rollback Testing
215
189
 
216
190
  ```typescript
217
191
  // Test rollback mechanism
@@ -228,7 +202,7 @@ async function testRollback() {
228
202
  }
229
203
  ```
230
204
 
231
- ### 8. Platform-Specific Testing
205
+ ### 7. Platform-Specific Testing
232
206
 
233
207
  #### iOS Specific
234
208
  - Test with different iOS versions (13+)
@@ -242,26 +216,26 @@ async function testRollback() {
242
216
  - Test notification permissions
243
217
  - Check WorkManager scheduling
244
218
 
245
- ### 9. Automated Testing
219
+ ### 8. Automated Verification
246
220
 
247
221
  #### CI/CD Integration
248
222
  ```yaml
249
- # .github/workflows/test.yml
250
- name: Test
223
+ # .github/workflows/ci.yml
224
+ name: CI
251
225
  on: [push, pull_request]
252
226
 
253
227
  jobs:
254
- test:
228
+ build:
255
229
  runs-on: ubuntu-latest
256
230
  steps:
257
231
  - uses: actions/checkout@v2
258
232
  - uses: actions/setup-node@v2
259
233
  - run: yarn install
260
- - run: yarn test
261
- - run: yarn test:e2e
234
+ - run: yarn lint
235
+ - run: yarn build
262
236
  ```
263
237
 
264
- ### 10. Manual Testing Checklist
238
+ ### 9. Manual Testing Checklist
265
239
 
266
240
  - [ ] **Configuration**
267
241
  - [ ] Valid HTTPS URL required
@@ -0,0 +1,41 @@
1
+ # Package Audit
2
+
3
+ Per R-010 (Clean package.json). Records unused dependencies removed and the reason.
4
+
5
+ **Last audited:** 2026-04-25
6
+
7
+ ## Root (`package.json`)
8
+
9
+ All listed dependencies and devDependencies are imported somewhere in the build pipeline (Rollup, TypeScript, ESLint). No removals.
10
+
11
+ ## Website (`website/package.json`)
12
+
13
+ | Package | Version | Action | Reason |
14
+ |---|---|---|---|
15
+ | `react-syntax-highlighter` | ^16.1.1 | **Removed** | Not imported anywhere in `website/src/`. The docs markdown page uses `react-markdown` + `remark-gfm` for rendering. Code highlighting is not currently a feature. Re-add when needed for code-fenced content. |
16
+ | `@types/react-syntax-highlighter` | ^15.5.13 | **Removed** | Unused (paired with the package above). |
17
+
18
+ After removal, run `yarn install` in `website/` to update `yarn.lock`. Until then, the lockfile keeps the (no-longer-listed) entries — harmless but tidy with the next install.
19
+
20
+ All other website deps verified imported:
21
+ - Capacitor + Capawesome plugins → used by mobile build flow
22
+ - Radix UI primitives → used in `src/components/ui/*` and across pages
23
+ - `framer-motion` → used in 11 files
24
+ - `lucide-react` → used in 32 files
25
+ - `jszip` → used by bundle upload service
26
+ - `d3` + `@types/d3` → present for chart rendering (admin/dashboard analytics)
27
+ - `firebase`, `react-hook-form`, `zod`, `@hookform/resolvers`, `react-router-dom`, `react-markdown`, `remark-gfm`, `tailwind-merge`, `class-variance-authority`, `clsx`, `zustand` → all imported
28
+
29
+ ## CLI (`cli/package.json`)
30
+
31
+ All deps are CLI-essential (`commander`, `chalk`, `ora`, `axios`, `archiver`, etc.). No removals.
32
+
33
+ ## Backend (`backend/package.json`)
34
+
35
+ Tiny dev-only package.json (Vite + Tailwind + Laravel Vite plugin). No removals. Note: `package-lock.json` removed in this run per yarn-only policy. Run `yarn install` in `backend/` to generate `yarn.lock` if backend is actively developed.
36
+
37
+ ## Example apps
38
+
39
+ - `react-capacitor`: Capacitor + React deps. Verified.
40
+ - `node-express`: Express + dotenv. Verified.
41
+ - `firebase-backend`: Firebase Admin + Express. Verified.
@@ -0,0 +1,5 @@
1
+ # ASO Metadata — Native Update (Internal Reference)
2
+
3
+ Populate via `~/.claude/rules/play-store-submission.md` (Phase 3) when preparing a release.
4
+
5
+ Internal brand/ASO reference — keywords, competitor analysis, category strategy. Not store-facing copy.
@@ -0,0 +1,5 @@
1
+ # Data Safety — Native Update
2
+
3
+ Populate via `~/.claude/rules/play-store-submission.md` (Phase 2) when preparing a release.
4
+
5
+ Full Data Safety form answers: data types collected, required/optional, shared/not shared, purposes, encryption-in-transit, deletion URL.
@@ -0,0 +1,5 @@
1
+ # Play App-Content Declarations — Native Update
2
+
3
+ Populate via `~/.claude/rules/play-store-submission.md` (Phase 2) when preparing a release.
4
+
5
+ All 10 declarations must be answered from the real Phase-0 code audit before any Play Console submission.
@@ -0,0 +1,27 @@
1
+ # Play Store Docs — Native Update
2
+
3
+ Start here. Every Play Store submission file is linked below.
4
+
5
+ **App:** Native Update · `com.aoneahsan.nativeupdate` · v3.0.1
6
+ **Play Store:** https://play.google.com/store/apps/details?id=com.aoneahsan.nativeupdate
7
+ **Full spec:** `~/.claude/rules/play-store-submission.md`
8
+
9
+ ---
10
+
11
+ ## Files in this folder
12
+
13
+ | File | Purpose |
14
+ |------|---------|
15
+ | [RELEASE-NOTES.md](./RELEASE-NOTES.md) | **Play Store "What's New" — open this first.** Per-version release notes, latest-first. Copy the latest entry into Play Console. |
16
+ | [STORE-LISTING.md](./STORE-LISTING.md) | App title, short description, full description. |
17
+ | [DECLARATIONS.md](./DECLARATIONS.md) | All 10 Play "App content" declarations (answer key). |
18
+ | [DATA-SAFETY.md](./DATA-SAFETY.md) | Data Safety form answers. |
19
+ | [RELEASE-STEPS.md](./RELEASE-STEPS.md) | User-only build + Play Console upload steps. |
20
+ | [SUBMISSION-CHECKLIST.md](./SUBMISSION-CHECKLIST.md) | Pre-upload checklist. |
21
+ | [ASO-METADATA.md](./ASO-METADATA.md) | Internal brand/ASO reference (not store-facing). |
22
+
23
+ ## Related
24
+
25
+ - **Raw image assets:** `app-publish-assets/` (icons, feature graphics, screenshots) — _not yet created; see `~/.claude/rules/play-store-submission.md` Phase 5._
26
+ - **Resumable tracker:** `docs/features/play-store-submission/00-tracker.json` — _not yet created._
27
+ - **Developer changelog:** [docs/CHANGELOG.md](../CHANGELOG.md)
@@ -0,0 +1,99 @@
1
+ # Release Notes — Native Update (Play Store "What's New")
2
+
3
+ Per-version Play Store release notes, latest-first.
4
+ Single source of truth — copy the latest entry into the Play Console "What's New" field (≤500 chars).
5
+
6
+ Related: developer changelog at [docs/CHANGELOG.md](../CHANGELOG.md).
7
+
8
+ ---
9
+
10
+ ## v3.1.0 — July 2026
11
+
12
+ - Faster update checks: server hot path optimized (deferred analytics writes, cached build lookup, covering index).
13
+ - Web platform no longer re-downloads a bundle to validate it after download.
14
+ - Modern package exports map — cleaner imports in every bundler, deep imports still work.
15
+ - Faster website landing page (animation engine now loads in the background).
16
+ - Maintenance: analytics data pruning, dependency/config cleanup, documentation fixes.
17
+
18
+ ---
19
+
20
+ ## v3.0.1 — May 2026
21
+
22
+ - New public documentation site at docs.nativeupdate.aoneahsan.com (58 pages: SDK reference, CLI, backend, tutorials).
23
+ - Security checklist and performance benchmark docs added.
24
+ - CI workflow now builds, signs, and publishes an example OTA bundle on every GitHub Release.
25
+ - Example app demonstrates App Update, App Review, and Background Update features.
26
+ - Minor website fix: removed a stale example card that linked to a deleted directory.
27
+
28
+ ---
29
+
30
+ ## v3.0.0 — May 2026
31
+
32
+ - Backend simplified: Firestore backend removed. Plugin now speaks HTTP to a single backend (serverUrl + apiKey).
33
+ - Breaking: apps using the Firestore branch must migrate to serverUrl — see MIGRATION.md.
34
+ - Website dashboard auth migrated to Laravel Socialite (Google OAuth) + Sanctum bearer tokens.
35
+
36
+ ---
37
+
38
+ ## v2.0.0 — April 2026
39
+
40
+ - Boot-time bundle re-verification: on every cold start the plugin re-hashes the active OTA bundle. Mismatch triggers automatic rollback.
41
+ - Channel-based encryption removed; signature + checksum verification is the integrity model.
42
+ - setUpdateUrl() deprecated (no-op); pass serverUrl to initialize() instead.
43
+
44
+ ---
45
+
46
+ ## v1.4.9 — March 2026
47
+
48
+ - Firestore-backed manifest reads via backendType: 'firestore'.
49
+ - Secure manifest lookup via apiKeys/{apiKey}/manifests/{channel}.
50
+ - No-cost backend guide: website + Firestore + Google Drive.
51
+
52
+ ---
53
+
54
+ ## v1.4.5 — February 2026
55
+
56
+ - All dependencies updated to latest versions.
57
+ - Full verification suite passing (81 tests, 0 lint warnings).
58
+ - Android Gradle build verified. Release-ready state confirmed.
59
+
60
+ ---
61
+
62
+ ## v1.0.7 — January 2025
63
+
64
+ - Fixed critical Android build issues: Google Play app-update library version pinned to 2.1.0.
65
+ - Resolved kotlinVersion resolution errors.
66
+ - All Google Play Services dependencies now use explicit versions.
67
+
68
+ ---
69
+
70
+ ## v1.0.6 — January 2025
71
+
72
+ - Android build fixes: corrected Play app-update library version, fixed kotlinVersion MissingPropertyException.
73
+ - Documentation corrections: API method signatures, event names, and broken links fixed.
74
+
75
+ ---
76
+
77
+ ## v1.4.0 — January 2025
78
+
79
+ - Complete TypeScript rewrite with strict typing and modular architecture.
80
+ - Comprehensive error handling, security validation framework, and bundle management.
81
+ - Background update support. Plugin initialization system.
82
+
83
+ ---
84
+
85
+ ## v0.0.2 — December 2024
86
+
87
+ - Bundle signing and security utilities.
88
+ - CI/CD pipeline with GitHub Actions.
89
+ - Example update-server implementation. TypeScript strict mode. ESLint v9 flat config.
90
+
91
+ ---
92
+
93
+ ## v0.0.1 — January 2024
94
+
95
+ - Initial release.
96
+ - Live/OTA update: download, bundle management, update strategies (immediate, background, manual), delta updates, automatic rollback, update channels, end-to-end encryption, SHA-256/512 checksums.
97
+ - Native app update: Play Store version checking, immediate and flexible update flows, direct app store navigation.
98
+ - In-app review: native review prompts with smart triggering and rate limiting.
99
+ - iOS (Swift) and Android (Kotlin) implementations. Web fallback.
@@ -0,0 +1,6 @@
1
+ # Release Steps — Native Update (User-Only)
2
+
3
+ Populate via `~/.claude/rules/play-store-submission.md` (Phase 6) when preparing a release.
4
+
5
+ This file lists user-only build + Play Console upload steps (commands and clicks, not release-note text).
6
+ The agent prepares all data, copy, and assets; the user performs the signed AAB build + Play Console upload.
@@ -0,0 +1,7 @@
1
+ # Store Listing — Native Update
2
+
3
+ Populate via `~/.claude/rules/play-store-submission.md` (Phase 3) when preparing a release.
4
+
5
+ Includes: app name (≤30 chars), short description (≤80 chars), full description, and a link to RELEASE-NOTES.md for "What's New".
6
+
7
+ See [RELEASE-NOTES.md](./RELEASE-NOTES.md) for the latest "What's New" entry.
@@ -0,0 +1,5 @@
1
+ # Submission Checklist — Native Update
2
+
3
+ Populate via `~/.claude/rules/play-store-submission.md` (Phase 7) when preparing a release.
4
+
5
+ Pre-upload checklist covering: permissions, store listing, declarations, assets, legal pages, and release build.
@@ -29,7 +29,7 @@
29
29
  > - Private key management (for bundle signing)
30
30
  > - Encryption key management (for encrypted bundles)
31
31
  >
32
- > **GETTING STARTED**: See the example backends in `/example-apps/node-express` and `/example-apps/firebase-backend` for reference implementations.
32
+ > **GETTING STARTED**: For reference implementations see [`/example-apps/node-express`](../example-apps/node-express) (lean Node.js / Express reference) and [`/backend`](../backend) (Laravel 13 + Nova canonical SaaS backend powering the hosted Native Update service — usable as managed or self-hosted).
33
33
 
34
34
  This comprehensive checklist ensures your Capacitor Native Update implementation is ready for production deployment. Follow these guidelines to deliver a secure, reliable, and performant update system.
35
35
 
@@ -0,0 +1,123 @@
1
+ # Native Update — Project Finalization Plan
2
+
3
+ **Date opened:** 2026-05-16
4
+ **Goal:** Get the Native Update repo (plugin + website + backend + Android wrap) production-ready for a fresh Google Play Store listing of the website wrapped via Capacitor, with the marketing site live, the Laravel SaaS backend deploy-ready, and the NPM plugin shippable.
5
+
6
+ **Audit owner:** Claude (Opus 4.7) in continuous-batch mode under the user's `01-code` workspace rules.
7
+
8
+ ---
9
+
10
+ ## What the user asked for
11
+
12
+ 1. **Audit the entire project**, ignoring the previous audit's 7-day cooldown.
13
+ 2. **Fix everything** that's wrong, missing, or partial — no TODOs, no "coming soon", no deferred items.
14
+ 3. **Complete every feature** end-to-end across web, Android, backend, and plugin.
15
+ 4. **Polish UI/UX** for the website + admin/dashboard so the Android wrap feels native.
16
+ 5. **Confirm SEO/AEO** + static content quality on the marketing site.
17
+ 6. **Comply with the Generic Project Rules master prompt** at `~/Documents/ahsan-notebook/static/assets/txt-files-important/generic-project-rules.md` where they apply to this project.
18
+ 7. **Batch the work** at 40–60 minutes per batch with 1–3 tasks each, validation + verification + commit + push per batch.
19
+ 8. **Resume-safe** with markdown plans + JSON tracker + per-batch session reports.
20
+ 9. **Use the right skills** at every batch boundary (planning, working, validating).
21
+
22
+ ## Key user-confirmed constraints
23
+
24
+ | Constraint | Value |
25
+ |---|---|
26
+ | Android publish target | **The website wrapped via Capacitor** (NEW Play Store listing, fresh keystore). NOT example-apps. |
27
+ | Backend deployment | **Deploy-ready only** — code complete, runbook clean, user does the actual deploy. |
28
+ | Auth verification | **First batch** — Google OAuth + Sanctum + Spatie RBAC was just swapped (commit 8eaf4de, 2026-05-11). Verify end-to-end. |
29
+ | Play Console state | **Fresh listing** — no existing keystore reuse. |
30
+
31
+ ---
32
+
33
+ ## Scope: what's in / out
34
+
35
+ ### IN scope this run
36
+
37
+ - **`backend/`** (Laravel 11 + Nova 5 + Sanctum + Spatie + Socialite) — deploy-readiness fixes, tests for the new auth, FormRequest consistency, stale Firebase reference cleanup.
38
+ - **`website/`** (React + Vite + Radix + TanStack Query + Capacitor 8.3.1) — ESLint hooks-rules fixes, Capacitor Preferences token storage, admin page TanStack-Query migration, console.* cleanup, Play-Store metadata cleanup, signing config + ProGuard, branded icons, SEO date refresh, legal page refresh.
39
+ - **Root plugin (`src/`, `android/`, `ios/`)** — integration test localStorage fix, version + JSON-LD sync.
40
+ - **Play Store launch assets** under `website/app-publish-assets/` — Firestore references purged, screenshots-capture runbook documented.
41
+ - **Master CLAUDE.md + AGENTS.md** synchronisation at root and `website/`.
42
+
43
+ ### OUT of scope this run
44
+
45
+ - Actual `firebase deploy` of the website (user does it after batches close).
46
+ - Actual production-host SSH deploy of Laravel (deploy-ready only).
47
+ - Generating real screenshot PNGs (user captures from a running emulator/device).
48
+ - Generating a release keystore file (user does that locally with `keytool`).
49
+ - iOS publishing (Android is the only platform requested this session).
50
+ - Docs site at `native-update-docs/` (closed-out 2026-05-11, separate cooldown).
51
+
52
+ ---
53
+
54
+ ## Batch summary
55
+
56
+ 10 batches, each 40–60 min, 1–4 concrete tasks. Full task list with file paths in [`01-BATCH-PLAN.md`](./01-BATCH-PLAN.md).
57
+
58
+ | # | Batch | Focus | Verification |
59
+ |---|---|---|---|
60
+ | 1 | Auth + critical backend fixes | Sanctum expiry, `/me` gating, LOG_LEVEL, stale Firebase comments | `php artisan test` green |
61
+ | 2 | Website build fixes | 4 ESLint hooks-rules errors + 9 plugin test failures | `yarn build` + `yarn lint` + `yarn test:run` green |
62
+ | 3 | Auth token via Capacitor Preferences | Token storage swap, 401 auto-redirect | yarn typecheck + manual auth walkthrough |
63
+ | 4 | Backend coverage tests | OAuth, Sanctum, Roles tests + UpdateBuildRequest FormRequest | `php artisan test` higher count, all green |
64
+ | 5 | Admin pages → TanStack Query | 3 admin pages + 2 dashboard pages | yarn build clean, query keys consistent |
65
+ | 6 | Console.* cleanup | 2 ExamplesPage call sites + Firebase comment sweep | grep proves zero real violations |
66
+ | 7 | Play Store metadata + legal pages | Strip Firestore refs, refresh Privacy/Terms/Cookies/Security | grep zero "firestore" in metadata + legal |
67
+ | 8 | Android signing + ProGuard + build guide | build.gradle signing block, minifyEnabled, BUILD_FOR_PLAY_STORE.md | `./gradlew assembleDebug` clean |
68
+ | 9 | App icons + splash + screenshot guide | Branded mipmap-* icons, splash bg, screenshot capture runbook | `cap sync` + visual check |
69
+ | 10 | SEO refresh + final verification + audit closure | Dates bump, JSON-LD version sync, sitemap regen, CLAUDE.md update | All 3 build commands green |
70
+
71
+ ---
72
+
73
+ ## Skills invoked per phase
74
+
75
+ Per RULE #0 (highest priority), the matching skill is invoked **before** any code edits in each phase:
76
+
77
+ | Phase | Skills |
78
+ |---|---|
79
+ | Planning (this doc) | `writing-plans`, `stack-audit` |
80
+ | Batch 1 — auth + backend | `laravel-specialist`, `firebase-auth-basics` (legacy ref check), `security-best-practices` |
81
+ | Batch 2 — build fixes | `react-best-practices`, `react-19` (rules-of-hooks), `vitest` |
82
+ | Batch 3 — Capacitor Preferences | `capacitor-best-practices`, `capacitor-plugins`, `capacitor-offline-first` |
83
+ | Batch 4 — backend tests | `laravel-specialist`, `security-best-practices` |
84
+ | Batch 5 — TanStack migration | `tanstack-query-best-practices`, `react-best-practices` |
85
+ | Batch 6 — console cleanup | (trivial — covered by file-edit pre-check) |
86
+ | Batch 7 — metadata + legal | `copywriting`, `web-design-guidelines` |
87
+ | Batch 8 — Android signing | `capacitor-app-store`, `capacitor-android`, `security-best-practices` |
88
+ | Batch 9 — icons + splash | `capacitor-splash-screen`, `frontend-design` |
89
+ | Batch 10 — SEO closure | `ai-seo`, `seo`, `stack-audit` |
90
+
91
+ ---
92
+
93
+ ## Resume contract
94
+
95
+ If this conversation is compacted or restarted:
96
+
97
+ 1. Read `docs/tracking/finalization-2026-05-16-tracker.json` (single source of truth for resume state).
98
+ 2. Find the lowest-numbered batch with `status != "completed"` in `batches[]`. That's where we resume.
99
+ 3. Read this plan (`00-FINALIZATION-PLAN.md`) + the batch plan (`01-BATCH-PLAN.md`) + the matching session report under `sessions/`.
100
+ 4. Invoke the matching skills for the batch domain (per the table above).
101
+ 5. Apply the batch's fixes per `01-BATCH-PLAN.md`.
102
+ 6. Run that batch's verification command list.
103
+ 7. ONE commit per batch with the message specified in the batch plan.
104
+ 8. Update the tracker (`status: "completed"`, `completed_at: today`, append `runHistory[]` row with commit SHA + 2–3 line summary).
105
+ 9. Write the session report under `docs/project-audit/2026-05-16/sessions/batch-NN.md`.
106
+
107
+ Do **NOT** redo batches that are already `status: "completed"`. The tracker is authoritative — trust it.
108
+
109
+ ---
110
+
111
+ ## Definition of done (whole audit)
112
+
113
+ - All 10 batches `status: "completed"` in the tracker
114
+ - `yarn build` (root + website) returns exit 0 with no warnings beyond the documented 3rd-party suppressions
115
+ - `yarn lint` (root + website) returns exit 0
116
+ - `yarn test:run` (root) returns all-green
117
+ - `php artisan test` (backend) returns all-green with strictly more tests than the baseline
118
+ - `./gradlew assembleDebug` (website/android) returns success
119
+ - A signed `app-release.aab` can be produced by following `website/BUILD_FOR_PLAY_STORE.md` (user runs this step)
120
+ - Zero `console.*` calls outside `src/utils/logger.ts` / `src/lib/logger.ts` (excluding doc code blocks)
121
+ - Zero `Firestore` / `Firebase Auth` references in `app-publish-assets/` and current legal pages
122
+ - Updated portfolio info file, CLAUDE.md + AGENTS.md, and tracker close-out
123
+ - ONE commit per batch, all pushed to `main`