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.
- package/Readme.md +35 -9
- package/android/manifest-additions.xml +28 -0
- package/android/src/main/AndroidManifest.xml +3 -7
- package/android/src/main/java/com/aoneahsan/nativeupdate/BackgroundNotificationManager.kt +21 -13
- package/android/src/main/java/com/aoneahsan/nativeupdate/BackgroundUpdatePlugin.kt +15 -0
- package/android/src/main/java/com/aoneahsan/nativeupdate/BackgroundUpdateWorker.kt +23 -7
- package/android/src/main/java/com/aoneahsan/nativeupdate/LiveUpdatePlugin.kt +346 -31
- package/android/src/main/java/com/aoneahsan/nativeupdate/NativeUpdatePlugin.kt +32 -34
- package/android/src/main/java/com/aoneahsan/nativeupdate/NotificationActionReceiver.kt +10 -1
- package/android/src/main/java/com/aoneahsan/nativeupdate/SecurityManager.kt +18 -18
- package/cli/AGENTS.md +43 -0
- package/cli/CLAUDE.md +65 -0
- package/cli/commands/backend-create.js +56 -15
- package/cli/commands/bundle-create.js +39 -7
- package/cli/commands/monitor.js +72 -51
- package/cli/index.js +10 -24
- package/cli/package.json +11 -3
- package/dist/esm/app-review/app-review-manager.js +0 -1
- package/dist/esm/app-review/index.js +0 -1
- package/dist/esm/app-review/platform-review-handler.js +0 -1
- package/dist/esm/app-review/review-conditions-checker.js +0 -1
- package/dist/esm/app-review/review-rate-limiter.js +0 -1
- package/dist/esm/app-review/types.js +0 -1
- package/dist/esm/app-update/app-update-checker.js +0 -1
- package/dist/esm/app-update/app-update-installer.d.ts +1 -0
- package/dist/esm/app-update/app-update-installer.js +19 -8
- package/dist/esm/app-update/app-update-manager.js +0 -1
- package/dist/esm/app-update/app-update-notifier.js +0 -1
- package/dist/esm/app-update/index.js +0 -1
- package/dist/esm/app-update/platform-app-update.js +12 -3
- package/dist/esm/app-update/types.js +0 -1
- package/dist/esm/background-update/background-scheduler.js +0 -1
- package/dist/esm/background-update/index.js +0 -1
- package/dist/esm/background-update/notification-manager.js +0 -1
- package/dist/esm/config/support.js +0 -1
- package/dist/esm/core/analytics.d.ts +13 -0
- package/dist/esm/core/analytics.js +15 -1
- package/dist/esm/core/cache-manager.js +0 -1
- package/dist/esm/core/config.d.ts +6 -30
- package/dist/esm/core/config.js +1 -8
- package/dist/esm/core/errors.d.ts +1 -0
- package/dist/esm/core/errors.js +1 -1
- package/dist/esm/core/event-emitter.d.ts +0 -3
- package/dist/esm/core/event-emitter.js +8 -3
- package/dist/esm/core/logger.js +0 -1
- package/dist/esm/core/performance.js +0 -1
- package/dist/esm/core/plugin-manager.js +3 -1
- package/dist/esm/core/security.d.ts +22 -3
- package/dist/esm/core/security.js +46 -7
- package/dist/esm/definitions.d.ts +13 -40
- package/dist/esm/definitions.js +0 -1
- package/dist/esm/index.d.ts +3 -4
- package/dist/esm/index.js +3 -3
- package/dist/esm/live-update/bundle-manager.d.ts +8 -0
- package/dist/esm/live-update/bundle-manager.js +20 -1
- package/dist/esm/live-update/certificate-pinning.js +0 -1
- package/dist/esm/live-update/delta-processor.d.ts +1 -1
- package/dist/esm/live-update/delta-processor.js +3 -1
- package/dist/esm/live-update/download-manager.d.ts +36 -5
- package/dist/esm/live-update/download-manager.js +70 -24
- package/dist/esm/live-update/rollout-checker.d.ts +1 -1
- package/dist/esm/live-update/rollout-checker.js +5 -6
- package/dist/esm/live-update/update-manager.d.ts +12 -1
- package/dist/esm/live-update/update-manager.js +38 -11
- package/dist/esm/live-update/version-manager.d.ts +9 -12
- package/dist/esm/live-update/version-manager.js +40 -68
- package/dist/esm/plugin.js +82 -89
- package/dist/esm/security/crypto.js +11 -7
- package/dist/esm/security/validator.js +0 -1
- package/dist/esm/types/rollout.d.ts +85 -0
- package/dist/esm/types/rollout.js +25 -0
- package/dist/esm/web.d.ts +26 -1
- package/dist/esm/web.js +214 -75
- package/dist/plugin.cjs.js +1 -2
- package/dist/plugin.esm.js +1 -2
- package/dist/plugin.js +2 -3
- package/docs/AGENTS.md +38 -0
- package/docs/CHANGELOG.md +275 -0
- package/docs/CLAUDE.md +101 -0
- package/docs/MANUAL-TASKS.md +17 -0
- package/docs/MARKETING_WEBSITE_TRACKER.md +18 -2
- package/docs/MIGRATION.md +170 -0
- package/docs/PACKAGES.md +167 -0
- package/docs/PERFORMANCE.md +110 -0
- package/docs/PROJECT_COMPLETION_TRACKER.md +4 -35
- package/docs/README.md +12 -2
- package/docs/REMAINING_FEATURES.md +123 -76
- package/docs/ROADMAP.md +200 -120
- package/docs/SECURITY-IF-REPO-PUBLIC.md +232 -0
- package/docs/TESTING_REQUIREMENTS.md +1 -112
- package/docs/ai-knowledge-base/00-project-profile.md +38 -0
- package/docs/ai-knowledge-base/01-features.md +46 -0
- package/docs/ai-knowledge-base/02-routes.md +72 -0
- package/docs/ai-knowledge-base/03-tech-stack.md +57 -0
- package/docs/ai-knowledge-base/README.md +23 -0
- package/docs/analytics-tracking.md +37 -0
- package/docs/capacitor-official-plugins.md +46 -0
- package/docs/capawesome-plugins.md +29 -0
- package/docs/deployment/HOSTINGER_DEPLOY.md +370 -0
- package/docs/deployment/PRODUCTION-DEPLOY-CHECKLIST.md +184 -0
- package/docs/docs-site/plan.md +201 -0
- package/docs/docs-site/scope.md +127 -0
- package/docs/docs-site/tracker.json +235 -0
- package/docs/error-handling-tracking.md +37 -0
- package/docs/features/laravel-nova-backend/ASSESSMENT-SUMMARY.md +96 -0
- package/docs/features/laravel-nova-backend/IMPLEMENTATION-PLAN.md +504 -0
- package/docs/features/laravel-nova-backend/progress-tracker.json +184 -0
- package/docs/guides/testing-guide.md +15 -41
- package/docs/package-audit.md +41 -0
- package/docs/play-store/ASO-METADATA.md +5 -0
- package/docs/play-store/DATA-SAFETY.md +5 -0
- package/docs/play-store/DECLARATIONS.md +5 -0
- package/docs/play-store/README.md +27 -0
- package/docs/play-store/RELEASE-NOTES.md +99 -0
- package/docs/play-store/RELEASE-STEPS.md +6 -0
- package/docs/play-store/STORE-LISTING.md +7 -0
- package/docs/play-store/SUBMISSION-CHECKLIST.md +5 -0
- package/docs/production-readiness.md +1 -1
- package/docs/project-audit/2026-05-16/00-FINALIZATION-PLAN.md +123 -0
- package/docs/project-audit/2026-05-16/01-BATCH-PLAN.md +227 -0
- package/docs/project-audit/2026-05-16/02-AUDIT-FINDINGS.md +144 -0
- package/docs/project-audit/2026-05-16/sessions/batch-01.md +42 -0
- package/docs/project-audit/2026-05-16/sessions/batch-02.md +74 -0
- package/docs/project-audit/2026-05-16/sessions/batch-03.md +71 -0
- package/docs/project-audit/2026-05-16/sessions/batch-04.md +88 -0
- package/docs/project-audit/2026-05-16/sessions/batch-05.md +63 -0
- package/docs/project-audit/2026-05-16/sessions/batch-06.md +103 -0
- package/docs/project-audit/2026-05-16/sessions/batch-07.md +61 -0
- package/docs/project-audit/2026-05-16/sessions/batch-08.md +101 -0
- package/docs/project-audit/2026-05-16/sessions/batch-09.md +105 -0
- package/docs/project-audit/2026-05-16/sessions/batch-10.md +102 -0
- package/docs/project-audit/AUDIT-HISTORY.md +74 -0
- package/docs/project-audit/BATCH-PLAN.md +168 -0
- package/docs/project-audit/MARKETING-WEBSITE-FINDINGS-2026-05-11.md +73 -0
- package/docs/project-audit/PRODUCTION-READINESS-AUDIT-2026-05-08.md +275 -0
- package/docs/project-finalization/00-tracker.json +60 -0
- package/docs/project-knowledge-base/01-system-overview.md +227 -0
- package/docs/project-knowledge-base/02-routes-pages-forms-users.md +352 -0
- package/docs/project-knowledge-base/03-tech-stack-modules-services.md +379 -0
- package/docs/project-knowledge-base/04-data-models-integrations.md +244 -0
- package/docs/project-knowledge-base/05-docs-corpus-inventory.md +256 -0
- package/docs/project-knowledge-base/06-operations-testing-legal-content.md +208 -0
- package/docs/project-knowledge-base/README.md +103 -0
- package/docs/project-profiles/native-update-capacitor-update-platform-project-profile-last-updated-2026-05-19.md +81 -0
- package/docs/rules-tracker.md +102 -0
- package/docs/security/PRE-LAUNCH-PENTEST-CHECKLIST.md +116 -0
- package/docs/seo-aeo-rules.json +3043 -0
- package/docs/social-media-marketing/README.md +81 -0
- package/docs/social-media-marketing/posts-batch-01.md +613 -0
- package/docs/social-media-marketing/posts-batch-02.md +528 -0
- package/docs/social-media-marketing/whatsapp-messages-batch-01.md +458 -0
- package/docs/social-media-marketing/whatsapp-status-batch-01.md +355 -0
- package/docs/tracking/finalization-2026-05-16-tracker.json +346 -0
- package/docs/tracking/full-audit-tracker.json +121 -0
- package/docs/tracking/production-readiness-audit-tracker.json +429 -0
- package/docs/tracking/seo-checklist-tracker.json +333 -0
- package/ios/Plugin/BackgroundUpdate/BackgroundUpdatePlugin.swift +66 -9
- package/ios/Plugin/LiveUpdate/LiveUpdatePlugin.swift +306 -52
- package/ios/Plugin/NativeUpdatePlugin.swift +22 -9
- package/ios/Plugin/Security/SecurityManager.swift +13 -14
- package/package.json +37 -38
- package/cli/node_modules/.yarn-integrity +0 -16
- package/cli/node_modules/commander/LICENSE +0 -22
- package/cli/node_modules/commander/Readme.md +0 -1148
- package/cli/node_modules/commander/esm.mjs +0 -16
- package/cli/node_modules/commander/index.js +0 -26
- package/cli/node_modules/commander/lib/argument.js +0 -145
- package/cli/node_modules/commander/lib/command.js +0 -2179
- package/cli/node_modules/commander/lib/error.js +0 -43
- package/cli/node_modules/commander/lib/help.js +0 -462
- package/cli/node_modules/commander/lib/option.js +0 -329
- package/cli/node_modules/commander/lib/suggestSimilar.js +0 -100
- package/cli/node_modules/commander/package-support.json +0 -16
- package/cli/node_modules/commander/package.json +0 -80
- package/cli/node_modules/commander/typings/esm.d.mts +0 -3
- package/cli/node_modules/commander/typings/index.d.ts +0 -884
- package/cli/yarn.lock +0 -8
- package/dist/esm/__tests__/bundle-manager.test.d.ts +0 -1
- package/dist/esm/__tests__/bundle-manager.test.js +0 -151
- package/dist/esm/__tests__/bundle-manager.test.js.map +0 -1
- package/dist/esm/__tests__/config.test.d.ts +0 -1
- package/dist/esm/__tests__/config.test.js +0 -70
- package/dist/esm/__tests__/config.test.js.map +0 -1
- package/dist/esm/__tests__/delta-processor.test.d.ts +0 -1
- package/dist/esm/__tests__/delta-processor.test.js +0 -77
- package/dist/esm/__tests__/delta-processor.test.js.map +0 -1
- package/dist/esm/__tests__/firestore-schema.test.d.ts +0 -1
- package/dist/esm/__tests__/firestore-schema.test.js +0 -74
- package/dist/esm/__tests__/firestore-schema.test.js.map +0 -1
- package/dist/esm/__tests__/integration.test.d.ts +0 -1
- package/dist/esm/__tests__/integration.test.js +0 -78
- package/dist/esm/__tests__/integration.test.js.map +0 -1
- package/dist/esm/__tests__/manifest-reader.test.d.ts +0 -1
- package/dist/esm/__tests__/manifest-reader.test.js +0 -271
- package/dist/esm/__tests__/manifest-reader.test.js.map +0 -1
- package/dist/esm/__tests__/rollout-checker.test.d.ts +0 -1
- package/dist/esm/__tests__/rollout-checker.test.js +0 -210
- package/dist/esm/__tests__/rollout-checker.test.js.map +0 -1
- package/dist/esm/__tests__/security.test.d.ts +0 -1
- package/dist/esm/__tests__/security.test.js +0 -54
- package/dist/esm/__tests__/security.test.js.map +0 -1
- package/dist/esm/__tests__/version-manager.test.d.ts +0 -1
- package/dist/esm/__tests__/version-manager.test.js +0 -45
- package/dist/esm/__tests__/version-manager.test.js.map +0 -1
- package/dist/esm/app-review/app-review-manager.js.map +0 -1
- package/dist/esm/app-review/index.js.map +0 -1
- package/dist/esm/app-review/platform-review-handler.js.map +0 -1
- package/dist/esm/app-review/review-conditions-checker.js.map +0 -1
- package/dist/esm/app-review/review-rate-limiter.js.map +0 -1
- package/dist/esm/app-review/types.js.map +0 -1
- package/dist/esm/app-update/app-update-checker.js.map +0 -1
- package/dist/esm/app-update/app-update-installer.js.map +0 -1
- package/dist/esm/app-update/app-update-manager.js.map +0 -1
- package/dist/esm/app-update/app-update-notifier.js.map +0 -1
- package/dist/esm/app-update/index.js.map +0 -1
- package/dist/esm/app-update/platform-app-update.js.map +0 -1
- package/dist/esm/app-update/types.js.map +0 -1
- package/dist/esm/background-update/background-scheduler.js.map +0 -1
- package/dist/esm/background-update/index.js.map +0 -1
- package/dist/esm/background-update/notification-manager.js.map +0 -1
- package/dist/esm/config/support.js.map +0 -1
- package/dist/esm/core/analytics.js.map +0 -1
- package/dist/esm/core/cache-manager.js.map +0 -1
- package/dist/esm/core/config.js.map +0 -1
- package/dist/esm/core/errors.js.map +0 -1
- package/dist/esm/core/event-emitter.js.map +0 -1
- package/dist/esm/core/logger.js.map +0 -1
- package/dist/esm/core/performance.js.map +0 -1
- package/dist/esm/core/plugin-manager.js.map +0 -1
- package/dist/esm/core/security.js.map +0 -1
- package/dist/esm/definitions.js.map +0 -1
- package/dist/esm/firestore/firestore-client.d.ts +0 -109
- package/dist/esm/firestore/firestore-client.js +0 -264
- package/dist/esm/firestore/firestore-client.js.map +0 -1
- package/dist/esm/firestore/index.d.ts +0 -11
- package/dist/esm/firestore/index.js +0 -11
- package/dist/esm/firestore/index.js.map +0 -1
- package/dist/esm/firestore/manifest-reader.d.ts +0 -87
- package/dist/esm/firestore/manifest-reader.js +0 -294
- package/dist/esm/firestore/manifest-reader.js.map +0 -1
- package/dist/esm/firestore/schema.d.ts +0 -507
- package/dist/esm/firestore/schema.js +0 -73
- package/dist/esm/firestore/schema.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/live-update/bundle-manager.js.map +0 -1
- package/dist/esm/live-update/certificate-pinning.js.map +0 -1
- package/dist/esm/live-update/delta-processor.js.map +0 -1
- package/dist/esm/live-update/download-manager.js.map +0 -1
- package/dist/esm/live-update/rollout-checker.js.map +0 -1
- package/dist/esm/live-update/update-manager.js.map +0 -1
- package/dist/esm/live-update/version-manager.js.map +0 -1
- package/dist/esm/plugin.js.map +0 -1
- package/dist/esm/security/crypto.js.map +0 -1
- package/dist/esm/security/validator.js.map +0 -1
- package/dist/esm/web.js.map +0 -1
- package/dist/plugin.cjs.js.map +0 -1
- package/dist/plugin.esm.js.map +0 -1
- package/dist/plugin.js.map +0 -1
- package/docs/FIREBASE_INTEGRATION_TRACKER.md +0 -321
- package/docs/FIREBASE_QUERIES_AND_INDEXES_AUDIT.md +0 -221
- package/docs/examples/firebase-backend-example.md +0 -27
- package/docs/guides/no-cost-backend-implementation-plan.md +0 -77
- package/docs/guides/no-cost-firestore-google-drive-backend.md +0 -60
- package/docs/play-console-rejection-rules.json +0 -428
- /package/docs/{MARKETING_WEBSITE_PLAN.md → archive/MARKETING_WEBSITE_PLAN.md} +0 -0
package/docs/PACKAGES.md
ADDED
|
@@ -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
|
|
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.
|
|
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.
|
|
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
|
-
|
|
|
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
|
|
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
|
-
|
|
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-
|
|
4
|
-
**Status:** ✅
|
|
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
|
-
|
|
14
|
-
- [x]
|
|
15
|
-
- [x]
|
|
16
|
-
- [x]
|
|
17
|
-
- [x]
|
|
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
|
-
|
|
22
|
-
- [x] Complete
|
|
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
|
-
|
|
28
|
-
- [x] Unit tests for
|
|
29
|
-
- [x]
|
|
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
|
-
|
|
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/
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
57
|
-
- [x]
|
|
58
|
-
- [x]
|
|
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
|
|
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
|
-
|
|
72
|
-
- [ ] Delta updates WASM optimization (placeholder exists)
|
|
109
|
+
- [ ] Delta updates WASM optimization (placeholder exists; not yet wired)
|
|
73
110
|
- [ ] A/B testing support
|
|
74
|
-
- [ ]
|
|
75
|
-
- [ ] Update scheduling
|
|
111
|
+
- [ ] Update scheduling (calendar-based)
|
|
76
112
|
- [ ] Geographic targeting
|
|
77
113
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
- [ ]
|
|
83
|
-
- [ ]
|
|
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
|
-
###
|
|
132
|
+
### 4. Community / Content (Optional)
|
|
133
|
+
|
|
93
134
|
- [ ] Video tutorials
|
|
94
|
-
- [ ]
|
|
95
|
-
- [ ]
|
|
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% |
|
|
105
|
-
| Native iOS | ✅ 100% |
|
|
106
|
-
| Native Android | ✅ 100% |
|
|
107
|
-
| Backend
|
|
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% |
|
|
110
|
-
| Marketing Website | ✅ 100% |
|
|
111
|
-
|
|
|
112
|
-
| Native Tests | ✅ 100% | iOS + Android
|
|
113
|
-
|
|
|
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
|
-
|
|
127
|
-
|
|
128
|
-
|
|
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
|
-
|
|
132
|
-
|
|
133
|
-
|
|
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
|
-
-
|
|
142
|
-
-
|
|
143
|
-
-
|
|
144
|
-
- Optional features can be added based on user demand
|
|
145
|
-
-
|
|
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.
|