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