native-update 1.4.9 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (265) hide show
  1. package/Readme.md +35 -9
  2. package/android/manifest-additions.xml +28 -0
  3. package/android/src/main/AndroidManifest.xml +3 -7
  4. package/android/src/main/java/com/aoneahsan/nativeupdate/BackgroundNotificationManager.kt +21 -13
  5. package/android/src/main/java/com/aoneahsan/nativeupdate/BackgroundUpdatePlugin.kt +15 -0
  6. package/android/src/main/java/com/aoneahsan/nativeupdate/BackgroundUpdateWorker.kt +23 -7
  7. package/android/src/main/java/com/aoneahsan/nativeupdate/LiveUpdatePlugin.kt +346 -31
  8. package/android/src/main/java/com/aoneahsan/nativeupdate/NativeUpdatePlugin.kt +32 -34
  9. package/android/src/main/java/com/aoneahsan/nativeupdate/NotificationActionReceiver.kt +10 -1
  10. package/android/src/main/java/com/aoneahsan/nativeupdate/SecurityManager.kt +18 -18
  11. package/cli/AGENTS.md +43 -0
  12. package/cli/CLAUDE.md +65 -0
  13. package/cli/commands/backend-create.js +56 -15
  14. package/cli/commands/bundle-create.js +39 -7
  15. package/cli/commands/monitor.js +72 -51
  16. package/cli/index.js +10 -24
  17. package/cli/package.json +11 -3
  18. package/dist/esm/app-review/app-review-manager.js +0 -1
  19. package/dist/esm/app-review/index.js +0 -1
  20. package/dist/esm/app-review/platform-review-handler.js +0 -1
  21. package/dist/esm/app-review/review-conditions-checker.js +0 -1
  22. package/dist/esm/app-review/review-rate-limiter.js +0 -1
  23. package/dist/esm/app-review/types.js +0 -1
  24. package/dist/esm/app-update/app-update-checker.js +0 -1
  25. package/dist/esm/app-update/app-update-installer.d.ts +1 -0
  26. package/dist/esm/app-update/app-update-installer.js +19 -8
  27. package/dist/esm/app-update/app-update-manager.js +0 -1
  28. package/dist/esm/app-update/app-update-notifier.js +0 -1
  29. package/dist/esm/app-update/index.js +0 -1
  30. package/dist/esm/app-update/platform-app-update.js +12 -3
  31. package/dist/esm/app-update/types.js +0 -1
  32. package/dist/esm/background-update/background-scheduler.js +0 -1
  33. package/dist/esm/background-update/index.js +0 -1
  34. package/dist/esm/background-update/notification-manager.js +0 -1
  35. package/dist/esm/config/support.js +0 -1
  36. package/dist/esm/core/analytics.d.ts +13 -0
  37. package/dist/esm/core/analytics.js +15 -1
  38. package/dist/esm/core/cache-manager.js +0 -1
  39. package/dist/esm/core/config.d.ts +6 -30
  40. package/dist/esm/core/config.js +1 -8
  41. package/dist/esm/core/errors.d.ts +1 -0
  42. package/dist/esm/core/errors.js +1 -1
  43. package/dist/esm/core/event-emitter.d.ts +0 -3
  44. package/dist/esm/core/event-emitter.js +8 -3
  45. package/dist/esm/core/logger.js +0 -1
  46. package/dist/esm/core/performance.js +0 -1
  47. package/dist/esm/core/plugin-manager.js +3 -1
  48. package/dist/esm/core/security.d.ts +22 -3
  49. package/dist/esm/core/security.js +46 -7
  50. package/dist/esm/definitions.d.ts +13 -40
  51. package/dist/esm/definitions.js +0 -1
  52. package/dist/esm/index.d.ts +3 -4
  53. package/dist/esm/index.js +3 -3
  54. package/dist/esm/live-update/bundle-manager.d.ts +8 -0
  55. package/dist/esm/live-update/bundle-manager.js +20 -1
  56. package/dist/esm/live-update/certificate-pinning.js +0 -1
  57. package/dist/esm/live-update/delta-processor.d.ts +1 -1
  58. package/dist/esm/live-update/delta-processor.js +3 -1
  59. package/dist/esm/live-update/download-manager.d.ts +36 -5
  60. package/dist/esm/live-update/download-manager.js +70 -24
  61. package/dist/esm/live-update/rollout-checker.d.ts +1 -1
  62. package/dist/esm/live-update/rollout-checker.js +5 -6
  63. package/dist/esm/live-update/update-manager.d.ts +12 -1
  64. package/dist/esm/live-update/update-manager.js +38 -11
  65. package/dist/esm/live-update/version-manager.d.ts +9 -12
  66. package/dist/esm/live-update/version-manager.js +40 -68
  67. package/dist/esm/plugin.js +82 -89
  68. package/dist/esm/security/crypto.js +11 -7
  69. package/dist/esm/security/validator.js +0 -1
  70. package/dist/esm/types/rollout.d.ts +85 -0
  71. package/dist/esm/types/rollout.js +25 -0
  72. package/dist/esm/web.d.ts +26 -1
  73. package/dist/esm/web.js +214 -75
  74. package/dist/plugin.cjs.js +1 -2
  75. package/dist/plugin.esm.js +1 -2
  76. package/dist/plugin.js +2 -3
  77. package/docs/AGENTS.md +38 -0
  78. package/docs/CHANGELOG.md +275 -0
  79. package/docs/CLAUDE.md +101 -0
  80. package/docs/MANUAL-TASKS.md +17 -0
  81. package/docs/MARKETING_WEBSITE_TRACKER.md +18 -2
  82. package/docs/MIGRATION.md +170 -0
  83. package/docs/PACKAGES.md +167 -0
  84. package/docs/PERFORMANCE.md +110 -0
  85. package/docs/PROJECT_COMPLETION_TRACKER.md +4 -35
  86. package/docs/README.md +12 -2
  87. package/docs/REMAINING_FEATURES.md +123 -76
  88. package/docs/ROADMAP.md +200 -120
  89. package/docs/SECURITY-IF-REPO-PUBLIC.md +232 -0
  90. package/docs/TESTING_REQUIREMENTS.md +1 -112
  91. package/docs/ai-knowledge-base/00-project-profile.md +38 -0
  92. package/docs/ai-knowledge-base/01-features.md +46 -0
  93. package/docs/ai-knowledge-base/02-routes.md +72 -0
  94. package/docs/ai-knowledge-base/03-tech-stack.md +57 -0
  95. package/docs/ai-knowledge-base/README.md +23 -0
  96. package/docs/analytics-tracking.md +37 -0
  97. package/docs/capacitor-official-plugins.md +46 -0
  98. package/docs/capawesome-plugins.md +29 -0
  99. package/docs/deployment/HOSTINGER_DEPLOY.md +370 -0
  100. package/docs/deployment/PRODUCTION-DEPLOY-CHECKLIST.md +184 -0
  101. package/docs/docs-site/plan.md +201 -0
  102. package/docs/docs-site/scope.md +127 -0
  103. package/docs/docs-site/tracker.json +235 -0
  104. package/docs/error-handling-tracking.md +37 -0
  105. package/docs/features/laravel-nova-backend/ASSESSMENT-SUMMARY.md +96 -0
  106. package/docs/features/laravel-nova-backend/IMPLEMENTATION-PLAN.md +504 -0
  107. package/docs/features/laravel-nova-backend/progress-tracker.json +184 -0
  108. package/docs/guides/testing-guide.md +15 -41
  109. package/docs/package-audit.md +41 -0
  110. package/docs/play-store/ASO-METADATA.md +5 -0
  111. package/docs/play-store/DATA-SAFETY.md +5 -0
  112. package/docs/play-store/DECLARATIONS.md +5 -0
  113. package/docs/play-store/README.md +27 -0
  114. package/docs/play-store/RELEASE-NOTES.md +99 -0
  115. package/docs/play-store/RELEASE-STEPS.md +6 -0
  116. package/docs/play-store/STORE-LISTING.md +7 -0
  117. package/docs/play-store/SUBMISSION-CHECKLIST.md +5 -0
  118. package/docs/production-readiness.md +1 -1
  119. package/docs/project-audit/2026-05-16/00-FINALIZATION-PLAN.md +123 -0
  120. package/docs/project-audit/2026-05-16/01-BATCH-PLAN.md +227 -0
  121. package/docs/project-audit/2026-05-16/02-AUDIT-FINDINGS.md +144 -0
  122. package/docs/project-audit/2026-05-16/sessions/batch-01.md +42 -0
  123. package/docs/project-audit/2026-05-16/sessions/batch-02.md +74 -0
  124. package/docs/project-audit/2026-05-16/sessions/batch-03.md +71 -0
  125. package/docs/project-audit/2026-05-16/sessions/batch-04.md +88 -0
  126. package/docs/project-audit/2026-05-16/sessions/batch-05.md +63 -0
  127. package/docs/project-audit/2026-05-16/sessions/batch-06.md +103 -0
  128. package/docs/project-audit/2026-05-16/sessions/batch-07.md +61 -0
  129. package/docs/project-audit/2026-05-16/sessions/batch-08.md +101 -0
  130. package/docs/project-audit/2026-05-16/sessions/batch-09.md +105 -0
  131. package/docs/project-audit/2026-05-16/sessions/batch-10.md +102 -0
  132. package/docs/project-audit/AUDIT-HISTORY.md +74 -0
  133. package/docs/project-audit/BATCH-PLAN.md +168 -0
  134. package/docs/project-audit/MARKETING-WEBSITE-FINDINGS-2026-05-11.md +73 -0
  135. package/docs/project-audit/PRODUCTION-READINESS-AUDIT-2026-05-08.md +275 -0
  136. package/docs/project-finalization/00-tracker.json +60 -0
  137. package/docs/project-knowledge-base/01-system-overview.md +227 -0
  138. package/docs/project-knowledge-base/02-routes-pages-forms-users.md +352 -0
  139. package/docs/project-knowledge-base/03-tech-stack-modules-services.md +379 -0
  140. package/docs/project-knowledge-base/04-data-models-integrations.md +244 -0
  141. package/docs/project-knowledge-base/05-docs-corpus-inventory.md +256 -0
  142. package/docs/project-knowledge-base/06-operations-testing-legal-content.md +208 -0
  143. package/docs/project-knowledge-base/README.md +103 -0
  144. package/docs/project-profiles/native-update-capacitor-update-platform-project-profile-last-updated-2026-05-19.md +81 -0
  145. package/docs/rules-tracker.md +102 -0
  146. package/docs/security/PRE-LAUNCH-PENTEST-CHECKLIST.md +116 -0
  147. package/docs/seo-aeo-rules.json +3043 -0
  148. package/docs/social-media-marketing/README.md +81 -0
  149. package/docs/social-media-marketing/posts-batch-01.md +613 -0
  150. package/docs/social-media-marketing/posts-batch-02.md +528 -0
  151. package/docs/social-media-marketing/whatsapp-messages-batch-01.md +458 -0
  152. package/docs/social-media-marketing/whatsapp-status-batch-01.md +355 -0
  153. package/docs/tracking/finalization-2026-05-16-tracker.json +346 -0
  154. package/docs/tracking/full-audit-tracker.json +121 -0
  155. package/docs/tracking/production-readiness-audit-tracker.json +429 -0
  156. package/docs/tracking/seo-checklist-tracker.json +333 -0
  157. package/ios/Plugin/BackgroundUpdate/BackgroundUpdatePlugin.swift +66 -9
  158. package/ios/Plugin/LiveUpdate/LiveUpdatePlugin.swift +306 -52
  159. package/ios/Plugin/NativeUpdatePlugin.swift +22 -9
  160. package/ios/Plugin/Security/SecurityManager.swift +13 -14
  161. package/package.json +37 -38
  162. package/cli/node_modules/.yarn-integrity +0 -16
  163. package/cli/node_modules/commander/LICENSE +0 -22
  164. package/cli/node_modules/commander/Readme.md +0 -1148
  165. package/cli/node_modules/commander/esm.mjs +0 -16
  166. package/cli/node_modules/commander/index.js +0 -26
  167. package/cli/node_modules/commander/lib/argument.js +0 -145
  168. package/cli/node_modules/commander/lib/command.js +0 -2179
  169. package/cli/node_modules/commander/lib/error.js +0 -43
  170. package/cli/node_modules/commander/lib/help.js +0 -462
  171. package/cli/node_modules/commander/lib/option.js +0 -329
  172. package/cli/node_modules/commander/lib/suggestSimilar.js +0 -100
  173. package/cli/node_modules/commander/package-support.json +0 -16
  174. package/cli/node_modules/commander/package.json +0 -80
  175. package/cli/node_modules/commander/typings/esm.d.mts +0 -3
  176. package/cli/node_modules/commander/typings/index.d.ts +0 -884
  177. package/cli/yarn.lock +0 -8
  178. package/dist/esm/__tests__/bundle-manager.test.d.ts +0 -1
  179. package/dist/esm/__tests__/bundle-manager.test.js +0 -151
  180. package/dist/esm/__tests__/bundle-manager.test.js.map +0 -1
  181. package/dist/esm/__tests__/config.test.d.ts +0 -1
  182. package/dist/esm/__tests__/config.test.js +0 -70
  183. package/dist/esm/__tests__/config.test.js.map +0 -1
  184. package/dist/esm/__tests__/delta-processor.test.d.ts +0 -1
  185. package/dist/esm/__tests__/delta-processor.test.js +0 -77
  186. package/dist/esm/__tests__/delta-processor.test.js.map +0 -1
  187. package/dist/esm/__tests__/firestore-schema.test.d.ts +0 -1
  188. package/dist/esm/__tests__/firestore-schema.test.js +0 -74
  189. package/dist/esm/__tests__/firestore-schema.test.js.map +0 -1
  190. package/dist/esm/__tests__/integration.test.d.ts +0 -1
  191. package/dist/esm/__tests__/integration.test.js +0 -78
  192. package/dist/esm/__tests__/integration.test.js.map +0 -1
  193. package/dist/esm/__tests__/manifest-reader.test.d.ts +0 -1
  194. package/dist/esm/__tests__/manifest-reader.test.js +0 -271
  195. package/dist/esm/__tests__/manifest-reader.test.js.map +0 -1
  196. package/dist/esm/__tests__/rollout-checker.test.d.ts +0 -1
  197. package/dist/esm/__tests__/rollout-checker.test.js +0 -210
  198. package/dist/esm/__tests__/rollout-checker.test.js.map +0 -1
  199. package/dist/esm/__tests__/security.test.d.ts +0 -1
  200. package/dist/esm/__tests__/security.test.js +0 -54
  201. package/dist/esm/__tests__/security.test.js.map +0 -1
  202. package/dist/esm/__tests__/version-manager.test.d.ts +0 -1
  203. package/dist/esm/__tests__/version-manager.test.js +0 -45
  204. package/dist/esm/__tests__/version-manager.test.js.map +0 -1
  205. package/dist/esm/app-review/app-review-manager.js.map +0 -1
  206. package/dist/esm/app-review/index.js.map +0 -1
  207. package/dist/esm/app-review/platform-review-handler.js.map +0 -1
  208. package/dist/esm/app-review/review-conditions-checker.js.map +0 -1
  209. package/dist/esm/app-review/review-rate-limiter.js.map +0 -1
  210. package/dist/esm/app-review/types.js.map +0 -1
  211. package/dist/esm/app-update/app-update-checker.js.map +0 -1
  212. package/dist/esm/app-update/app-update-installer.js.map +0 -1
  213. package/dist/esm/app-update/app-update-manager.js.map +0 -1
  214. package/dist/esm/app-update/app-update-notifier.js.map +0 -1
  215. package/dist/esm/app-update/index.js.map +0 -1
  216. package/dist/esm/app-update/platform-app-update.js.map +0 -1
  217. package/dist/esm/app-update/types.js.map +0 -1
  218. package/dist/esm/background-update/background-scheduler.js.map +0 -1
  219. package/dist/esm/background-update/index.js.map +0 -1
  220. package/dist/esm/background-update/notification-manager.js.map +0 -1
  221. package/dist/esm/config/support.js.map +0 -1
  222. package/dist/esm/core/analytics.js.map +0 -1
  223. package/dist/esm/core/cache-manager.js.map +0 -1
  224. package/dist/esm/core/config.js.map +0 -1
  225. package/dist/esm/core/errors.js.map +0 -1
  226. package/dist/esm/core/event-emitter.js.map +0 -1
  227. package/dist/esm/core/logger.js.map +0 -1
  228. package/dist/esm/core/performance.js.map +0 -1
  229. package/dist/esm/core/plugin-manager.js.map +0 -1
  230. package/dist/esm/core/security.js.map +0 -1
  231. package/dist/esm/definitions.js.map +0 -1
  232. package/dist/esm/firestore/firestore-client.d.ts +0 -109
  233. package/dist/esm/firestore/firestore-client.js +0 -264
  234. package/dist/esm/firestore/firestore-client.js.map +0 -1
  235. package/dist/esm/firestore/index.d.ts +0 -11
  236. package/dist/esm/firestore/index.js +0 -11
  237. package/dist/esm/firestore/index.js.map +0 -1
  238. package/dist/esm/firestore/manifest-reader.d.ts +0 -87
  239. package/dist/esm/firestore/manifest-reader.js +0 -294
  240. package/dist/esm/firestore/manifest-reader.js.map +0 -1
  241. package/dist/esm/firestore/schema.d.ts +0 -507
  242. package/dist/esm/firestore/schema.js +0 -73
  243. package/dist/esm/firestore/schema.js.map +0 -1
  244. package/dist/esm/index.js.map +0 -1
  245. package/dist/esm/live-update/bundle-manager.js.map +0 -1
  246. package/dist/esm/live-update/certificate-pinning.js.map +0 -1
  247. package/dist/esm/live-update/delta-processor.js.map +0 -1
  248. package/dist/esm/live-update/download-manager.js.map +0 -1
  249. package/dist/esm/live-update/rollout-checker.js.map +0 -1
  250. package/dist/esm/live-update/update-manager.js.map +0 -1
  251. package/dist/esm/live-update/version-manager.js.map +0 -1
  252. package/dist/esm/plugin.js.map +0 -1
  253. package/dist/esm/security/crypto.js.map +0 -1
  254. package/dist/esm/security/validator.js.map +0 -1
  255. package/dist/esm/web.js.map +0 -1
  256. package/dist/plugin.cjs.js.map +0 -1
  257. package/dist/plugin.esm.js.map +0 -1
  258. package/dist/plugin.js.map +0 -1
  259. package/docs/FIREBASE_INTEGRATION_TRACKER.md +0 -321
  260. package/docs/FIREBASE_QUERIES_AND_INDEXES_AUDIT.md +0 -221
  261. package/docs/examples/firebase-backend-example.md +0 -27
  262. package/docs/guides/no-cost-backend-implementation-plan.md +0 -77
  263. package/docs/guides/no-cost-firestore-google-drive-backend.md +0 -60
  264. package/docs/play-console-rejection-rules.json +0 -428
  265. /package/docs/{MARKETING_WEBSITE_PLAN.md → archive/MARKETING_WEBSITE_PLAN.md} +0 -0
@@ -0,0 +1,346 @@
1
+ {
2
+ "$schema": "native-update-finalization-tracker-2026-05-16",
3
+ "description": "Resumable tracker for the 2026-05-16 finalization audit (Play Store + backend deploy-ready + plugin polish). The first batch with status 'pending' or 'in_progress' is the next thing to work on.",
4
+ "module": "native-update-finalization-2026-05-16",
5
+ "createdAt": "2026-05-16",
6
+ "lastUpdated": "2026-05-16",
7
+ "planFile": "docs/project-audit/2026-05-16/00-FINALIZATION-PLAN.md",
8
+ "batchPlanFile": "docs/project-audit/2026-05-16/01-BATCH-PLAN.md",
9
+ "findingsFile": "docs/project-audit/2026-05-16/02-AUDIT-FINDINGS.md",
10
+ "sessionsDir": "docs/project-audit/2026-05-16/sessions/",
11
+ "overview": "Get native-update production-ready for fresh Play Store listing (website wrapped via Capacitor) + Laravel backend deploy-ready + plugin v3.0.1 polished. 10 batches, ONE commit per batch.",
12
+ "userDecisions": {
13
+ "androidTarget": "website wrapped via Capacitor (NEW Play Store listing)",
14
+ "backendDeployment": "deploy-ready only (user does the actual deploy)",
15
+ "authVerification": "first batch (Google OAuth + Sanctum + Spatie just swapped on 2026-05-11)",
16
+ "playConsoleState": "fresh listing — no existing keystore reuse",
17
+ "iOS": "out of scope this session",
18
+ "automatedTests": "fix existing failures; add coverage for new auth (explicitly requested)",
19
+ "devServer": "never start dev/preview servers — user runs them"
20
+ },
21
+ "knownRisks": [
22
+ "Sanctum token expiration config bug means tokens never expire today — must fix before any auth-related batch verifies",
23
+ "Capacitor Preferences token storage is a behavioural change on web — must keep localStorage fallback",
24
+ "Replacing app icons across mipmap densities requires PNG generation — must use sharp or document ImageMagick command",
25
+ "ProGuard/R8 enable may break webview if rules are wrong — must keep Capacitor keep-rules"
26
+ ],
27
+ "skillsByBatch": {
28
+ "batch01": ["laravel-specialist", "security-best-practices"],
29
+ "batch02": ["react-best-practices", "react-19", "vitest"],
30
+ "batch03": ["capacitor-best-practices", "capacitor-plugins", "capacitor-offline-first"],
31
+ "batch04": ["laravel-specialist", "security-best-practices"],
32
+ "batch05": ["tanstack-query-best-practices", "react-best-practices"],
33
+ "batch06": [],
34
+ "batch07": ["copywriting", "web-design-guidelines"],
35
+ "batch08": ["capacitor-app-store", "capacitor-android", "security-best-practices"],
36
+ "batch09": ["capacitor-splash-screen", "frontend-design"],
37
+ "batch10": ["ai-seo", "seo", "stack-audit"]
38
+ },
39
+ "batches": [
40
+ {
41
+ "id": "batch01",
42
+ "title": "Auth + critical backend fixes",
43
+ "status": "completed",
44
+ "estMinutes": 45,
45
+ "deliverables": [
46
+ "config/sanctum.php expiration env-driven",
47
+ "config/logging.php LOG_LEVEL env-driven",
48
+ "stale Firebase docblocks removed (AdminController, AppPolicy, BuildPolicy)",
49
+ "/api/dashboard/me intentional no-gate documented inline",
50
+ "PRODUCTION-DEPLOY-CHECKLIST.md Firebase→Socialite rewrite",
51
+ "backend/CLAUDE.md stack table + env section updated"
52
+ ],
53
+ "verifyCommands": ["cd backend && php artisan test --without-tty"],
54
+ "verifyResult": "110 passed (258 assertions), 24.42s",
55
+ "commitMessage": "fix(backend): Batch 1 — Sanctum expiration, LOG_LEVEL, Firebase reference cleanup",
56
+ "completedAt": "2026-05-16",
57
+ "commit": "d71aaa7",
58
+ "sessionReport": "docs/project-audit/2026-05-16/sessions/batch-01.md"
59
+ },
60
+ {
61
+ "id": "batch02",
62
+ "title": "Website build + plugin test fixes",
63
+ "status": "completed",
64
+ "estMinutes": 50,
65
+ "deliverables": [
66
+ "8 files converted to useCallback pattern (Admin* + Config + GoogleDrive + Settings + Analytics)",
67
+ "UploadPage handleSubmit ref-during-render fix",
68
+ "src/web.ts getLocalStorage() safe-accessor + 6 callsite groups refactored",
69
+ "All 9 plugin integration tests pass"
70
+ ],
71
+ "verifyCommands": [
72
+ "cd website && yarn lint",
73
+ "cd website && yarn typecheck",
74
+ "cd website && yarn build",
75
+ "yarn lint",
76
+ "yarn build",
77
+ "yarn test:run"
78
+ ],
79
+ "verifyResult": "website lint+typecheck+build clean (16 SEO HTML files); root lint+build clean; tests 62/62 pass (5.58s)",
80
+ "commitMessage": "fix(build): Batch 2 — rules-of-hooks fixes + plugin localStorage safe-accessor",
81
+ "completedAt": "2026-05-16",
82
+ "commit": "PENDING_COMMIT_SHA",
83
+ "sessionReport": "docs/project-audit/2026-05-16/sessions/batch-02.md"
84
+ },
85
+ {
86
+ "id": "batch03",
87
+ "title": "Auth token via Capacitor Preferences",
88
+ "status": "completed",
89
+ "estMinutes": 50,
90
+ "deliverables": [
91
+ "auth-token.ts rewritten: in-memory cache + async @capacitor/preferences (native) + localStorage (web) + listener-event API",
92
+ "AuthContext awaits hydrateAuthToken() before deciding state; subscribes to auth-change for instant 401 reaction",
93
+ "App.tsx kicks off hydrateAuthToken() in parallel with theme hydration",
94
+ "CallbackPage trimmed — removed duplicate /me round trip; relies on auth-change listener",
95
+ "401 → axios interceptor → clearAuthToken() → AuthContext listener → setUser(null) → ProtectedRoute → /login (single render cycle)"
96
+ ],
97
+ "verifyCommands": [
98
+ "cd website && yarn lint",
99
+ "cd website && yarn typecheck",
100
+ "cd website && yarn build"
101
+ ],
102
+ "verifyResult": "lint+typecheck+build all clean; 16 SEO HTML files generated; 9 discovery files present",
103
+ "commitMessage": "feat(auth): Batch 3 — Capacitor Preferences token storage + 401 auto-redirect",
104
+ "completedAt": "2026-05-16",
105
+ "commit": "PENDING_COMMIT_SHA",
106
+ "sessionReport": "docs/project-audit/2026-05-16/sessions/batch-03.md"
107
+ },
108
+ {
109
+ "id": "batch04",
110
+ "title": "Backend OAuth/Sanctum/Roles tests + FormRequest",
111
+ "status": "completed",
112
+ "estMinutes": 60,
113
+ "deliverables": [
114
+ "OAuthControllerTest.php (9 cases: redirect, callback create+promote+update+suspend+legacy+throw, logout revoke + 401)",
115
+ "SanctumTokenTest.php (7 cases: header gate, expiration window, revocation, abilities, config wiring)",
116
+ "RolesPermissionsTest.php (10 cases: seeder roles+idempotency, role-perm wiring, Gate::before, role-assign command additive+revoke+helpers)",
117
+ "UpdateBuildRequest.php new",
118
+ "BuildController@update uses UpdateBuildRequest"
119
+ ],
120
+ "verifyCommands": ["cd backend && php artisan test --without-tty"],
121
+ "verifyResult": "136 passed (314 assertions), 6.67s — +26 over baseline 110",
122
+ "commitMessage": "test(backend): Batch 4 — OAuth/Sanctum/Roles coverage + UpdateBuildRequest",
123
+ "completedAt": "2026-05-16",
124
+ "commit": "PENDING_COMMIT_SHA",
125
+ "sessionReport": "docs/project-audit/2026-05-16/sessions/batch-04.md"
126
+ },
127
+ {
128
+ "id": "batch05",
129
+ "title": "Admin + overview pages → TanStack Query",
130
+ "status": "completed",
131
+ "estMinutes": 45,
132
+ "deliverables": [
133
+ "AdminUsersPage useQuery + URL-state pagination + debounced search + keepPreviousData",
134
+ "AdminAppsPage same pattern",
135
+ "AdminBuildsPage useQuery (server-side pagination + client-side filter pending server q support)",
136
+ "AdminOverview useQuery with select() camelCase transform",
137
+ "DashboardOverview + UploadPage — already on useQuery; audit caught stale snapshot"
138
+ ],
139
+ "verifyCommands": [
140
+ "cd website && yarn lint",
141
+ "cd website && yarn typecheck",
142
+ "cd website && yarn build"
143
+ ],
144
+ "verifyResult": "website lint+typecheck+build all clean; 16 SEO HTML files generated",
145
+ "commitMessage": "refactor(admin): Batch 5 — admin pages on TanStack Query",
146
+ "completedAt": "2026-05-16",
147
+ "commit": "PENDING_COMMIT_SHA",
148
+ "sessionReport": "docs/project-audit/2026-05-16/sessions/batch-05.md"
149
+ },
150
+ {
151
+ "id": "batch06",
152
+ "title": "console.* cleanup + Firebase comment sweep",
153
+ "status": "completed",
154
+ "estMinutes": 25,
155
+ "deliverables": [
156
+ "lib/env.ts — 7 VITE_FIREBASE_* + 2 legacy keys removed; single VITE_API_URL required",
157
+ ".env.example + vite-env.d.ts verified clean",
158
+ "Real console.* violations: zero (audit's matches were template-literal code samples)",
159
+ "website/CLAUDE.md + AGENTS.md rewritten for Socialite + Sanctum stack",
160
+ "HomePage step-02 'firebase-backend examples' copy rewritten",
161
+ "Legal-page Firebase content deferred to Batch 7 (correct ownership)"
162
+ ],
163
+ "verifyCommands": [
164
+ "cd website && yarn lint",
165
+ "cd website && yarn build"
166
+ ],
167
+ "verifyResult": "lint+build clean; zero real console.* violations; zero VITE_FIREBASE_* refs",
168
+ "commitMessage": "chore(website): Batch 6 — drop VITE_FIREBASE_* + Firebase reference sweep",
169
+ "completedAt": "2026-05-16",
170
+ "commit": "PENDING_COMMIT_SHA",
171
+ "sessionReport": "docs/project-audit/2026-05-16/sessions/batch-06.md"
172
+ },
173
+ {
174
+ "id": "batch07",
175
+ "title": "Play Store metadata + legal pages cleanup",
176
+ "status": "completed",
177
+ "estMinutes": 50,
178
+ "deliverables": [
179
+ "full-description.md rewritten — Firestore→Laravel SaaS/self-host narrative",
180
+ "data-safety.md rewritten — Sanctum tokens, Google OAuth third-party flow, INTERNET-only permissions",
181
+ "listing-notes.md already clean (no changes)",
182
+ "PrivacyPage 2026-05-16 + Section 7 (storage/security) + Section 8 (third parties) rewritten end-to-end",
183
+ "TermsPage 2026-05-16 + Section 9 (third-party services) rewritten",
184
+ "SecurityPage 2026-05-16 + Authentication Security (6 bullets) + Infrastructure Security (6 bullets) rewritten — removed unverifiable SOC/ISO/SLA claims",
185
+ "CookiePolicyPage 2026-05-16 + cookies table rewritten (Sanctum token row + Laravel XSRF row) + third-party section rewritten (Google OAuth + PayPal)"
186
+ ],
187
+ "verifyCommands": [
188
+ "cd website && yarn lint",
189
+ "cd website && yarn build",
190
+ "grep -i firestore website/src/pages/PrivacyPage.tsx TermsPage.tsx CookiePolicyPage.tsx SecurityPage.tsx",
191
+ "grep -i firestore website/app-publish-assets/metadata/"
192
+ ],
193
+ "verifyResult": "lint+build clean; zero Firestore/Firebase Auth references in legal pages + Play Store metadata",
194
+ "commitMessage": "docs(legal): Batch 7 — Play Store metadata + Privacy/Terms/Cookies/Security for Sanctum stack",
195
+ "completedAt": "2026-05-16",
196
+ "commit": "PENDING_COMMIT_SHA",
197
+ "sessionReport": "docs/project-audit/2026-05-16/sessions/batch-07.md"
198
+ },
199
+ {
200
+ "id": "batch08",
201
+ "title": "Android signing + ProGuard + build guide",
202
+ "status": "completed",
203
+ "estMinutes": 55,
204
+ "deliverables": [
205
+ "keystore.properties.example template with keytool command + backup advice",
206
+ "android/.gitignore covers *.jks + *.keystore + keystore.properties",
207
+ "build.gradle: signingConfigs.release block (env-driven via keystore.properties)",
208
+ "build.gradle: minifyEnabled=true + shrinkResources=true + proguard-android-optimize.txt",
209
+ "proguard-rules.pro: Capacitor + WebView JS bridge + cordova + line-number rules",
210
+ "network_security_config.xml: HTTPS-only prod, localhost cleartext debug",
211
+ "AndroidManifest: networkSecurityConfig + usesCleartextTraffic=false",
212
+ "BUILD_FOR_PLAY_STORE.md: 10-section runbook + troubleshooting + file map"
213
+ ],
214
+ "verifyCommands": [
215
+ "cd website && yarn build && npx cap sync android",
216
+ "cd website/android && ./gradlew help -q"
217
+ ],
218
+ "verifyResult": "yarn build + cap sync clean; gradle config parses; assembleDebug deferred (5-10min, runbook covers the user-side commands)",
219
+ "commitMessage": "feat(android): Batch 8 — signing config + ProGuard + Play Store build runbook",
220
+ "completedAt": "2026-05-16",
221
+ "commit": "PENDING_COMMIT_SHA",
222
+ "sessionReport": "docs/project-audit/2026-05-16/sessions/batch-08.md"
223
+ },
224
+ {
225
+ "id": "batch09",
226
+ "title": "App icons + splash + screenshot guide",
227
+ "status": "completed",
228
+ "estMinutes": 45,
229
+ "deliverables": [
230
+ "15 launcher PNGs rendered from icon-512.svg (5 densities × {ic_launcher, ic_launcher_round, ic_launcher_foreground})",
231
+ "Adaptive-icon background color flipped from #FFFFFF to brand #1E3A8A",
232
+ "11 splash PNGs rendered from new splash-master.svg (port + land × 5 densities + root)",
233
+ "Play Store icon-512.png + icon-1024.png + feature-1024x500.png rendered from SVG sources",
234
+ "screenshots/CAPTURE-GUIDE.md — 7-section runbook (emulator + real-device workflows, do/don't, file-map)",
235
+ "npx cap sync android picks up the new assets"
236
+ ],
237
+ "verifyCommands": [
238
+ "cd website && npx cap sync android",
239
+ "ls website/android/app/src/main/res/mipmap-*/*.png | wc -l"
240
+ ],
241
+ "verifyResult": "cap sync clean (3 plugins detected); 15 mipmap PNGs + 11 splash PNGs + 3 Play Store graphics all rendered",
242
+ "commitMessage": "feat(android): Batch 9 — branded icons + splash + screenshot capture guide",
243
+ "completedAt": "2026-05-16",
244
+ "commit": "PENDING_COMMIT_SHA",
245
+ "sessionReport": "docs/project-audit/2026-05-16/sessions/batch-09.md"
246
+ },
247
+ {
248
+ "id": "batch10",
249
+ "title": "SEO refresh + final verification + audit closure",
250
+ "status": "completed",
251
+ "estMinutes": 50,
252
+ "deliverables": [
253
+ "postbuild-seo.ts: 3× 'Last updated 2026-05-08' → '2026-05-16'",
254
+ "postbuild-seo.ts: softwareVersion '2.0.0' → '3.0.1' (matches package.json)",
255
+ "AboutPage + FeaturesPage + PricingPage PAGE_LAST_UPDATED bumped",
256
+ "sitemap.xml + feed.xml regenerated via yarn build",
257
+ "Stack-audit verification: banned-package grep clean; stack detection matches expected (Radix, TanStack Query, Capacitor, RHF, no Firebase)",
258
+ "CLAUDE.md Audit Record: 2026-05-16 row added with full batch summary",
259
+ "CLAUDE.md + AGENTS.md Last Updated bumped",
260
+ "Tracker last_run.status flipped to complete; cooldown 2026-05-23"
261
+ ],
262
+ "verifyCommands": [
263
+ "cd website && yarn build",
264
+ "cd website && npx cap sync android",
265
+ "yarn build && yarn test:run",
266
+ "cd backend && php artisan test --without-tty",
267
+ "grep banned-packages package.json website/package.json"
268
+ ],
269
+ "verifyResult": "website build clean (16 SEO HTML); cap sync clean (3 plugins); plugin tests 62/62; backend tests 136/136; banned-package grep zero hits",
270
+ "commitMessage": "chore(release): Batch 10 — SEO date refresh + audit closure (next allowed run 2026-05-23)",
271
+ "completedAt": "2026-05-16",
272
+ "commit": "PENDING_COMMIT_SHA",
273
+ "sessionReport": "docs/project-audit/2026-05-16/sessions/batch-10.md"
274
+ }
275
+ ],
276
+ "runHistory": [
277
+ {
278
+ "date": "2026-05-16",
279
+ "batch": "batch01",
280
+ "summary": "Auth-stack cleanup: Sanctum expiration now env-driven (was null → tokens never expired); LOG_LEVEL prod default flipped from debug→warning; Firebase docblocks across AdminController + AppPolicy + BuildPolicy rewritten to spatie/laravel-permission language; deploy checklist firebase env-vars replaced with Sanctum + Google OAuth + ADMIN_EMAILS; backend/CLAUDE.md stack table + env section refreshed. php artisan test → 110/110 still passing.",
281
+ "commit": "d71aaa7"
282
+ },
283
+ {
284
+ "date": "2026-05-16",
285
+ "batch": "batch02",
286
+ "summary": "Website build fixes: 8 dashboard/admin/analytics files migrated to useCallback pattern (audit found 4, lint surfaced 11 errors across 7 files); UploadPage onClick ref-during-render replaced with arrow-wrapped handleSubmit. Plugin tests: src/web.ts gained getLocalStorage() safe-accessor; 6 callsite groups refactored. All 9 previously-failing integration tests now pass. Website lint+typecheck+build clean; root lint+build clean; plugin test:run 62/62 pass.",
287
+ "commit": "dc9f21f"
288
+ },
289
+ {
290
+ "date": "2026-05-16",
291
+ "batch": "batch03",
292
+ "summary": "Auth token storage rewritten: in-memory cache + async Capacitor Preferences (native) / localStorage (web) + listener-event API. AuthContext awaits hydration on boot and subscribes to auth-change events. App.tsx hydrates auth + theme in parallel. CallbackPage simplified (removed duplicate /me round trip). End-to-end 401 → /login redirect now happens automatically in a single render cycle. Lint + typecheck + build all clean.",
293
+ "commit": "a85a9c1"
294
+ },
295
+ {
296
+ "date": "2026-05-16",
297
+ "batch": "batch04",
298
+ "summary": "Backend test coverage for the auth swap: OAuthControllerTest (9), SanctumTokenTest (7), RolesPermissionsTest (10) — 26 new tests, all passing. UpdateBuildRequest FormRequest extracted; BuildController@update now uses it. Mid-batch discovered a config:cache from Batch 1 was masking phpunit.xml env overrides — cleared bootstrap/cache/*. Full suite: 136 passed (314 assertions), 6.67s.",
299
+ "commit": "df94b7e"
300
+ },
301
+ {
302
+ "date": "2026-05-16",
303
+ "batch": "batch05",
304
+ "summary": "Admin pages on TanStack Query: AdminUsersPage, AdminAppsPage, AdminBuildsPage, AdminOverview migrated from useState+useEffect to useQuery with hierarchical query keys (['admin', <entity>, filters]) + URL-synced pagination + debounced search + keepPreviousData. DashboardOverview + UploadPage were already on useQuery (audit caught stale snapshot). Website lint+typecheck+build all clean.",
305
+ "commit": "90d399e"
306
+ },
307
+ {
308
+ "date": "2026-05-16",
309
+ "batch": "batch06",
310
+ "summary": "VITE_FIREBASE_* env wiring removed from lib/env.ts (7 firebase keys + 2 legacy admin keys); .env.example and vite-env.d.ts were already clean. Real console.* violations turned out to be zero — audit's matches were inside template-literal code samples. website/CLAUDE.md + AGENTS.md auth references rewritten end-to-end for Socialite + Sanctum + spatie. HomePage step-02 'firebase-backend examples' copy replaced. Legal pages held for Batch 7. Build clean.",
311
+ "commit": "a436581"
312
+ },
313
+ {
314
+ "date": "2026-05-16",
315
+ "batch": "batch07",
316
+ "summary": "Play Store metadata + legal pages rewritten for the Sanctum stack. full-description.md + data-safety.md + 4 legal pages (Privacy, Terms, Cookies, Security) updated end-to-end: dates bumped to 2026-05-16, Firestore + Firebase Auth content replaced with accurate Google OAuth + Sanctum + Laravel descriptions, SecurityPage's unverifiable SOC/ISO/SLA claims removed in favour of the actual operational baseline (HTTPS, CORS env allowlist, CSP, audit log, open source, self-host option). Zero Firestore/Firebase Auth refs remain. Build clean.",
317
+ "commit": "73f429b"
318
+ },
319
+ {
320
+ "date": "2026-05-16",
321
+ "batch": "batch08",
322
+ "summary": "Android publishing-readiness: signingConfigs.release block (env-driven via keystore.properties), minifyEnabled=true + shrinkResources=true, ProGuard rules expanded for Capacitor + WebView JS bridge + cordova + line numbers, network_security_config.xml (HTTPS-only prod / localhost cleartext debug), AndroidManifest networkSecurityConfig + usesCleartextTraffic=false. keystore.properties.example template + .gitignore tightened. BUILD_FOR_PLAY_STORE.md 10-section runbook with troubleshooting matrix + file map. yarn build + cap sync + gradle help all clean.",
323
+ "commit": "1865228"
324
+ },
325
+ {
326
+ "date": "2026-05-16",
327
+ "batch": "batch09",
328
+ "summary": "Branded assets across the Android wrap: 15 launcher PNGs (mipmap-* × 5 densities × {ic_launcher, ic_launcher_round, ic_launcher_foreground}) rendered from icon-512.svg + icon-adaptive-foreground.svg via rsvg-convert. Adaptive-icon background colour changed from flat #FFFFFF to brand #1E3A8A. 11 splash PNGs (port + land × 5 densities + root drawable) rendered from new splash-master.svg matching capacitor.config.ts splash bg #0A0F1A. Play Store store-listing icons: icon-512.png, icon-1024.png, feature-1024x500.png rendered from SVG sources. screenshots/CAPTURE-GUIDE.md 7-section runbook for the 2–8 phone screenshots the user captures. cap sync clean.",
329
+ "commit": "be828b1"
330
+ },
331
+ {
332
+ "date": "2026-05-16",
333
+ "batch": "batch10",
334
+ "summary": "Final closure: postbuild-seo.ts dates 2026-05-08→2026-05-16 + softwareVersion JSON-LD 2.0.0→3.0.1, AboutPage + FeaturesPage + PricingPage visible dates bumped. Stack-audit Phase 0 verified zero banned packages. Final verification all green: website lint+build clean (16 SEO HTML), cap sync clean (3 plugins), root plugin tests 62/62, backend tests 136/136 (+26 over baseline 110). Root CLAUDE.md Audit Record row added; CLAUDE.md + AGENTS.md Last Updated bumped. Tracker last_run.status='complete'; next_allowed_run_after=2026-05-23 (7-day cooldown).",
335
+ "commit": "PENDING_COMMIT_SHA"
336
+ }
337
+ ],
338
+ "lastRun": {
339
+ "status": "complete",
340
+ "startedAt": "2026-05-16",
341
+ "completedAt": "2026-05-16",
342
+ "nextAllowedRunAfter": "2026-05-23",
343
+ "summary": "10/10 batches complete. Website is Play-Store-publishable (user runs BUILD_FOR_PLAY_STORE.md steps with their keystore); backend is deploy-ready (PRODUCTION-DEPLOY-CHECKLIST.md current); plugin v3.0.1 polished with 62/62 tests; backend 136/136 tests (+26 over baseline). Override conditions for early re-run: broken build/tests, production incident, new high-severity CVE in a dep, major API change, explicit user bypass."
344
+ },
345
+ "resumeInstructions": "1) Read this tracker (you are here). 2) Find first 'pending' or 'in_progress' batch in batches[]. 3) Read 00-FINALIZATION-PLAN.md and 01-BATCH-PLAN.md for context. 4) Invoke skills listed under skillsByBatch[batchId]. 5) Do the batch deliverables. 6) Run all verifyCommands and report green/red. 7) ONE commit per batch with the commitMessage. 8) Update tracker: set status='completed', completedAt=today, commit=<sha>. 9) Append a runHistory[] entry: date, batch id, summary, commit sha. 10) Write the per-batch session report at docs/project-audit/2026-05-16/sessions/batch-NN.md."
346
+ }
@@ -0,0 +1,121 @@
1
+ {
2
+ "$schema_version": "1.0.0",
3
+ "_SUPERSEDED": "This tracker was retired on 2026-05-08. Replaced by docs/tracking/production-readiness-audit-tracker.json which covers the same scope plus multi-batch resumeable execution. Do NOT update this file going forward — only the new tracker. Retained on disk as historical record of audit runs prior to 2026-05-08.",
4
+ "tracker_purpose": "[RETIRED 2026-05-08] Authoritative record of full-codebase audit runs (code review + SEO + AEO + content) for the native-update monorepo. Used to enforce a 7-day cooldown so the same audit prompt is not re-run prematurely.",
5
+ "project": "native-update",
6
+ "scope": [
7
+ "Code review (real blocker issues, not nice-to-have)",
8
+ "SEO (technical + on-page + sitemaps + robots + structured data)",
9
+ "AEO / AIO (LLM discoverability — llms.txt, ai.txt, schema, FAQ blocks, freshness dates)",
10
+ "Content (marketing copy, in-app text, landing pages, dashboard pages, docs pages)"
11
+ ],
12
+ "subprojects_in_scope": [
13
+ "/ (root plugin)",
14
+ "src/ (plugin TS source)",
15
+ "android/ (Kotlin native)",
16
+ "ios/ (Swift native)",
17
+ "cli/ (Node CLI)",
18
+ "backend/ (Laravel 11 + Nova primary backend)",
19
+ "website/ (Vite React marketing + dashboard)",
20
+ "example-apps/ (react-capacitor, node-express, firebase-backend)",
21
+ "docs/"
22
+ ],
23
+
24
+ "policy": {
25
+ "cooldown_days": 7,
26
+ "rule": "If 'last_run.completed_at' is within the last 7 days AND 'last_run.status' is 'complete', do NOT re-run the audit. Only update this tracker if a new run is performed.",
27
+ "override_conditions": [
28
+ "User explicitly asks to bypass cooldown",
29
+ "Build is broken (yarn build / yarn test:run / typecheck failing) — fix-only run is allowed",
30
+ "Production incident requires immediate audit",
31
+ "New CVE in a critical dependency"
32
+ ],
33
+ "on_skip": "Tell the user the date of the last run, the next allowed run date, and a one-line summary of what that run fixed. Do NOT do read-only re-audit work for show.",
34
+ "fresh_run_steps": [
35
+ "1. Set 'last_run.status' = 'in_progress' and 'last_run.started_at' = today",
36
+ "2. Invoke matching skills per RULE #0 (stack-audit, code-reviewer, seo-audit, ai-seo, web-design-guidelines, copywriting, simplify, fix)",
37
+ "3. Run code review pass — find real blockers across all sub-projects",
38
+ "4. Run SEO pass — sitemaps, robots, meta, structured data, freshness dates, broken links",
39
+ "5. Run AEO pass — llms.txt, ai.txt, llms-full.txt, schema.org, FAQ, citation-friendly content",
40
+ "6. Run content pass — marketing copy, dashboard copy, error messages, empty states, CTAs",
41
+ "7. Fix every issue found (no 'should I fix?' questions)",
42
+ "8. Verify yarn build, yarn test:run, yarn lint all pass",
43
+ "9. Set 'last_run.completed_at' = today, 'last_run.status' = 'complete'",
44
+ "10. Append a row to 'history' with summary",
45
+ "11. Update CLAUDE.md + AGENTS.md audit record",
46
+ "12. ONE commit at the end (per project rule)"
47
+ ]
48
+ },
49
+
50
+ "last_run": {
51
+ "started_at": "2026-05-02",
52
+ "completed_at": "2026-05-02",
53
+ "completed_by": "Claude Code (Opus 4.7, 1M context)",
54
+ "status": "complete",
55
+ "head_commit_after": "847c4b4",
56
+ "next_allowed_run_after": "2026-05-09",
57
+ "cooldown_basis": "Git history (commit 847c4b4 on 2026-05-02) plus root CLAUDE.md Audit Record entry for 2026-05-02; this tracker file did not exist before today (2026-05-03) so the previous run was reconstructed from those sources.",
58
+ "summary": "Full audit pass — code + SEO/AEO + content fixes. See history[0] for details."
59
+ },
60
+
61
+ "current_run": {
62
+ "started_at": "2026-05-03",
63
+ "completed_at": "2026-05-03",
64
+ "completed_by": "Claude Code (Opus 4.7, 1M context)",
65
+ "status": "skipped_cooldown",
66
+ "skip_reason": "Last full audit ran on 2026-05-02 (yesterday, commit 847c4b4). Within the user-set 7-day cooldown window. Per the tracker policy, no new audit work performed. This run only created the tracker file itself and wired it into root CLAUDE.md + AGENTS.md so future runs can self-check the cooldown without rebuilding context from git history.",
67
+ "files_touched_this_run": [
68
+ "docs/tracking/full-audit-tracker.json (new)",
69
+ "CLAUDE.md (audit record updated to point at tracker)",
70
+ "AGENTS.md (audit record added pointing at tracker)"
71
+ ],
72
+ "next_allowed_run_after": "2026-05-09"
73
+ },
74
+
75
+ "history": [
76
+ {
77
+ "run_id": 1,
78
+ "started_at": "2026-05-02",
79
+ "completed_at": "2026-05-02",
80
+ "head_commit_after": "847c4b4",
81
+ "summary": "Full audit pass — code + SEO/AEO + content fixes",
82
+ "fixes": {
83
+ "code": [
84
+ "Firestore disconnectDrive atomicity issue resolved",
85
+ "console.* → centralized logger across services + dashboard pages (no-console rule enforced)"
86
+ ],
87
+ "seo_aeo_content": [
88
+ "ExamplesPage route + nav + sitemap wiring added",
89
+ "Dead GitHub link fixed",
90
+ "Stale dates refreshed across humans.txt, llms-full.txt, security.txt, robots.txt",
91
+ "Broken icon refs fixed in index.html + manifest.json",
92
+ "Stale 1.4.9 → 2.0.0 corrected in JSON-LD softwareVersion"
93
+ ],
94
+ "verifications": [
95
+ "yarn build — 0 errors",
96
+ "TypeScript — 0 errors",
97
+ "Vitest — 89/89 passing",
98
+ "Features — all complete",
99
+ "TODOs — none found"
100
+ ]
101
+ },
102
+ "commits": [
103
+ "847c4b4 — fix: full audit pass — code + SEO/AEO + content fixes"
104
+ ]
105
+ },
106
+ {
107
+ "run_id": 0,
108
+ "started_at": "2026-05-03",
109
+ "completed_at": "2026-05-03",
110
+ "status": "skipped_cooldown",
111
+ "summary": "Tracker initialization run. No audit performed (within 7-day cooldown). Created this file and wired it into CLAUDE.md + AGENTS.md.",
112
+ "commits": []
113
+ }
114
+ ],
115
+
116
+ "notes": [
117
+ "This tracker is the SINGLE source of truth for the 7-day cooldown on the full-codebase audit prompt.",
118
+ "Other narrower trackers (e.g. website/docs/tracking/seo-url-coverage.json, docs/rules-tracker.md) have their own cadences and are not superseded by this one — but if THIS audit is in cooldown, do not re-run those either as part of the same prompt.",
119
+ "When updating this file, also update root CLAUDE.md + AGENTS.md 'Audit Record' sections to keep dates in sync."
120
+ ]
121
+ }