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,167 @@
1
+ # Packages — Native Update
2
+
3
+ > Inventory of every package this project depends on and where it's used.
4
+ > Fixed path (all projects): docs/PACKAGES.md. Update on EVERY add/remove/upgrade.
5
+ > Last updated: 2026-06-19 | Fleet pass: 2026-06-19 (absolute-latest + Node ≥24.16.0; cooldown OFF)
6
+
7
+ ## package.json / composer.json units (in scope)
8
+
9
+ - `package.json` (root) — Published Capacitor plugin (`native-update`) + bundled CLI. Build: `tsc` → Rollup.
10
+ - `website/package.json` — React 19 + Vite 8 + Tailwind v4 + Radix marketing site + dashboard.
11
+ - `cli/package.json` (`native-update-cli`) — CLI shipped via the root `bin`; deps also resolve from root when published.
12
+ - `backend/package.json` — Laravel Vite asset build (JS tooling). `backend/composer.json` — Laravel 13 + Nova 5 (PHP).
13
+
14
+ **Out of scope:** `example-apps/**` (demo apps — fleet rule: skip), `backend/vendor/**` (Composer vendor).
15
+
16
+ **Engines:** every unit pins `node >=24.16.0` (user directive 2026-06-19). The published plugin therefore requires Node ≥24.16 in consumer toolchains. PHP floor raised to `^8.3` (Laravel 13).
17
+
18
+ ---
19
+
20
+ ## Root plugin (`native-update`)
21
+
22
+ ### Production deps — the bundled CLI's runtime deps (root `bin: cli/index.js`)
23
+ | Package | Version | Used where | Notes |
24
+ |---|---|---|---|
25
+ | archiver | ^8.0.0 | `cli/commands/bundle-create.js` | ZIP bundle creation |
26
+ | chalk | ^5.6.2 | `cli/index.js`, all `cli/commands/*.js` | Colored output |
27
+ | commander | ^15.0.0 | `cli/index.js` | CLI arg parsing (14→15; needs Node ≥22.12, OK under ≥24.16) |
28
+ | express | ^5.2.1 | `cli/commands/server-start.js` | Local test/manifest server |
29
+ | ora | ^9.4.0 | `cli/commands/{backend-create,monitor}.js` | Spinners |
30
+ | prompts | ^2.4.2 | `cli/commands/init.js` | Interactive init |
31
+
32
+ > Plugin TS (`src/**`) imports only `@capacitor/core`, `@capacitor/filesystem`, `@capacitor/preferences` — all Rollup `external`; core is the lone peer. Not bundled.
33
+
34
+ ### Dev deps
35
+ | Package | Version | Notes |
36
+ |---|---|---|
37
+ | @capacitor/app | ^8.1.0 | Capacitor 8 lockstep (referenced in src/build context) |
38
+ | @capacitor/core | ^8.4.1 | `src/**` peer + type-check |
39
+ | @capacitor/device | ^8.0.2 | Capacitor 8 lockstep |
40
+ | @capacitor/filesystem | ^8.1.2 | `src/**` (external) |
41
+ | @capacitor/preferences | ^8.0.1 | `src/**` (external) |
42
+ | @rollup/plugin-node-resolve | ^16.0.3 | `rollup.config.js` |
43
+ | @rollup/plugin-terser | ^1.0.0 | `rollup.config.js` |
44
+ | @types/node | ^26.0.0 | tsconfig node typings |
45
+ | @typescript-eslint/eslint-plugin · parser | ^8.61.1 | `eslint.config.js` |
46
+ | eslint | ^10.5.0 | `yarn lint` |
47
+ | prettier | ^3.8.4 | `yarn prettier` |
48
+ | rimraf | ^6.1.3 | `build`/`clean` scripts |
49
+ | rollup | ^4.62.0 | `build` |
50
+ | typescript | ^6.0.3 | `build`/`tsc` |
51
+
52
+ ### Peer deps
53
+ | Package | Version | Notes |
54
+ |---|---|---|
55
+ | @capacitor/core | ^8.0.1 | Provided by the consumer app |
56
+
57
+ ---
58
+
59
+ ## website/ (React 19 + Vite 8 + Tailwind v4)
60
+
61
+ ### Production deps
62
+ | Package | Version | Used where |
63
+ |---|---|---|
64
+ | @amplitude/analytics-browser | ^2.44.1 | `src/lib/analytics.ts` |
65
+ | @capacitor/android · cli · core · ios | ^8.4.1 | native build / `cap:sync` |
66
+ | @capacitor/motion | ^8.0.0 | `src/services/capacitor/motion.service.ts` |
67
+ | @capacitor/preferences | ^8.0.1 | token/theme storage |
68
+ | @capacitor/privacy-screen | ^2.0.1 | `src/services/capacitor/privacy-screen.service.ts` |
69
+ | @capacitor/share | ^8.0.1 | `src/services/capacitor/share.service.ts` |
70
+ | @capawesome/capacitor-app-shortcuts | ^8.0.1 | `src/services/capacitor/app-shortcuts.service.ts` |
71
+ | @hookform/resolvers | ^5.4.0 | RHF + Zod (UploadPage) |
72
+ | @microsoft/clarity | ^1.0.2 | `src/lib/errorTracking.ts` |
73
+ | @radix-ui/react-{dialog,icons,select,slider,slot,switch} | various | UI components |
74
+ | @sentry/react | ^10.58.0 | `src/lib/errorTracking.ts` |
75
+ | @tanstack/react-query | ^5.101.0 | `src/App.tsx` + hooks |
76
+ | @types/d3 | ^7.4.3 | type-only for `d3` (kept; see ambiguous) |
77
+ | axios | ^1.18.0 | `src/lib/api.ts` |
78
+ | class-variance-authority / clsx / tailwind-merge | — | UI utils |
79
+ | d3 | ^7.9.0 | `src/pages/ExamplesPage.tsx` |
80
+ | framer-motion | 12.40.0 | **PINNED exact** (see pins) |
81
+ | jszip | ^3.10.1 | `src/services/manifest-generator.ts` |
82
+ | lucide-react | ^1.21.0 | icons |
83
+ | react / react-dom | ^19.2.7 | app-wide |
84
+ | react-hook-form | ^7.79.0 | UploadPage |
85
+ | react-markdown / remark-gfm | — | DocsMarkdownPage |
86
+ | react-router-dom | ^7.18.0 | `src/router.tsx` |
87
+ | zod | ^4.4.3 | validation |
88
+ | zustand | ^5.0.14 | `src/stores/themeStore.ts` |
89
+
90
+ ### Dev deps
91
+ | Package | Version | Notes |
92
+ |---|---|---|
93
+ | @tailwindcss/vite | ^4.3.1 | `vite.config.ts` — the ONLY Tailwind path now |
94
+ | @trapezedev/configure | ^7.1.4 | `sync:apps-config` |
95
+ | @types/node | ^26.0.0 | `tsconfig.node.json` |
96
+ | @types/react · @types/react-dom | ^19.2.x | typings |
97
+ | @vitejs/plugin-react | ^6.0.2 | `vite.config.ts` |
98
+ | eslint + eslint-plugin-react-hooks + eslint-plugin-react-refresh + typescript-eslint + globals | — | lint |
99
+ | tailwindcss | ^4.3.1 | resolves `@import "tailwindcss"` |
100
+ | tsx | ^4.22.4 | runs `postbuild-seo.ts` (added so build doesn't `npx`-fetch) |
101
+ | typescript | ~6.0.3 | `tsc -b` (typecheck gate) |
102
+ | vite | ^8.0.16 | build/dev |
103
+
104
+ ---
105
+
106
+ ## cli/ (`native-update-cli`)
107
+ Now self-contained (previously declared only `commander`, but imports more):
108
+ | Package | Version | Used where |
109
+ |---|---|---|
110
+ | archiver ^8.0.0 · chalk ^5.6.2 · commander ^15.0.0 · express ^5.2.1 · ora ^9.4.0 · prompts ^2.4.2 | — | `cli/index.js` + `cli/commands/*.js` |
111
+
112
+ ---
113
+
114
+ ## backend/ — Composer (PHP, Laravel 13 + Nova 5)
115
+ | Package | Version | Notes |
116
+ |---|---|---|
117
+ | php | ^8.3 | raised from ^8.2 for Laravel 13 |
118
+ | laravel/framework | ^13.0 (13.16.1) | 11→13; fixes 3 security advisories (CRLF email / signed-URL) |
119
+ | laravel/nova | ^5.8 | supports Laravel 13 |
120
+ | laravel/sanctum | ^4.3 | dashboard bearer tokens |
121
+ | laravel/socialite | ^5.27 | Google OAuth |
122
+ | laravel/tinker | ^3.0 | 2→3 (needed for L13) |
123
+ | spatie/laravel-permission | ^8.0 | 6→8 — **RBAC: re-run migrations + Pest before deploy** |
124
+ | srmklive/paypal | ^3.1 | unlocked by L13 (was stuck at 3.0.40) |
125
+ | google/apiclient | ^2.15 | Drive API |
126
+ | phpunit/phpunit (dev) | ^12.0 | 11→12 |
127
+
128
+ ## backend/ — npm (Vite asset build)
129
+ | Package | Version | Notes |
130
+ |---|---|---|
131
+ | @tailwindcss/postcss + postcss | ^4.3.1 / ^8.5.15 | backend uses the postcss Tailwind path (no @tailwindcss/vite here) — KEPT |
132
+ | tailwindcss | ^4.3.1 | `tailwind.config.js` |
133
+ | axios | ^1.18.0 | `resources/js/bootstrap.js` |
134
+ | concurrently | ^10.0.3 | composer `dev` script — KEPT |
135
+ | laravel-vite-plugin | ^3.1.0 | `vite.config.js` |
136
+ | vite | ^8.0.16 | build/dev |
137
+
138
+ ---
139
+
140
+ ## Intentional pins / floors
141
+ | Item | Value | Reason |
142
+ |---|---|---|
143
+ | framer-motion | 12.40.0 exact (website) | Pre-existing exact pin; held to avoid animation-runtime regressions. |
144
+ | @capacitor/* | ^8.x (all units) | Capacitor major lockstep. |
145
+ | node engine | >=24.16.0 (all units) | User directive 2026-06-19 — unblocks commander@15 + latest majors. |
146
+ | php | ^8.3 (backend) | Laravel 13 minimum. |
147
+
148
+ ## Removed in cleanup
149
+ | Date | Package | unit | Why |
150
+ |---|---|---|---|
151
+ | 2026-06-19 | @capacitor/android, @capacitor/ios | root dev | A plugin's TS never imports native runtime packages (only core/filesystem/preferences); confirmed unused. |
152
+ | 2026-06-19 | @tailwindcss/postcss, postcss (+ `postcss.config.js`) | website dev | Redundant — Tailwind already runs via `@tailwindcss/vite`; the postcss path double-processed it. |
153
+ | 2026-06-18 | @rollup/plugin-json | root dev | Not used by `rollup.config.js`. |
154
+ | 2026-06-18 | 8× unused `@radix-ui/react-*` | website prod | No imports in `src/` (accordion, dropdown-menu, label, navigation-menu, scroll-area, separator, tabs, tooltip). |
155
+ | 2026-06-18 | autoprefixer | backend dev | Tailwind v4 handles prefixing. |
156
+
157
+ ## Ambiguous / kept
158
+ | Package | Why |
159
+ |---|---|
160
+ | @types/d3 (website) | Type-only; consumed implicitly for `d3`. Kept (lives in deps; left as-is). |
161
+
162
+ ## Build (re-measured 2026-06-19 — all <60s; outputs preserved)
163
+ The website's `tsc -b` was moved **out of `build`** into the `typecheck` gate (was the ~80s bottleneck), so the three checks are now independent and each green:
164
+ - **Root**: `yarn build` (rimraf + tsc + rollup) **~4s** · lint 0. Outputs: `dist/esm/**` + `plugin.{js,cjs.js,esm.js}` + `.d.ts` + sourcemaps.
165
+ - **website**: `yarn build` (sitemap + `vite build` + `tsx postbuild-seo`) **~4s** · `yarn typecheck` (`tsc -b`) **~10s** · lint 0. Outputs: 122 dist files, 17 HTML, 9 discovery files, sitemap/feed — preserved. (Removing the double-Tailwind processing also trimmed the vite step.)
166
+ - **cli**: no build step; verified `node cli/index.js --help` runs under commander@15.
167
+ - **backend**: `npx vite build` **~2s**; PHP boot verified (`route:list` 161 routes, `config:cache`/`view:cache` OK, Nova assets publish, `composer audit` clean).
@@ -0,0 +1,110 @@
1
+ # Performance
2
+
3
+ This document captures the SDK's performance characteristics — what's measured,
4
+ what the targets are, and where the hot paths live. It is the entry point for
5
+ anyone investigating a perf regression or considering an optimisation patch.
6
+
7
+ Real-device perf testing is out of scope here — that needs a separate
8
+ Maestro / XCTest harness and is on the roadmap.
9
+
10
+ Maintained by Ahsan Mahmood. Last review: 2026-05-11.
11
+
12
+ ## What dominates real-world OTA performance
13
+
14
+ For most apps, the user-visible latency between "release pushed" and "device
15
+ running the new code" is dominated by three things, in order:
16
+
17
+ 1. **Bundle download time** — completely network-bound. A 5 MB bundle on a
18
+ typical mobile connection takes ~10-30 seconds. The SDK's job here is to
19
+ not make it worse with extra round-trips or stalled retries.
20
+ 2. **The wait for the user's next app launch** — depending on the update
21
+ strategy, this is hours or days for `on-app-start`, minutes for
22
+ `on-app-resume`, and immediate for `immediate`. See [Update strategies
23
+ compared](https://docs.nativeupdate.aoneahsan.com/concepts/update-strategies-compared).
24
+ 3. **Server-side check latency** — typically ~50-200 ms when the backend is
25
+ warm. Cold-start backends (Firebase Functions, Cloud Run) can push this to
26
+ 2-5 seconds on the first request.
27
+
28
+ The SDK's compute work — checksum, signature verify, ZIP extraction, atomic
29
+ swap — is comparatively cheap. SHA-256 over 5 MB takes ~12 ms; RSA-SHA256
30
+ verify takes ~2 ms with RSA-2048; ZIP extraction is dominated by I/O. None
31
+ of these is the bottleneck unless something has gone wrong.
32
+
33
+ That priority ordering also dictates where optimisation effort pays off:
34
+ network-aware retry backoff > update-strategy selection > server warm-up >
35
+ compute path optimisation.
36
+
37
+ ## Microbenchmark targets
38
+
39
+ The compute-bound paths have the following calibration targets (MacBook M2,
40
+ Node 20.10, single-threaded):
41
+
42
+ | Operation | p50 target | p95 target | Notes |
43
+ |---|---|---|---|
44
+ | SHA-256 over 1 MB | ~2.5 ms | ~4 ms | Linear in bundle size. |
45
+ | SHA-256 over 5 MB | ~12 ms | ~18 ms | The common case for Capacitor bundles. |
46
+ | SHA-256 over 20 MB | ~50 ms | ~70 ms | Large bundles; consider asset CDN offload. |
47
+ | RSA-SHA256 verify (2048-bit, 5 MB) | ~2 ms | ~4 ms | Dominated by the SHA, not the asymmetric op. |
48
+ | RSA-SHA256 verify (4096-bit, 5 MB) | ~6 ms | ~10 ms | ~3x slower than 2048-bit verify. |
49
+
50
+ Real Android / iOS devices are typically 2-5x slower than the dev machine.
51
+ Tail devices (iOS 14-era, Android API 22-26) can be 8-10x slower. Plan
52
+ backend timeouts and SDK retry policies accordingly.
53
+
54
+ ## Regression workflow
55
+
56
+ If the compute paths show numbers >2x the calibration target on equivalent
57
+ hardware:
58
+
59
+ 1. **Re-measure on a quiet machine** to confirm the regression is real and not
60
+ noise from a busy machine.
61
+ 2. **Profile with `clinic.js`** against a small harness exercising the hot path.
62
+ The flame graph usually points at the regression directly.
63
+ 3. **Common culprits**:
64
+ - Streaming hash with too-small chunk sizes (each `update()` has overhead)
65
+ - PEM parsing in the verify hot loop instead of pre-parsing the key
66
+ - Allocations inside the loop (`Buffer.alloc()` per iteration)
67
+ - Crypto algorithm fallback to a slow polyfill
68
+ 4. **Fix** with the smallest possible patch. Re-run bench to confirm. PR
69
+ should include before/after numbers.
70
+
71
+ ## Hot paths in the SDK
72
+
73
+ For anyone optimising the plugin internals, here's the runtime map of where
74
+ CPU goes during a typical OTA update:
75
+
76
+ ```
77
+ sync() ← orchestration, no hot work
78
+ ├── checkForUpdate() ← one HTTP call, ~100 ms wall
79
+ ├── downloadUpdate()
80
+ │ ├── fetch(downloadUrl) ← network I/O, ~10-30 s
81
+ │ ├── SecurityValidator.verifyChecksum() ← ~12 ms for 5 MB
82
+ │ ├── SecurityValidator.verifySignature() ← ~2 ms for RSA-2048
83
+ │ └── ZIP extraction ← I/O dominated, ~100-500 ms
84
+ └── notifyAppReady() (later, next launch) ← O(1)
85
+ ```
86
+
87
+ The two checksum/signature steps run sequentially after the bundle hits
88
+ disk. They are the only places where compute time is measurable. ZIP
89
+ extraction is platform-native (java.util.zip on Android, NSFileManager
90
+ on iOS) and not exposed to optimisation from the TypeScript side.
91
+
92
+ ## What's NOT covered here
93
+
94
+ Real-device benchmarks (Android API ladder, iOS device matrix). The
95
+ microbenches measure Node performance, which differs from on-device
96
+ JavaScript engines (Hermes on Android, JavaScriptCore on iOS). Real-device
97
+ perf testing is a separate roadmap item.
98
+
99
+ Web-platform performance. The plugin's web target uses `SubtleCrypto` for
100
+ hashing and verification, which has its own perf profile. No web benches
101
+ exist today.
102
+
103
+ Memory profiling. The benches measure CPU time only. Memory pressure is
104
+ typically not an issue for the SDK (the largest allocation is the bundle
105
+ buffer during streaming), but a memory bench would be welcome — file an
106
+ issue if you want to contribute one.
107
+
108
+ ## Authored by
109
+
110
+ [Ahsan Mahmood](https://aoneahsan.com) — author and maintainer of `native-update`.
@@ -21,10 +21,8 @@ This document provides a comprehensive tracking of all project components, their
21
21
  | Example Applications | ✅ Complete | 100% |
22
22
  | Documentation | ✅ Complete | 100% |
23
23
  | Firebase Integration | ✅ Complete | 100% |
24
- | Unit Tests | ✅ Complete | 100% |
25
24
  | iOS Native Tests (XCTest) | ✅ Complete | 100% |
26
25
  | Android Native Tests (JUnit) | ✅ Complete | 100% |
27
- | E2E Tests (Detox) | ✅ Complete | 100% |
28
26
 
29
27
  **Overall:** Production ready with comprehensive test coverage.
30
28
 
@@ -273,21 +271,7 @@ This document provides a comprehensive tracking of all project components, their
273
271
 
274
272
  ## 10. Testing ✅ COMPLETE
275
273
 
276
- ### 10.1 TypeScript Unit Tests (`/src/__tests__/`)
277
-
278
- | Test File | Status |
279
- |-----------|--------|
280
- | `bundle-manager.test.ts` | ✅ Complete |
281
- | `config.test.ts` | ✅ Complete |
282
- | `delta-processor.test.ts` | ✅ Complete |
283
- | `firestore-schema.test.ts` | ✅ Complete |
284
- | `manifest-reader.test.ts` | ✅ Complete |
285
- | `rollout-checker.test.ts` | ✅ Complete |
286
- | `security.test.ts` | ✅ Complete |
287
- | `version-manager.test.ts` | ✅ Complete |
288
- | `integration.test.ts` | ✅ Complete |
289
-
290
- ### 10.2 iOS Native Tests (XCTest) ✅ IMPLEMENTED
274
+ ### 10.1 iOS Native Tests (XCTest) ✅ IMPLEMENTED
291
275
 
292
276
  | Test File | Tests | Status |
293
277
  |-----------|-------|--------|
@@ -300,7 +284,7 @@ This document provides a comprehensive tracking of all project components, their
300
284
 
301
285
  **Location:** `/ios/Tests/NativeUpdateTests/`
302
286
 
303
- ### 10.3 Android Native Tests (JUnit/Kotlin) ✅ IMPLEMENTED
287
+ ### 10.2 Android Native Tests (JUnit/Kotlin) ✅ IMPLEMENTED
304
288
 
305
289
  | Test File | Tests | Status |
306
290
  |-----------|-------|--------|
@@ -314,27 +298,13 @@ This document provides a comprehensive tracking of all project components, their
314
298
 
315
299
  **Location:** `/android/src/test/java/com/aoneahsan/nativeupdate/`
316
300
 
317
- ### 10.4 E2E Tests (Detox) ✅ IMPLEMENTED
318
-
319
- | Spec File | Tests | Status |
320
- |-----------|-------|--------|
321
- | `ota-update.e2e.spec.js` | 5 | ✅ Complete |
322
- | `download-progress.e2e.spec.js` | 5 | ✅ Complete |
323
- | `channel-switching.e2e.spec.js` | 5 | ✅ Complete |
324
- | `error-handling.e2e.spec.js` | 4 | ✅ Complete |
325
- | **Total** | **19 tests** | ✅ |
326
-
327
- **Location:** `/e2e/specs/`
328
-
329
- ### 10.5 Test Summary
301
+ ### 10.3 Test Summary
330
302
 
331
303
  | Category | Files | Tests | Status |
332
304
  |----------|-------|-------|--------|
333
- | TypeScript Unit Tests | 9 | ~30 | ✅ Complete |
334
305
  | iOS Native Tests | 5 | 32 | ✅ Complete |
335
306
  | Android Native Tests | 6 | 40 | ✅ Complete |
336
- | E2E Tests | 4 | 19 | ✅ Complete |
337
- | **Total** | **24** | **~121** | ✅ |
307
+ | **Total** | **11** | **72** | ✅ |
338
308
 
339
309
  ---
340
310
 
@@ -355,7 +325,6 @@ The delta processor (`/src/live-update/delta-processor.ts`) has a WASM placehold
355
325
  Native platform tests are fully implemented:
356
326
  - **iOS XCTest:** 5 test files with 32 tests in `/ios/Tests/NativeUpdateTests/`
357
327
  - **Android JUnit/Kotlin:** 6 test files with 40 tests in `/android/src/test/`
358
- - **E2E Detox:** 4 spec files with 19 tests in `/e2e/specs/`
359
328
 
360
329
  See `/docs/TESTING_REQUIREMENTS.md` for detailed test documentation.
361
330
 
package/docs/README.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  Welcome to the comprehensive documentation for **Capacitor Native Update**, a complete update lifecycle management solution for Capacitor applications.
4
4
 
5
+ ## Verified Status
6
+
7
+ - Last reviewed: `2026-03-25`
8
+ - Current package version: `1.4.9`
9
+ - Build status: `yarn build` passed
10
+ - Root package manager: `yarn@4.10.3`
11
+ - Root package workflow is Yarn-only and no longer shells out to npm or pnpm
12
+ - Root portfolio info file: `../NATIVE-UPDATE_portfolio-info_2026-03-25.md`
13
+ - Current dated project profile: `./project-profiles/native-update-capacitor-update-platform-project-profile-last-updated-2026-03-25.md`
14
+
5
15
  > **Dashboard & Management Platform**: [nativeupdate.aoneahsan.com](https://nativeupdate.aoneahsan.com)
6
16
  >
7
17
  > The platform provides a complete SaaS solution for managing your updates including:
@@ -97,7 +107,7 @@ Consistent API across iOS, Android, and Web platforms with platform-specific opt
97
107
  - Capacitor 7.0.0 or higher
98
108
  - iOS 13.0+ for iOS apps
99
109
  - Android 5.0+ (API level 21) for Android apps
100
- - Node.js 18+ for development
110
+ - Node.js `>=24.13.0` for development
101
111
 
102
112
  ## 🤝 Contributing
103
113
 
@@ -117,4 +127,4 @@ This project is licensed under the MIT License. See the [LICENSE](../LICENSE) fi
117
127
 
118
128
  ---
119
129
 
120
- Made with ❤️ by Ahsan Mahmood for the developer community
130
+ Created by Ahsan Mahmood for the developer community.
@@ -1,145 +1,192 @@
1
1
  # Remaining Features for Production Readiness
2
2
 
3
- **Last Updated:** 2026-01-16
4
- **Status:** ✅ Core Features Complete - Optional Enhancements Listed Below
3
+ **Last Updated:** 2026-06-22
4
+ **Status:** ✅ Production Ready Play-Store-publishable end-to-end as of 2026-05-16. Core features complete. Optional enhancements listed below. Finalization re-verified 2026-06-22 (plugin + website + docs-site builds all green; no automatable gaps remain).
5
5
 
6
- This document tracks remaining optional work and future enhancements.
6
+ This document tracks remaining optional work and future enhancements. It is refreshed alongside major releases; for the authoritative "what shipped when" timeline see the root `CLAUDE.md` Audit Record + `docs/CHANGELOG.md`.
7
7
 
8
8
  ---
9
9
 
10
- ## ✅ COMPLETED Features
10
+ ## ✅ COMPLETED Features (as of 2026-05-18)
11
11
 
12
12
  ### Backend Infrastructure ✅
13
- - [x] Production-grade update server (Firebase Functions)
14
- - [x] Database integration (Firestore)
15
- - [x] Google Drive integration for bundle storage
16
- - [x] API authentication (Firebase Auth)
17
- - [x] Admin dashboard (Marketing website)
13
+
14
+ - [x] Laravel 13 + Nova 5 SaaS backend (`backend/`) — the only backend after v3.0.0
15
+ - [x] MySQL persistence (single source of truth)
16
+ - [x] Google Drive bundle storage (server-side OAuth; encrypted tokens at rest)
17
+ - [x] Identity via Laravel Socialite (Google OAuth)
18
+ - [x] Sanctum personal access tokens for dashboard auth
19
+ - [x] `spatie/laravel-permission` RBAC (`super-admin`, `admin`, `user` roles + per-route `can:` middleware + `Gate::before` super-admin bypass)
20
+ - [x] Mobile API plane (`/api/v1/*`) with per-app `ValidateApiKey` middleware
18
21
  - [x] Analytics endpoints
22
+ - [x] PayPal webhook + Stripe subscription model
23
+ - [x] FormRequest validators (UpdateBuildRequest + Create/Update FormRequests for App, ApiKey, SigningKey)
24
+ - [x] Backend policies + Nova canSee guards
25
+ - [x] env-driven CORS allowlist (`backend/config/cors.php`)
19
26
 
20
27
  ### Native Platform Implementation ✅
21
- - [x] Complete iOS implementation (7 Swift files)
22
- - [x] Complete Android implementation (7 Kotlin files)
28
+
29
+ - [x] Complete iOS implementation (Swift)
30
+ - [x] Complete Android implementation (Kotlin; Play Core update + Play Review + WorkManager background)
23
31
  - [x] Platform-specific error handling
24
- - [x] Background update services
25
- - [x] App store integration (Play Core, StoreKit)
32
+ - [x] Background update services (BGTaskScheduler / WorkManager)
33
+ - [x] App store integration (Play Core, StoreKit `SKStoreReviewController`)
34
+
35
+ ### Testing Suite ✅
26
36
 
27
- ### Testing Suite IMPLEMENTED
28
- - [x] Unit tests for TypeScript code (9 test files)
29
- - [x] Integration tests
30
- - [x] Unit tests for iOS native code
31
- - [x] Unit tests for Android native code
32
- - [x] E2E testing scenarios
37
+ - [x] Backend Pest/PHPUnit tests covering OAuth + Sanctum + Spatie + UpdateBuildRequest + PayPal webhook + BundleUpload + UserLicense (**134/134 passing**)
38
+ - [x] Unit tests for iOS native code (XCTest)
39
+ - [x] Unit tests for Android native code (JUnit/Kotlin)
33
40
 
34
41
  ### Security Implementation ✅
35
- - [x] Client-side signature verification
42
+
43
+ - [x] Client-side signature verification (RSA-SHA256)
36
44
  - [x] Certificate pinning architecture
37
45
  - [x] SHA-256 checksum verification
38
- - [x] RSA/ECDSA signature support
46
+ - [x] RSA-2048 / RSA-4096 / EC P-256 / EC P-384 signature support
39
47
  - [x] HTTPS enforcement
48
+ - [x] Bundle signing service (CLI tools)
49
+ - [x] Public/private key generation
50
+ - [x] Pre-launch DIY pentest checklist (`docs/security/PRE-LAUNCH-PENTEST-CHECKLIST.md`) covering 10 sections + 9 specific attack paths
51
+ - [x] Encrypted Drive OAuth token storage (Laravel encrypter)
52
+ - [x] Hashed-at-rest Sanctum tokens
40
53
 
41
54
  ### Developer Tools ✅
42
- - [x] Complete CLI package (8 commands)
55
+
56
+ - [x] Complete CLI package (8 commands: `init`, `bundle-create`, `bundle-sign`, `bundle-verify`, `keys-generate`, `backend-create`, `server-start`, `monitor`)
43
57
  - [x] Version management system
44
58
  - [x] Bundle creation and signing
45
59
  - [x] Local testing server
46
- - [x] Monitor utility
60
+ - [x] Monitor utility (interval+spinner cleanup, signal handlers, failure bail)
47
61
 
48
62
  ### Documentation ✅
49
- - [x] Complete API reference (7 files)
63
+
64
+ - [x] Complete API reference (`docs/api/`)
50
65
  - [x] Platform-specific guides
51
- - [x] Security implementation guide
52
- - [x] Migration guide
66
+ - [x] Security implementation guide + pentest checklist
67
+ - [x] Migration guide (incl. v2 → v3.0.0 + 2026-05-11 auth-swap notes)
53
68
  - [x] Getting started guides
69
+ - [x] Public Docusaurus docs site (`native-update-docs/` sibling repo on Firebase Hosting — 58 pages, ~76k words, full Diátaxis coverage; 7-day refresh cooldown)
54
70
 
55
71
  ### Example Implementations ✅
56
- - [x] React + Capacitor example app
57
- - [x] Node.js + Express backend
58
- - [x] Firebase Cloud Functions backend
72
+
73
+ - [x] React + Capacitor example app (with capability cards for app-update / app-review / background-update)
74
+ - [x] Node.js + Express backend example
75
+
76
+ ### CI/CD ✅
77
+
78
+ - [x] `.github/workflows/ci.yml` — yarn-based CI on every PR
79
+ - [x] `.github/workflows/release.yml` — tag-driven npm publish (with provenance) + GitHub Release
80
+ - [x] `.github/workflows/example-bundle.yml` — release+manual+weekly-cron — build example app, sign, attach signed zip + .sig + metadata to GitHub Release
81
+
82
+ ### Marketing Website + Dashboard ✅
83
+
84
+ - [x] React 19 + Vite 7 + Tailwind v4 + TanStack Query + Radix primitives
85
+ - [x] Capacitor-wrapped for Play Store distribution
86
+ - [x] All legal pages (Privacy, Terms, Security, Cookies, Data Deletion) rewritten for the Sanctum stack
87
+ - [x] SEO/AEO: per-route static HTML prerender; 30+ AI-bot allow list in robots.txt; llms.txt / llms-full.txt / ai.txt / humans.txt / security.txt / machine-readable pricing.md
88
+ - [x] Per-route JSON-LD (WebSite + Organization + SoftwareApplication + FAQPage + HowTo + Article + Product)
89
+ - [x] Observability: Sentry + Microsoft Clarity + Amplitude (page-view auto-track; silently skip when env keys absent)
90
+
91
+ ### Android Release Readiness ✅ (2026-05-16)
92
+
93
+ - [x] `signingConfigs.release` wired (keystore path, store password, key alias, key password from env)
94
+ - [x] ProGuard/R8 enabled with sensible Capacitor-aware rules
95
+ - [x] `network_security_config.xml` (HTTPS-only outside debug; localhost cleartext exception for emulator/device dev)
96
+ - [x] Branded launcher icons (15 PNGs across all densities + adaptive)
97
+ - [x] Branded splash assets (11 PNGs)
98
+ - [x] 3 Play Store graphics (feature graphic, promo graphic, TV banner) rendered from SVG via rsvg-convert
99
+ - [x] 10-section BUILD_FOR_PLAY_STORE.md runbook
100
+ - [x] screenshots/CAPTURE-GUIDE.md
101
+ - [x] Play Store full-description.md + data-safety.md written for the Sanctum stack
59
102
 
60
103
  ---
61
104
 
62
105
  ## 🟡 Optional Enhancement Features
63
106
 
64
- ### 1. Advanced Testing (Optional)
65
- - [x] iOS XCTest implementation
66
- - [x] Android JUnit tests
67
- - [x] E2E test suite with Detox/Appium/Jest
68
- - [ ] Performance benchmarking suite
69
- - [ ] Security vulnerability testing
107
+ ### 1. Advanced Update Features (Optional)
70
108
 
71
- ### 2. Advanced Update Features (Optional)
72
- - [ ] Delta updates WASM optimization (placeholder exists)
109
+ - [ ] Delta updates WASM optimization (placeholder exists; not yet wired)
73
110
  - [ ] A/B testing support
74
- - [ ] Staged rollouts with percentage targeting
75
- - [ ] Update scheduling
111
+ - [ ] Update scheduling (calendar-based)
76
112
  - [ ] Geographic targeting
77
113
 
78
- ### 3. Enterprise Features (Optional)
79
- - [ ] Multi-tenant SaaS platform
80
- - [ ] Enterprise SSO integration
81
- - [ ] Advanced audit logging
82
- - [ ] Custom branding options
83
- - [ ] SLA monitoring
114
+ (Note: percentage rollouts + pause/resume + targetSegments JSON column are already shipped on the `builds` table.)
115
+
116
+ ### 2. Enterprise Features (Optional)
117
+
118
+ - [ ] Multi-tenant SaaS hardening beyond current single-user model (sub-team / org-account / shared ownership)
119
+ - [ ] Enterprise SSO integration (SAML / OIDC providers beyond Google)
120
+ - [ ] Advanced audit logging UI (raw events already persist via `analytics_events` + Nova; UI surfaces TBD)
121
+ - [ ] Custom branding options for white-label SaaS
122
+ - [ ] SLA monitoring + uptime page
123
+
124
+ ### 3. Additional Framework Support (Optional)
84
125
 
85
- ### 4. Additional Framework Support (Optional)
86
126
  - [ ] Vue example app
87
127
  - [ ] Angular example app
88
128
  - [ ] Svelte example app
89
129
  - [ ] Python backend example
90
130
  - [ ] Java backend example
91
131
 
92
- ### 5. Community Features (Optional)
132
+ ### 4. Community / Content (Optional)
133
+
93
134
  - [ ] Video tutorials
94
- - [ ] CI/CD integration templates
95
- - [ ] GitHub Actions workflows
135
+ - [ ] Wikipedia mention (highest-leverage AI-citation source per Princeton GEO study)
136
+ - [ ] Reddit / Product Hunt / AlternativeTo / G2 / Capterra presence
96
137
  - [ ] Community plugins directory
97
138
 
139
+ ### 5. Refactors (Optional, deferred)
140
+
141
+ - [x] `website/src/pages/DocsPage.tsx` — DONE. Refactored from 1,406 lines into a 166-line shell + `website/src/pages/docs-page/sections/` (per-feature section components). (Verified 2026-06-22.)
142
+ - [ ] Three page components sit marginally over the 500-line soft guideline — `FeaturesPage.tsx` (578), `ExamplesPage.tsx` (523), `dashboard/AnalyticsPage.tsx` (519). Cohesive content-heavy pages that build clean; split only if they grow further.
143
+
98
144
  ---
99
145
 
100
146
  ## 📊 Completion Summary
101
147
 
102
148
  | Category | Status | Notes |
103
149
  |----------|--------|-------|
104
- | Core Plugin | ✅ 100% | Fully functional |
105
- | Native iOS | ✅ 100% | 7 Swift files |
106
- | Native Android | ✅ 100% | 7 Kotlin files |
107
- | Backend Examples | ✅ 100% | Node.js + Firebase |
150
+ | Core Plugin | ✅ 100% | TypeScript + Capacitor 8 SDK |
151
+ | Native iOS | ✅ 100% | Swift |
152
+ | Native Android | ✅ 100% | Kotlin |
153
+ | Backend | ✅ 100% | Laravel 13 + Nova 5 + MySQL + Socialite + Sanctum + Spatie RBAC |
154
+ | Example Backends | ✅ 100% | Node.js + Express (Firebase example removed in v3.0.0) |
108
155
  | CLI Tools | ✅ 100% | 8 commands |
109
- | Documentation | ✅ 100% | 55+ files |
110
- | Marketing Website | ✅ 100% | 24 pages |
111
- | TypeScript Tests | ✅ 100% | 9 suites implemented and passing |
112
- | Native Tests | ✅ 100% | iOS + Android native test suites implemented |
113
- | E2E Tests | ✅ 100% | Jest E2E scenarios implemented |
156
+ | Documentation | ✅ 100% | Repo `/docs/` + public Docusaurus site (58 pages) |
157
+ | Marketing Website + Dashboard | ✅ 100% | React 19 + Vite 7; Capacitor-wrapped for Play Store |
158
+ | Backend Tests | ✅ 100% | 134/134 PHPUnit passing |
159
+ | Native Tests | ✅ 100% | iOS XCTest + Android JUnit |
160
+ | CI/CD | ✅ 100% | 3 GitHub Actions workflows |
161
+ | Android Release Readiness | ✅ 100% | signingConfigs + ProGuard + branded assets + Data Safety + Play Store runbook |
114
162
  | Enterprise Features | ⏳ 0% | Future roadmap |
115
163
 
116
164
  ---
117
165
 
118
166
  ## 🎯 Priority for Future Development
119
167
 
120
- ### High Priority (If Needed)
121
- 1. Performance benchmarking suite
122
- 2. Security vulnerability testing
123
- 3. Delta updates WASM optimization
124
-
125
168
  ### Medium Priority
126
- 1. Additional framework examples
127
- 2. CI/CD templates
128
- 3. Video tutorials
169
+
170
+ 1. Delta updates WASM optimization (working JS-level patching ships today → optional WASM bsdiff/bspatch)
171
+ 2. Additional framework examples (Vue / Angular / Svelte / Python / Java)
172
+ 3. Wikipedia / Reddit / Product Hunt presence for AI-citation reach
129
173
 
130
174
  ### Low Priority
131
- 1. Enterprise features
132
- 2. Multi-tenant support
133
- 3. Advanced rollout strategies
175
+
176
+ 1. Enterprise tenant model (sub-team / org accounts)
177
+ 2. Enterprise SSO (SAML / OIDC beyond Google)
178
+ 3. Custom branding for white-label SaaS
179
+ 4. Audit-logging UI in the dashboard
134
180
 
135
181
  ---
136
182
 
137
183
  ## 📝 Notes
138
184
 
139
- - Core functionality is complete and production-ready
140
- - All builds pass with zero errors
141
- - Native and E2E test code is present; running native-device/integration pipelines still depends on local platform credentials and runtime setup
142
- - All lint checks pass with zero warnings
143
- - Firebase rules and indexes are fully configured
144
- - Optional features can be added based on user demand
145
- - The plugin is ready for npm publication
185
+ - Core functionality is complete and production-ready; v3.1.0 is on NPM.
186
+ - All builds pass with zero errors (`yarn build` root + website + Docusaurus).
187
+ - All lint checks pass with zero warnings (`yarn lint` root + website).
188
+ - Backend tests pass cleanly (`php artisan test` 134/134).
189
+ - The plugin is ready for production use and the dashboard is Play-Store-publishable end-to-end (2026-05-16 finalization audit closed).
190
+ - Optional features can be added based on user demand.
191
+ - Firestore-backed code paths were intentionally removed in v3.0.0; this is permanent.
192
+ - Firebase Hosting is still the deploy target for the marketing site + Docusaurus docs, but no Firestore / Firebase Auth / Firebase Functions are used.