wadi 1.0.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 (294) hide show
  1. package/.agent/workflows/auto_sync.md +19 -0
  2. package/.agent/workflows/kivo_pipeline.md +27 -0
  3. package/.devcontainer/devcontainer.json +27 -0
  4. package/.github/workflows/kivo-cicd.yml +45 -0
  5. package/.github/workflows/monorepo-ci.yml +51 -0
  6. package/.github/workflows/wadi-ci.yml +38 -0
  7. package/.husky/pre-commit +2 -0
  8. package/.prettierignore +12 -0
  9. package/.prettierrc +9 -0
  10. package/.vscode/settings.json +19 -0
  11. package/CHANGELOG.md +56 -0
  12. package/CODE_OF_CONDUCT.md +43 -0
  13. package/CONTRIBUTING.md +42 -0
  14. package/DEPLOY_GUIDE.md +143 -0
  15. package/GO_LIVE_CHECKLIST.md +41 -0
  16. package/GO_LIVE_COMPLETE_REPORT.md +58 -0
  17. package/GO_LIVE_VALIDATION.md +39 -0
  18. package/LEGAL.md +38 -0
  19. package/MANIFESTO.md +40 -0
  20. package/MANUAL.md +82 -0
  21. package/OPS_PLAN.md +90 -0
  22. package/README.md +126 -0
  23. package/RELEASE_NOTES.md +51 -0
  24. package/ROADMAP.md +51 -0
  25. package/api_listado.txt +2197 -0
  26. package/apps/api/WADI_PROTOCOL.md +52 -0
  27. package/apps/api/debug-brain.js +11 -0
  28. package/apps/api/package.json +21 -0
  29. package/apps/api/src/core/analisis.js +17 -0
  30. package/apps/api/src/core/errors.js +31 -0
  31. package/apps/api/src/core/logger.js +32 -0
  32. package/apps/api/src/core/prompt-kivo.js +62 -0
  33. package/apps/api/src/index.js +212 -0
  34. package/apps/api/src/layers/human_pattern/composeResponse.js +35 -0
  35. package/apps/api/src/layers/human_pattern/detectPattern.js +39 -0
  36. package/apps/api/src/layers/human_pattern/heuristics.js +28 -0
  37. package/apps/api/src/layers/human_pattern/index.js +28 -0
  38. package/apps/api/src/layers/human_pattern/socialMemory.js +35 -0
  39. package/apps/api/src/middleware/errorHandler.js +24 -0
  40. package/apps/api/src/middleware/rateLimiter.js +38 -0
  41. package/apps/api/src/middleware/requestLogger.js +31 -0
  42. package/apps/api/src/middleware/upload.js +21 -0
  43. package/apps/api/src/middleware/validation.js +70 -0
  44. package/apps/api/src/modules/data.js +25 -0
  45. package/apps/api/src/modules/marketing.js +54 -0
  46. package/apps/api/src/modules/projects.js +40 -0
  47. package/apps/api/src/openai.js +16 -0
  48. package/apps/api/src/preferences/index.js +20 -0
  49. package/apps/api/src/register_user.js +22 -0
  50. package/apps/api/src/routes/kivo.js +58 -0
  51. package/apps/api/src/routes/monitoring.js +55 -0
  52. package/apps/api/src/routes.js +656 -0
  53. package/apps/api/src/supabase.js +17 -0
  54. package/apps/api/src/tools/index.js +57 -0
  55. package/apps/api/src/wadi-brain.js +171 -0
  56. package/apps/api/supabase/migrations/20251218_audit_logs.sql +27 -0
  57. package/apps/api/supabase/migrations/v2-chat-persistence.sql +83 -0
  58. package/apps/api/supabase/migrations/v3-cascade-delete.sql +11 -0
  59. package/apps/api/supabase/migrations/v3-security-fix.sql +90 -0
  60. package/apps/api/supabase/migrations/v3-storage.sql +36 -0
  61. package/apps/api/supabase/migrations/v4-gamification.sql +83 -0
  62. package/apps/api/supabase/migrations/v5-smoke-index.sql +6 -0
  63. package/apps/api/supabase/migrations/v6-schema-integrity-fix.sql +98 -0
  64. package/apps/api/supabase/migrations/v7-performance-indexes.sql +5 -0
  65. package/apps/api/supabase/migrations/v7-security-hardening.sql +132 -0
  66. package/apps/api/supabase/migrations/v8-security-hardening.sql +79 -0
  67. package/apps/api/test_human_pattern.js +30 -0
  68. package/apps/api/test_human_pattern_vague.js +30 -0
  69. package/apps/api/test_output.txt +76 -0
  70. package/apps/api/test_vague.js +30 -0
  71. package/apps/api/test_vague_block.js +30 -0
  72. package/apps/api/test_wadi.js +31 -0
  73. package/apps/api/tsconfig.json +13 -0
  74. package/apps/frontend/.env.local +3 -0
  75. package/apps/frontend/README.md +73 -0
  76. package/apps/frontend/eslint.config.js +27 -0
  77. package/apps/frontend/index.html +49 -0
  78. package/apps/frontend/package.json +41 -0
  79. package/apps/frontend/postcss.config.cjs +6 -0
  80. package/apps/frontend/public/cursors/wadi-neutral.svg +1 -0
  81. package/apps/frontend/public/cursors/wadi-select.svg +1 -0
  82. package/apps/frontend/public/icon-192.svg +1 -0
  83. package/apps/frontend/public/icon-512.svg +1 -0
  84. package/apps/frontend/public/manifest.webmanifest +23 -0
  85. package/apps/frontend/public/sw.js +57 -0
  86. package/apps/frontend/public/vite.svg +1 -0
  87. package/apps/frontend/public/wadi.svg +5 -0
  88. package/apps/frontend/src/assets/react.svg +1 -0
  89. package/apps/frontend/src/components/AuthLoader.tsx +50 -0
  90. package/apps/frontend/src/components/ChatInput.tsx +272 -0
  91. package/apps/frontend/src/components/ChatInterface.tsx +202 -0
  92. package/apps/frontend/src/components/ErrorBoundary.tsx +52 -0
  93. package/apps/frontend/src/components/InputArea.tsx +201 -0
  94. package/apps/frontend/src/components/Layout.tsx +73 -0
  95. package/apps/frontend/src/components/MessageBubble.tsx +66 -0
  96. package/apps/frontend/src/components/OnboardingModal.tsx +108 -0
  97. package/apps/frontend/src/components/SettingsModal.tsx +187 -0
  98. package/apps/frontend/src/components/Sidebar.tsx +171 -0
  99. package/apps/frontend/src/components/WadiOnboarding.tsx +71 -0
  100. package/apps/frontend/src/components/auditor/AuditReport.tsx +166 -0
  101. package/apps/frontend/src/components/auditor/AuditorHeader.tsx +34 -0
  102. package/apps/frontend/src/components/auditor/ContextPanel.tsx +138 -0
  103. package/apps/frontend/src/components/auditor/DataDeconstructor.tsx +85 -0
  104. package/apps/frontend/src/components/auditor/DecisionWall.tsx +65 -0
  105. package/apps/frontend/src/components/auditor/Dropzone.tsx +137 -0
  106. package/apps/frontend/src/components/common/Button.tsx +97 -0
  107. package/apps/frontend/src/components/common/Card.tsx +43 -0
  108. package/apps/frontend/src/components/common/Input.tsx +73 -0
  109. package/apps/frontend/src/components/common/Modal.tsx +53 -0
  110. package/apps/frontend/src/components/ui/Button.tsx +68 -0
  111. package/apps/frontend/src/components/ui/Card.tsx +86 -0
  112. package/apps/frontend/src/components/ui/Input.tsx +28 -0
  113. package/apps/frontend/src/components/ui/LogItem.tsx +64 -0
  114. package/apps/frontend/src/components/ui/MondayButton.tsx +40 -0
  115. package/apps/frontend/src/components/ui/MondayCard.tsx +24 -0
  116. package/apps/frontend/src/components/ui/Scouter.tsx +208 -0
  117. package/apps/frontend/src/components/ui/TerminalInput.tsx +202 -0
  118. package/apps/frontend/src/components/ui/Tooltip.tsx +67 -0
  119. package/apps/frontend/src/config/chatShortcuts.ts +20 -0
  120. package/apps/frontend/src/config/supabase.ts +6 -0
  121. package/apps/frontend/src/final_status.txt +3 -0
  122. package/apps/frontend/src/hooks/useScouter.ts +28 -0
  123. package/apps/frontend/src/hooks/useStoreHydration.ts +24 -0
  124. package/apps/frontend/src/improvement_status.txt +5 -0
  125. package/apps/frontend/src/index.css +88 -0
  126. package/apps/frontend/src/main.tsx +62 -0
  127. package/apps/frontend/src/monday_status.txt +7 -0
  128. package/apps/frontend/src/pages/ChatPage.tsx +201 -0
  129. package/apps/frontend/src/pages/DashboardPage.tsx +375 -0
  130. package/apps/frontend/src/pages/IntroWadi.tsx +114 -0
  131. package/apps/frontend/src/pages/LandingPage.tsx +103 -0
  132. package/apps/frontend/src/pages/Login.tsx +190 -0
  133. package/apps/frontend/src/pages/PrivacyPage.tsx +213 -0
  134. package/apps/frontend/src/pages/ProjectDetail.tsx +80 -0
  135. package/apps/frontend/src/pages/Projects.tsx +247 -0
  136. package/apps/frontend/src/pages/TermsPage.tsx +202 -0
  137. package/apps/frontend/src/router.tsx +83 -0
  138. package/apps/frontend/src/store/authStore.ts +152 -0
  139. package/apps/frontend/src/store/chatStore.ts +837 -0
  140. package/apps/frontend/src/store/documentStore.ts +89 -0
  141. package/apps/frontend/src/store/projectsStore.ts +111 -0
  142. package/apps/frontend/src/store/runsStore.ts +98 -0
  143. package/apps/frontend/src/utils/api.ts +34 -0
  144. package/apps/frontend/src/vite-env.d.ts +7 -0
  145. package/apps/frontend/tailwind.config.cjs +32 -0
  146. package/apps/frontend/tsconfig.app.json +27 -0
  147. package/apps/frontend/tsconfig.json +7 -0
  148. package/apps/frontend/tsconfig.node.json +26 -0
  149. package/apps/frontend/vite.config.ts +25 -0
  150. package/apps/kivo/.firebase/hosting.d3d3.cache +11 -0
  151. package/apps/kivo/.firebaserc +5 -0
  152. package/apps/kivo/BRANDING_GUIDE.md +71 -0
  153. package/apps/kivo/DEPLOYMENT_READY.md +46 -0
  154. package/apps/kivo/DEPLOY_URL.md +12 -0
  155. package/apps/kivo/IMPLEMENTATION_REPORT.md +35 -0
  156. package/apps/kivo/IMPLEMENTATION_REPORT_FINAL.md +49 -0
  157. package/apps/kivo/PLAN_MOBILE_2.0.md +44 -0
  158. package/apps/kivo/PWA_VERIFICATION_GUIDE.md +77 -0
  159. package/apps/kivo/README.md +28 -0
  160. package/apps/kivo/REBUILD_REPORT.md +34 -0
  161. package/apps/kivo/UPGRADE_REPORT.md +35 -0
  162. package/apps/kivo/android/app/build.gradle +54 -0
  163. package/apps/kivo/android/app/capacitor.build.gradle +19 -0
  164. package/apps/kivo/android/app/proguard-rules.pro +21 -0
  165. package/apps/kivo/android/app/src/androidTest/java/com/getcapacitor/myapp/ExampleInstrumentedTest.java +26 -0
  166. package/apps/kivo/android/app/src/main/AndroidManifest.xml +35 -0
  167. package/apps/kivo/android/app/src/main/java/com/kivo/app/MainActivity.java +5 -0
  168. package/apps/kivo/android/app/src/main/res/drawable/ic_launcher_background.xml +170 -0
  169. package/apps/kivo/android/app/src/main/res/drawable/splash.png +0 -0
  170. package/apps/kivo/android/app/src/main/res/drawable-land-hdpi/splash.png +0 -0
  171. package/apps/kivo/android/app/src/main/res/drawable-land-ldpi/splash.png +0 -0
  172. package/apps/kivo/android/app/src/main/res/drawable-land-mdpi/splash.png +0 -0
  173. package/apps/kivo/android/app/src/main/res/drawable-land-night-hdpi/splash.png +0 -0
  174. package/apps/kivo/android/app/src/main/res/drawable-land-night-ldpi/splash.png +0 -0
  175. package/apps/kivo/android/app/src/main/res/drawable-land-night-mdpi/splash.png +0 -0
  176. package/apps/kivo/android/app/src/main/res/drawable-land-night-xhdpi/splash.png +0 -0
  177. package/apps/kivo/android/app/src/main/res/drawable-land-night-xxhdpi/splash.png +0 -0
  178. package/apps/kivo/android/app/src/main/res/drawable-land-night-xxxhdpi/splash.png +0 -0
  179. package/apps/kivo/android/app/src/main/res/drawable-land-xhdpi/splash.png +0 -0
  180. package/apps/kivo/android/app/src/main/res/drawable-land-xxhdpi/splash.png +0 -0
  181. package/apps/kivo/android/app/src/main/res/drawable-land-xxxhdpi/splash.png +0 -0
  182. package/apps/kivo/android/app/src/main/res/drawable-night/splash.png +0 -0
  183. package/apps/kivo/android/app/src/main/res/drawable-port-hdpi/splash.png +0 -0
  184. package/apps/kivo/android/app/src/main/res/drawable-port-ldpi/splash.png +0 -0
  185. package/apps/kivo/android/app/src/main/res/drawable-port-mdpi/splash.png +0 -0
  186. package/apps/kivo/android/app/src/main/res/drawable-port-night-hdpi/splash.png +0 -0
  187. package/apps/kivo/android/app/src/main/res/drawable-port-night-ldpi/splash.png +0 -0
  188. package/apps/kivo/android/app/src/main/res/drawable-port-night-mdpi/splash.png +0 -0
  189. package/apps/kivo/android/app/src/main/res/drawable-port-night-xhdpi/splash.png +0 -0
  190. package/apps/kivo/android/app/src/main/res/drawable-port-night-xxhdpi/splash.png +0 -0
  191. package/apps/kivo/android/app/src/main/res/drawable-port-night-xxxhdpi/splash.png +0 -0
  192. package/apps/kivo/android/app/src/main/res/drawable-port-xhdpi/splash.png +0 -0
  193. package/apps/kivo/android/app/src/main/res/drawable-port-xxhdpi/splash.png +0 -0
  194. package/apps/kivo/android/app/src/main/res/drawable-port-xxxhdpi/splash.png +0 -0
  195. package/apps/kivo/android/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +34 -0
  196. package/apps/kivo/android/app/src/main/res/layout/activity_main.xml +12 -0
  197. package/apps/kivo/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +9 -0
  198. package/apps/kivo/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +9 -0
  199. package/apps/kivo/android/app/src/main/res/mipmap-hdpi/ic_launcher.png +0 -0
  200. package/apps/kivo/android/app/src/main/res/mipmap-hdpi/ic_launcher_background.png +0 -0
  201. package/apps/kivo/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png +0 -0
  202. package/apps/kivo/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png +0 -0
  203. package/apps/kivo/android/app/src/main/res/mipmap-ldpi/ic_launcher.png +0 -0
  204. package/apps/kivo/android/app/src/main/res/mipmap-ldpi/ic_launcher_background.png +0 -0
  205. package/apps/kivo/android/app/src/main/res/mipmap-ldpi/ic_launcher_foreground.png +0 -0
  206. package/apps/kivo/android/app/src/main/res/mipmap-ldpi/ic_launcher_round.png +0 -0
  207. package/apps/kivo/android/app/src/main/res/mipmap-mdpi/ic_launcher.png +0 -0
  208. package/apps/kivo/android/app/src/main/res/mipmap-mdpi/ic_launcher_background.png +0 -0
  209. package/apps/kivo/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png +0 -0
  210. package/apps/kivo/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png +0 -0
  211. package/apps/kivo/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png +0 -0
  212. package/apps/kivo/android/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png +0 -0
  213. package/apps/kivo/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
  214. package/apps/kivo/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png +0 -0
  215. package/apps/kivo/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png +0 -0
  216. package/apps/kivo/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png +0 -0
  217. package/apps/kivo/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
  218. package/apps/kivo/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  219. package/apps/kivo/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png +0 -0
  220. package/apps/kivo/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png +0 -0
  221. package/apps/kivo/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
  222. package/apps/kivo/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  223. package/apps/kivo/android/app/src/main/res/values/ic_launcher_background.xml +4 -0
  224. package/apps/kivo/android/app/src/main/res/values/strings.xml +7 -0
  225. package/apps/kivo/android/app/src/main/res/values/styles.xml +22 -0
  226. package/apps/kivo/android/app/src/main/res/xml/file_paths.xml +5 -0
  227. package/apps/kivo/android/app/src/test/java/com/getcapacitor/myapp/ExampleUnitTest.java +18 -0
  228. package/apps/kivo/android/build.gradle +29 -0
  229. package/apps/kivo/android/capacitor.settings.gradle +3 -0
  230. package/apps/kivo/android/gradle/wrapper/gradle-wrapper.jar +0 -0
  231. package/apps/kivo/android/gradle/wrapper/gradle-wrapper.properties +7 -0
  232. package/apps/kivo/android/gradle.properties +22 -0
  233. package/apps/kivo/android/gradlew +252 -0
  234. package/apps/kivo/android/gradlew.bat +94 -0
  235. package/apps/kivo/android/settings.gradle +5 -0
  236. package/apps/kivo/android/variables.gradle +16 -0
  237. package/apps/kivo/assets/icon.png +0 -0
  238. package/apps/kivo/assets/splash.png +0 -0
  239. package/apps/kivo/capacitor.config.json +16 -0
  240. package/apps/kivo/firebase.json +6 -0
  241. package/apps/kivo/jest.config.js +4 -0
  242. package/apps/kivo/package.json +26 -0
  243. package/apps/kivo/tests_disabled/logic.test.js +34 -0
  244. package/apps/kivo/www/assets/icon-192.png +0 -0
  245. package/apps/kivo/www/assets/icon-512.png +0 -0
  246. package/apps/kivo/www/assets/kivo-icon.png +0 -0
  247. package/apps/kivo/www/assets/pop.mp3 +0 -0
  248. package/apps/kivo/www/favicon.ico +0 -0
  249. package/apps/kivo/www/firebase-config.js +75 -0
  250. package/apps/kivo/www/index.html +38 -0
  251. package/apps/kivo/www/manifest.json +29 -0
  252. package/apps/kivo/www/script.js +72 -0
  253. package/apps/kivo/www/style.css +82 -0
  254. package/apps/kivo/www/sw.js +46 -0
  255. package/apps/kivo-brain-api/.env.example +2 -0
  256. package/apps/kivo-brain-api/KIVO_BACKEND_SETUP.md +27 -0
  257. package/apps/kivo-brain-api/controllers/kivoController.js +31 -0
  258. package/apps/kivo-brain-api/index.js +24 -0
  259. package/apps/kivo-brain-api/package.json +17 -0
  260. package/apps/kivo-brain-api/routes/message.js +8 -0
  261. package/apps/kivo-brain-api/services/openaiService.js +64 -0
  262. package/apps/tests/wadi-tests.js +155 -0
  263. package/apps/wadi-brain/docs/README_REMOVE_OPTIONS.md +26 -0
  264. package/cli/commands/deploy.js +10 -0
  265. package/cli/commands/docs.js +16 -0
  266. package/cli/commands/explain.js +29 -0
  267. package/cli/commands/lint.js +14 -0
  268. package/cli/index.js +26 -0
  269. package/cli/package.json +12 -0
  270. package/docs/CNAME +1 -0
  271. package/docs/README.md +38 -0
  272. package/docs/USO.md +30 -0
  273. package/docs/index.html +46 -0
  274. package/eslint.config.js +101 -0
  275. package/final_validation.json +27 -0
  276. package/frontend_listado.txt +33387 -0
  277. package/listado.txt +12591 -0
  278. package/package.json +46 -0
  279. package/packages/logger/index.js +43 -0
  280. package/packages/logger/package.json +19 -0
  281. package/packages/logger/test-logger.js +7 -0
  282. package/packages_listado.txt +801 -0
  283. package/pnpm-workspace.yaml +6 -0
  284. package/reseteador_existencial.ps1 +40 -0
  285. package/scripts/bump-version.js +26 -0
  286. package/scripts/env.ps1 +13 -0
  287. package/scripts/setup_android.ps1 +25 -0
  288. package/scripts/setup_virtual_env.ps1 +77 -0
  289. package/scripts/smoke-test.js +84 -0
  290. package/scripts/trigger_render_deploy.ps1 +3 -0
  291. package/scripts/validate-release.js +34 -0
  292. package/temp_check.js +57 -0
  293. package/tsconfig.json +5 -0
  294. package/validation_report.json +27 -0
@@ -0,0 +1,49 @@
1
+ # Kivo Mobile 2.0 Implementation Report
2
+
3
+ ## 1. Visual Mockup
4
+
5
+ - [x] Generated UI Mockup.
6
+
7
+ ## 2. Mobile Responsive UI (apps/kivo/www/)
8
+
9
+ - [x] **Layout**:
10
+ - [x] Updated `style.css` for iMessage/WhatsApp style bubbles.
11
+ - [x] Ensured fixed input bar with `position: sticky` or `fixed`.
12
+ - [x] Added smooth scrolling and entry animations.
13
+ - [x] **Responsive CSS**:
14
+ - [x] Added media queries for mobile portrait/landscape and tablets.
15
+ - [x] Optimized typography and spacing.
16
+ - [x] **Behavior**:
17
+ - [x] Prevented zoom on input focus.
18
+ - [x] Handled virtual keyboard layout shifts.
19
+
20
+ ## 3. Android App via Capacitor
21
+
22
+ - [x] **Configuration**:
23
+ - [x] Updated `capacitor.config.json` with new App ID and plugins.
24
+ - [x] **Assets**:
25
+ - [x] Generated icons and splash screens.
26
+ - [x] **Sync & Build**:
27
+ - [x] Ran `npx cap sync`.
28
+ - [x] Verified Android project structure.
29
+
30
+ ## 4. Full PWA Implementation
31
+
32
+ - [x] **Manifest**:
33
+ - [x] Updated `manifest.json` with full PWA properties (standalone, icons, colors).
34
+ - [x] **Service Worker**:
35
+ - [x] Implemented robust caching strategies in `sw.js`.
36
+ - [x] Added offline support.
37
+ - [x] **Install Flow**:
38
+ - [x] Added "Install" button logic (optional/hidden by default but ready).
39
+
40
+ ## 5. Verification
41
+
42
+ - [x] Verified UI on mobile viewport.
43
+ - [x] Verified PWA installability (Lighthouse/DevTools).
44
+ - [x] Verified Android build readiness.
45
+
46
+ ## Next Steps
47
+
48
+ - **Test PWA**: Open `http://localhost:3000` on a mobile device (via network) and try "Add to Home Screen".
49
+ - **Build Android**: Open `android` folder in Android Studio and run the app on a device/emulator.
@@ -0,0 +1,44 @@
1
+ # Kivo Mobile 2.0 Implementation Plan
2
+
3
+ ## 1. Visual Mockup
4
+
5
+ - [x] Generate UI Mockup (in progress)
6
+
7
+ ## 2. Mobile Responsive UI (apps/kivo/www/)
8
+
9
+ - [ ] **Layout**:
10
+ - [ ] Update `style.css` for iMessage/WhatsApp style bubbles.
11
+ - [ ] Ensure fixed input bar with `position: sticky` or `fixed`.
12
+ - [ ] Add smooth scrolling and entry animations.
13
+ - [ ] **Responsive CSS**:
14
+ - [ ] Add media queries for mobile portrait/landscape and tablets.
15
+ - [ ] Optimize typography and spacing.
16
+ - [ ] **Behavior**:
17
+ - [ ] Prevent zoom on input focus.
18
+ - [ ] Handle virtual keyboard layout shifts.
19
+
20
+ ## 3. Android App via Capacitor
21
+
22
+ - [ ] **Configuration**:
23
+ - [ ] Update `capacitor.config.json` with new App ID and plugins.
24
+ - [ ] **Assets**:
25
+ - [ ] Generate icons and splash screens.
26
+ - [ ] **Sync & Build**:
27
+ - [ ] Run `npx cap sync`.
28
+ - [ ] Verify Android project structure.
29
+
30
+ ## 4. Full PWA Implementation
31
+
32
+ - [ ] **Manifest**:
33
+ - [ ] Update `manifest.json` with full PWA properties (standalone, icons, colors).
34
+ - [ ] **Service Worker**:
35
+ - [ ] Implement robust caching strategies in `sw.js`.
36
+ - [ ] Add offline support.
37
+ - [ ] **Install Flow**:
38
+ - [ ] Add "Install" button logic (optional/hidden by default but ready).
39
+
40
+ ## 5. Verification
41
+
42
+ - [ ] Verify UI on mobile viewport.
43
+ - [ ] Verify PWA installability (Lighthouse/DevTools).
44
+ - [ ] Verify Android build readiness.
@@ -0,0 +1,77 @@
1
+ # Guía de Verificación Técnica y Mantenimiento PWA - Kivo 5.0
2
+
3
+ Esta guía garantiza que la PWA de Kivo se despliegue correctamente en Firebase Hosting sin errores de recursos y con un ciclo de vida de Service Worker saludable.
4
+
5
+ ## 1. Verificación Manual Post-Despliegue
6
+
7
+ Abre [Kivo Web](https://kivo-8c62e.web.app) en Chrome Incognito para evitar cachés previas.
8
+
9
+ ### ✅ Estado del Service Worker
10
+
11
+ 1. Abre DevTools (`F12`) > **Application** > **Service Workers**.
12
+ 2. Verifica que el Status sea `Activated` y corriendo.
13
+ 3. El nombre debe ser `kivo-v5` (definido en `sw.js`).
14
+ 4. Si ves "waiting to activate", haz clic en "skipWaiting" (esto ya debería ser automático con la última actualización).
15
+
16
+ ### ✅ Carga de Recursos (Network)
17
+
18
+ 1. Ve a la pestaña **Network**.
19
+ 2. Filtra por **"All"** y recarga la página (`Ctrl + R`).
20
+ 3. Verifica que NO haya líneas rojas (404).
21
+ 4. Confirma la carga exitosa de:
22
+ - `favicon.ico` (200 OK)
23
+ - `manifest.json` (200 OK)
24
+ - `sw.js` (200 OK)
25
+ - `pop.mp3` (200 OK - puede que no se cargue hasta que se use, verificar en `Preload` si aplica o intentar reproducir sonido).
26
+ - `kivo-icon.png` (200 OK).
27
+
28
+ ### ✅ Instalación (Manifest)
29
+
30
+ 1. Ve a la pestaña **Application** > **Manifest**.
31
+ 2. No debe haber errores ni advertencias.
32
+ 3. Los iconos deben mostrarse correctamente.
33
+ 4. "App installability" no debe tener advertencias bloqueantes.
34
+
35
+ ## 2. Optimización y Mantenimiento
36
+
37
+ ### 🔄 Ciclo de Vida del Service Worker
38
+
39
+ Hemos añadido `self.skipWaiting()` y `self.clients.claim()` en `sw.js`. Esto asegura que:
40
+
41
+ - **skipWaiting**: El nuevo SW se instala y activa inmediatamente sin esperar a que el usuario cierre todas las pestañas.
42
+ - **clients.claim**: El nuevo SW toma control de la página inmediatamente, sirviendo los nuevos assets al instante.
43
+
44
+ ### 🧹 Limpieza de Caché
45
+
46
+ El evento `activate` incluye una lista blanca (`CACHE_NAME = 'kivo-v5'`). Cualquier caché antigua (ej: `kivo-v4`) será borrada automáticamente.
47
+
48
+ ### 🚀 Compresión y HTTP/2
49
+
50
+ Firebase Hosting habilita automáticamente HTTP/2 y compresión Brotli/Gzip para todos los recursos estáticos. No se requiere configuración adicional.
51
+
52
+ ## 3. Integración en Monorepo
53
+
54
+ Actualmente el ecosistema WADI convive pero no está fuertemente acoplado en código:
55
+
56
+ - **Kivo (apps/kivo)**:
57
+ - Frontend independiente (Vanilla JS).
58
+ - Consume `kivo-brain-api` vía URL directa de Railway.
59
+ - Usa Firebase solo para Hosting y Firestore (configurado en `firebase-config.js`).
60
+
61
+ - **Frontend (apps/frontend)**:
62
+ - Proyecto React/Vite.
63
+ - Configurado con Supabase.
64
+ - Aún no consme `wadi-api` activamente en el código base revisado.
65
+
66
+ ## 4. Comandos Útiles
67
+
68
+ **Desplegar solo Kivo:**
69
+
70
+ ```bash
71
+ pnpm --filter kivo build # (Si tuviera build step, actualmente es copia estática)
72
+ cd apps/kivo
73
+ firebase deploy --only hosting
74
+ ```
75
+
76
+ **Verificar caché local PWA:**
77
+ En DevTools > Application > Storage > "Clear Site Data" para resetear completamente el estado del cliente si encuentras problemas extraños.
@@ -0,0 +1,28 @@
1
+ # Kivo V12
2
+
3
+ Tu espacio emocional, técnico y creativo. Este proyecto incluye:
4
+
5
+ - Motor emocional adaptativo
6
+ - Portada y menú de inicio
7
+ - Firebase integrado
8
+ - Estilos dinámicos según emoción y modo
9
+ - Modo instalable (PWA)
10
+
11
+ ## 🚀 Cómo desplegar
12
+
13
+ 1. Instalar Firebase CLI:
14
+ `npm install -g firebase-tools`
15
+
16
+ 2. Iniciar sesión:
17
+ `firebase login`
18
+
19
+ 3. Inicializar proyecto:
20
+ `firebase init`
21
+
22
+ 4. Subir:
23
+ `firebase deploy`
24
+
25
+ ## 📱 Cómo instalar como app
26
+
27
+ - Abrí en Chrome
28
+ - Tocá “Agregar a pantalla de inicio”
@@ -0,0 +1,34 @@
1
+ # Kivo Mobile 2.0 - Final Rebuild Report
2
+
3
+ ## 1. Archivos Regenerados
4
+
5
+ Se ha reconstruido completamente la carpeta `apps/kivo/www/` con la siguiente estructura limpia:
6
+
7
+ - **index.html**: Estructura PWA completa, meta tags corregidos, carga de recursos relativa.
8
+ - **style.css**: Diseño Mobile 2.0 (Glassmorphism, paleta oficial, responsive).
9
+ - **script.js**: Lógica "Standalone" (Cerebro local), manejo de PWA install, sin errores de audio.
10
+ - **manifest.json**: Configuración PWA válida con iconos enlazados.
11
+ - **sw.js**: Service Worker para caché offline.
12
+ - **assets/**: Iconos generados (192x192, 512x512).
13
+ - **firebase-config.js**: Recuperado de la versión anterior funcional.
14
+
15
+ ## 2. Correcciones Aplicadas
16
+
17
+ - **Error 416 (Audio)**: Eliminada la precarga de `pop.mp3`.
18
+ - **Rutas**: Todas las referencias son relativas (`./`) para compatibilidad con Firebase Hosting.
19
+ - **PWA**: Meta tags actualizados (`mobile-web-app-capable`) y lógica de instalación protegida.
20
+ - **Cerebro**: Lógica `kivoResponse` integrada en el cliente para funcionamiento sin backend externo.
21
+
22
+ ## 3. Estado del Despliegue
23
+
24
+ - **Hosting**: Firebase Hosting
25
+ - **URLs**:
26
+ - https://kivo-8c62e.web.app
27
+ - https://kivo-8c62e.firebaseapp.com
28
+ - **Estado**: ONLINE
29
+
30
+ ## 4. Verificación
31
+
32
+ - **Carga**: OK (Sin pantalla blanca).
33
+ - **Chat**: OK (Responde localmente).
34
+ - **PWA**: OK (Instalable).
@@ -0,0 +1,35 @@
1
+ # Kivo Mobile 2.0 Upgrade Report
2
+
3
+ ## 1. UI & UX Overhaul
4
+
5
+ - **Structure**: Refactored `index.html` to support a modern mobile layout with fixed headers and footers.
6
+ - **Styling**: Implemented a complete CSS redesign (`style.css`) featuring:
7
+ - iMessage/WhatsApp-style message bubbles.
8
+ - Dynamic viewport height (`100dvh`) for perfect mobile fit.
9
+ - Safe area insets for notched devices.
10
+ - Glassmorphism effects on header and input bar.
11
+ - **Behavior**: Added `scrollToBottom` helper for smooth auto-scrolling and improved keyboard handling.
12
+
13
+ ## 2. PWA Implementation
14
+
15
+ - **Manifest**: Updated `manifest.json` with standalone mode, theme colors, and orientation settings.
16
+ - **Service Worker**: `sw.js` is configured for caching critical assets.
17
+ - **Install Flow**: Added a custom "Install App" button that appears when the `beforeinstallprompt` event fires.
18
+
19
+ ## 3. Android (Capacitor)
20
+
21
+ - **Config**: `capacitor.config.json` updated to `com.kivo.chat` with `https` scheme.
22
+ - **Sync**: Web assets synchronized to Android project.
23
+ - **Assets**: Native icons and splash screens generated.
24
+
25
+ ## 4. Status
26
+
27
+ - **Web/Mobile Web**: Ready. Responsive and touch-friendly.
28
+ - **PWA**: Ready. Installable and offline-capable.
29
+ - **Android**: Ready to build. Open `android` folder in Android Studio to generate APK/AAB.
30
+
31
+ ## 5. Verification
32
+
33
+ - **Local Test**: Run `npm start` and open `http://localhost:3000`.
34
+ - **Mobile Test**: Access via network IP on a phone.
35
+ - **Native Build**: Use Android Studio to build the final artifact.
@@ -0,0 +1,54 @@
1
+ apply plugin: 'com.android.application'
2
+
3
+ android {
4
+ namespace "com.kivo.app"
5
+ compileSdk rootProject.ext.compileSdkVersion
6
+ defaultConfig {
7
+ applicationId "com.kivo.app"
8
+ minSdkVersion rootProject.ext.minSdkVersion
9
+ targetSdkVersion rootProject.ext.targetSdkVersion
10
+ versionCode 1
11
+ versionName "1.0"
12
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
13
+ aaptOptions {
14
+ // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps.
15
+ // Default: https://android.googlesource.com/platform/frameworks/base/+/282e181b58cf72b6ca770dc7ca5f91f135444502/tools/aapt/AaptAssets.cpp#61
16
+ ignoreAssetsPattern '!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~'
17
+ }
18
+ }
19
+ buildTypes {
20
+ release {
21
+ minifyEnabled false
22
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
23
+ }
24
+ }
25
+ }
26
+
27
+ repositories {
28
+ flatDir{
29
+ dirs '../capacitor-cordova-android-plugins/src/main/libs', 'libs'
30
+ }
31
+ }
32
+
33
+ dependencies {
34
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
35
+ implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion"
36
+ implementation "androidx.coordinatorlayout:coordinatorlayout:$androidxCoordinatorLayoutVersion"
37
+ implementation "androidx.core:core-splashscreen:$coreSplashScreenVersion"
38
+ implementation project(':capacitor-android')
39
+ testImplementation "junit:junit:$junitVersion"
40
+ androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion"
41
+ androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion"
42
+ implementation project(':capacitor-cordova-android-plugins')
43
+ }
44
+
45
+ apply from: 'capacitor.build.gradle'
46
+
47
+ try {
48
+ def servicesJSON = file('google-services.json')
49
+ if (servicesJSON.text) {
50
+ apply plugin: 'com.google.gms.google-services'
51
+ }
52
+ } catch(Exception e) {
53
+ logger.info("google-services.json not found, google-services plugin not applied. Push Notifications won't work")
54
+ }
@@ -0,0 +1,19 @@
1
+ // DO NOT EDIT THIS FILE! IT IS GENERATED EACH TIME "capacitor update" IS RUN
2
+
3
+ android {
4
+ compileOptions {
5
+ sourceCompatibility JavaVersion.VERSION_21
6
+ targetCompatibility JavaVersion.VERSION_21
7
+ }
8
+ }
9
+
10
+ apply from: "../capacitor-cordova-android-plugins/cordova.variables.gradle"
11
+ dependencies {
12
+
13
+
14
+ }
15
+
16
+
17
+ if (hasProperty('postBuildExtras')) {
18
+ postBuildExtras()
19
+ }
@@ -0,0 +1,21 @@
1
+ # Add project specific ProGuard rules here.
2
+ # You can control the set of applied configuration files using the
3
+ # proguardFiles setting in build.gradle.
4
+ #
5
+ # For more details, see
6
+ # http://developer.android.com/guide/developing/tools/proguard.html
7
+
8
+ # If your project uses WebView with JS, uncomment the following
9
+ # and specify the fully qualified class name to the JavaScript interface
10
+ # class:
11
+ #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12
+ # public *;
13
+ #}
14
+
15
+ # Uncomment this to preserve the line number information for
16
+ # debugging stack traces.
17
+ #-keepattributes SourceFile,LineNumberTable
18
+
19
+ # If you keep the line number information, uncomment this to
20
+ # hide the original source file name.
21
+ #-renamesourcefileattribute SourceFile
@@ -0,0 +1,26 @@
1
+ package com.getcapacitor.myapp;
2
+
3
+ import static org.junit.Assert.*;
4
+
5
+ import android.content.Context;
6
+ import androidx.test.ext.junit.runners.AndroidJUnit4;
7
+ import androidx.test.platform.app.InstrumentationRegistry;
8
+ import org.junit.Test;
9
+ import org.junit.runner.RunWith;
10
+
11
+ /**
12
+ * Instrumented test, which will execute on an Android device.
13
+ *
14
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
15
+ */
16
+ @RunWith(AndroidJUnit4.class)
17
+ public class ExampleInstrumentedTest {
18
+
19
+ @Test
20
+ public void useAppContext() throws Exception {
21
+ // Context of the app under test.
22
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
23
+
24
+ assertEquals("com.getcapacitor.app", appContext.getPackageName());
25
+ }
26
+ }
@@ -0,0 +1,35 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android">
3
+ <application
4
+ android:allowBackup="true"
5
+ android:icon="@mipmap/ic_launcher"
6
+ android:label="@string/app_name"
7
+ android:roundIcon="@mipmap/ic_launcher_round"
8
+ android:supportsRtl="true"
9
+ android:theme="@style/AppTheme">
10
+ <activity
11
+ android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode|navigation"
12
+ android:name=".MainActivity"
13
+ android:label="@string/title_activity_main"
14
+ android:theme="@style/AppTheme.NoActionBarLaunch"
15
+ android:launchMode="singleTask"
16
+ android:exported="true">
17
+ <intent-filter>
18
+ <action android:name="android.intent.action.MAIN" />
19
+ <category android:name="android.intent.category.LAUNCHER" />
20
+ </intent-filter>
21
+ </activity>
22
+
23
+ <provider
24
+ android:name="androidx.core.content.FileProvider"
25
+ android:authorities="${applicationId}.fileprovider"
26
+ android:exported="false"
27
+ android:grantUriPermissions="true">
28
+ <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" />
29
+ </provider>
30
+ </application>
31
+
32
+ <!-- Permissions -->
33
+
34
+ <uses-permission android:name="android.permission.INTERNET" />
35
+ </manifest>
@@ -0,0 +1,5 @@
1
+ package com.kivo.app;
2
+
3
+ import com.getcapacitor.BridgeActivity;
4
+
5
+ public class MainActivity extends BridgeActivity {}
@@ -0,0 +1,170 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <vector xmlns:android="http://schemas.android.com/apk/res/android"
3
+ android:width="108dp"
4
+ android:height="108dp"
5
+ android:viewportHeight="108"
6
+ android:viewportWidth="108">
7
+ <path
8
+ android:fillColor="#26A69A"
9
+ android:pathData="M0,0h108v108h-108z" />
10
+ <path
11
+ android:fillColor="#00000000"
12
+ android:pathData="M9,0L9,108"
13
+ android:strokeColor="#33FFFFFF"
14
+ android:strokeWidth="0.8" />
15
+ <path
16
+ android:fillColor="#00000000"
17
+ android:pathData="M19,0L19,108"
18
+ android:strokeColor="#33FFFFFF"
19
+ android:strokeWidth="0.8" />
20
+ <path
21
+ android:fillColor="#00000000"
22
+ android:pathData="M29,0L29,108"
23
+ android:strokeColor="#33FFFFFF"
24
+ android:strokeWidth="0.8" />
25
+ <path
26
+ android:fillColor="#00000000"
27
+ android:pathData="M39,0L39,108"
28
+ android:strokeColor="#33FFFFFF"
29
+ android:strokeWidth="0.8" />
30
+ <path
31
+ android:fillColor="#00000000"
32
+ android:pathData="M49,0L49,108"
33
+ android:strokeColor="#33FFFFFF"
34
+ android:strokeWidth="0.8" />
35
+ <path
36
+ android:fillColor="#00000000"
37
+ android:pathData="M59,0L59,108"
38
+ android:strokeColor="#33FFFFFF"
39
+ android:strokeWidth="0.8" />
40
+ <path
41
+ android:fillColor="#00000000"
42
+ android:pathData="M69,0L69,108"
43
+ android:strokeColor="#33FFFFFF"
44
+ android:strokeWidth="0.8" />
45
+ <path
46
+ android:fillColor="#00000000"
47
+ android:pathData="M79,0L79,108"
48
+ android:strokeColor="#33FFFFFF"
49
+ android:strokeWidth="0.8" />
50
+ <path
51
+ android:fillColor="#00000000"
52
+ android:pathData="M89,0L89,108"
53
+ android:strokeColor="#33FFFFFF"
54
+ android:strokeWidth="0.8" />
55
+ <path
56
+ android:fillColor="#00000000"
57
+ android:pathData="M99,0L99,108"
58
+ android:strokeColor="#33FFFFFF"
59
+ android:strokeWidth="0.8" />
60
+ <path
61
+ android:fillColor="#00000000"
62
+ android:pathData="M0,9L108,9"
63
+ android:strokeColor="#33FFFFFF"
64
+ android:strokeWidth="0.8" />
65
+ <path
66
+ android:fillColor="#00000000"
67
+ android:pathData="M0,19L108,19"
68
+ android:strokeColor="#33FFFFFF"
69
+ android:strokeWidth="0.8" />
70
+ <path
71
+ android:fillColor="#00000000"
72
+ android:pathData="M0,29L108,29"
73
+ android:strokeColor="#33FFFFFF"
74
+ android:strokeWidth="0.8" />
75
+ <path
76
+ android:fillColor="#00000000"
77
+ android:pathData="M0,39L108,39"
78
+ android:strokeColor="#33FFFFFF"
79
+ android:strokeWidth="0.8" />
80
+ <path
81
+ android:fillColor="#00000000"
82
+ android:pathData="M0,49L108,49"
83
+ android:strokeColor="#33FFFFFF"
84
+ android:strokeWidth="0.8" />
85
+ <path
86
+ android:fillColor="#00000000"
87
+ android:pathData="M0,59L108,59"
88
+ android:strokeColor="#33FFFFFF"
89
+ android:strokeWidth="0.8" />
90
+ <path
91
+ android:fillColor="#00000000"
92
+ android:pathData="M0,69L108,69"
93
+ android:strokeColor="#33FFFFFF"
94
+ android:strokeWidth="0.8" />
95
+ <path
96
+ android:fillColor="#00000000"
97
+ android:pathData="M0,79L108,79"
98
+ android:strokeColor="#33FFFFFF"
99
+ android:strokeWidth="0.8" />
100
+ <path
101
+ android:fillColor="#00000000"
102
+ android:pathData="M0,89L108,89"
103
+ android:strokeColor="#33FFFFFF"
104
+ android:strokeWidth="0.8" />
105
+ <path
106
+ android:fillColor="#00000000"
107
+ android:pathData="M0,99L108,99"
108
+ android:strokeColor="#33FFFFFF"
109
+ android:strokeWidth="0.8" />
110
+ <path
111
+ android:fillColor="#00000000"
112
+ android:pathData="M19,29L89,29"
113
+ android:strokeColor="#33FFFFFF"
114
+ android:strokeWidth="0.8" />
115
+ <path
116
+ android:fillColor="#00000000"
117
+ android:pathData="M19,39L89,39"
118
+ android:strokeColor="#33FFFFFF"
119
+ android:strokeWidth="0.8" />
120
+ <path
121
+ android:fillColor="#00000000"
122
+ android:pathData="M19,49L89,49"
123
+ android:strokeColor="#33FFFFFF"
124
+ android:strokeWidth="0.8" />
125
+ <path
126
+ android:fillColor="#00000000"
127
+ android:pathData="M19,59L89,59"
128
+ android:strokeColor="#33FFFFFF"
129
+ android:strokeWidth="0.8" />
130
+ <path
131
+ android:fillColor="#00000000"
132
+ android:pathData="M19,69L89,69"
133
+ android:strokeColor="#33FFFFFF"
134
+ android:strokeWidth="0.8" />
135
+ <path
136
+ android:fillColor="#00000000"
137
+ android:pathData="M19,79L89,79"
138
+ android:strokeColor="#33FFFFFF"
139
+ android:strokeWidth="0.8" />
140
+ <path
141
+ android:fillColor="#00000000"
142
+ android:pathData="M29,19L29,89"
143
+ android:strokeColor="#33FFFFFF"
144
+ android:strokeWidth="0.8" />
145
+ <path
146
+ android:fillColor="#00000000"
147
+ android:pathData="M39,19L39,89"
148
+ android:strokeColor="#33FFFFFF"
149
+ android:strokeWidth="0.8" />
150
+ <path
151
+ android:fillColor="#00000000"
152
+ android:pathData="M49,19L49,89"
153
+ android:strokeColor="#33FFFFFF"
154
+ android:strokeWidth="0.8" />
155
+ <path
156
+ android:fillColor="#00000000"
157
+ android:pathData="M59,19L59,89"
158
+ android:strokeColor="#33FFFFFF"
159
+ android:strokeWidth="0.8" />
160
+ <path
161
+ android:fillColor="#00000000"
162
+ android:pathData="M69,19L69,89"
163
+ android:strokeColor="#33FFFFFF"
164
+ android:strokeWidth="0.8" />
165
+ <path
166
+ android:fillColor="#00000000"
167
+ android:pathData="M79,19L79,89"
168
+ android:strokeColor="#33FFFFFF"
169
+ android:strokeWidth="0.8" />
170
+ </vector>