@notis_ai/cli 0.2.13 → 0.2.15

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 (295) hide show
  1. package/README.md +125 -21
  2. package/dist/agent-hooks/notis-agent-hook.mjs +19750 -0
  3. package/{skills → dist/base-skills}/notis-apps/SKILL.md +93 -58
  4. package/{skills → dist/base-skills}/notis-cli/SKILL.md +9 -9
  5. package/dist/base-skills/notis-query/SKILL.md +705 -0
  6. package/dist/skill-sync/index.js +1528 -0
  7. package/dist/skill-sync/index.js.map +7 -0
  8. package/package.json +5 -2
  9. package/skills/notis-apps/cli.md +44 -18
  10. package/skills/notis-cli/AGENT_INSTRUCTIONS.md +39 -0
  11. package/skills/notis-onboarding/BRIEF.md +16 -0
  12. package/src/agent-hook-entry.js +5 -0
  13. package/src/cli.js +23 -14
  14. package/src/command-specs/agents.js +392 -0
  15. package/src/command-specs/apps.js +1090 -418
  16. package/src/command-specs/auth.js +63 -10
  17. package/src/command-specs/handover.js +374 -0
  18. package/src/command-specs/index.js +9 -0
  19. package/src/command-specs/onboarding.js +69 -5
  20. package/src/command-specs/skills.js +56 -0
  21. package/src/command-specs/tools.js +6 -0
  22. package/src/runtime/agent-memory-state.js +126 -0
  23. package/src/runtime/agent-setup.js +383 -0
  24. package/src/runtime/app-dev-consumers.js +154 -0
  25. package/src/runtime/app-dev-host-lock.js +80 -0
  26. package/src/runtime/app-dev-roots.js +284 -0
  27. package/src/runtime/app-dev-server.js +229 -30
  28. package/src/runtime/app-dev-sessions.js +105 -145
  29. package/src/runtime/app-platform.js +1499 -161
  30. package/src/runtime/app-registry-scaffolds.js +367 -0
  31. package/src/runtime/base-skills.d.ts +20 -0
  32. package/src/runtime/base-skills.js +167 -0
  33. package/src/runtime/delegated-context.js +68 -0
  34. package/src/runtime/git.js +233 -0
  35. package/src/runtime/login-listener.js +15 -0
  36. package/src/runtime/oauth.js +1506 -141
  37. package/src/runtime/output.js +7 -0
  38. package/src/runtime/ports.js +16 -0
  39. package/src/runtime/profiles.js +0 -5
  40. package/src/runtime/skill-sync/cloud-client.ts +96 -0
  41. package/src/runtime/skill-sync/index.ts +644 -0
  42. package/src/runtime/skill-sync/local-scanner.ts +1046 -0
  43. package/src/runtime/skill-sync/symlink-manager.ts +383 -0
  44. package/src/runtime/skill-sync/sync-plan.ts +22 -0
  45. package/src/runtime/skill-sync/types.ts +103 -0
  46. package/src/runtime/skill-sync/write-cloud-skill.ts +50 -0
  47. package/src/runtime/store-screenshot.js +6 -1
  48. package/src/runtime/sync-skills.d.ts +37 -0
  49. package/src/runtime/sync-skills.js +215 -0
  50. package/src/runtime/transport.js +19 -2
  51. package/template/.harness/index.html.tmpl +116 -47
  52. package/template/app/layout.tsx +5 -1
  53. package/template/notis.config.ts +1 -0
  54. package/template/packages/sdk/package.json +2 -1
  55. package/template/packages/sdk/src/components/DocumentEditor.tsx +13 -3
  56. package/template/packages/sdk/src/components/MarkdownEditor.tsx +121 -0
  57. package/template/packages/sdk/src/components/MultiSelectActionBar.tsx +37 -119
  58. package/template/packages/sdk/src/components/MultiSelectCheckbox.tsx +5 -1
  59. package/template/packages/sdk/src/components/MultiSelectDragOverlay.tsx +1 -1
  60. package/template/packages/sdk/src/components/NotisSelectionBoundary.tsx +55 -0
  61. package/template/packages/sdk/src/components/ShortcutHints.tsx +56 -0
  62. package/template/packages/sdk/src/config.ts +71 -0
  63. package/template/packages/sdk/src/documents.ts +28 -1
  64. package/template/packages/sdk/src/hooks/useActiveResource.ts +19 -0
  65. package/template/packages/sdk/src/hooks/useCloudComputer.ts +97 -0
  66. package/template/packages/sdk/src/hooks/useCollectionInteractions.ts +709 -0
  67. package/template/packages/sdk/src/hooks/useDatabaseSubscription.ts +76 -0
  68. package/template/packages/sdk/src/hooks/useHandover.ts +78 -0
  69. package/template/packages/sdk/src/hooks/useMultiSelect.ts +44 -482
  70. package/template/packages/sdk/src/hooks/useTool.ts +5 -4
  71. package/template/packages/sdk/src/index.ts +64 -2
  72. package/template/packages/sdk/src/interactions/actions.ts +46 -0
  73. package/template/packages/sdk/src/interactions/shortcuts.tsx +628 -0
  74. package/template/packages/sdk/src/interactions.ts +41 -0
  75. package/template/packages/sdk/src/provider.tsx +2 -1
  76. package/template/packages/sdk/src/runtime.ts +219 -3
  77. package/dist/scaffolds/notis-database/CHANGELOG.md +0 -5
  78. package/dist/scaffolds/notis-database/app/globals.css +0 -44
  79. package/dist/scaffolds/notis-database/app/layout.tsx +0 -6
  80. package/dist/scaffolds/notis-database/app/page.tsx +0 -1088
  81. package/dist/scaffolds/notis-database/components/ui/badge.tsx +0 -28
  82. package/dist/scaffolds/notis-database/components/ui/button.tsx +0 -53
  83. package/dist/scaffolds/notis-database/components/ui/card.tsx +0 -56
  84. package/dist/scaffolds/notis-database/components/ui/table.tsx +0 -120
  85. package/dist/scaffolds/notis-database/components.json +0 -20
  86. package/dist/scaffolds/notis-database/index.html +0 -12
  87. package/dist/scaffolds/notis-database/lib/types.ts +0 -132
  88. package/dist/scaffolds/notis-database/lib/utils.ts +0 -6
  89. package/dist/scaffolds/notis-database/metadata/screenshot-1.png +0 -0
  90. package/dist/scaffolds/notis-database/metadata/screenshot-2.png +0 -0
  91. package/dist/scaffolds/notis-database/metadata/screenshot-3.png +0 -0
  92. package/dist/scaffolds/notis-database/metadata/screenshot-4.png +0 -0
  93. package/dist/scaffolds/notis-database/metadata/screenshot-5.png +0 -0
  94. package/dist/scaffolds/notis-database/metadata/screenshot-fixtures.json +0 -1839
  95. package/dist/scaffolds/notis-database/notis.config.ts +0 -73
  96. package/dist/scaffolds/notis-database/package-lock.json +0 -3935
  97. package/dist/scaffolds/notis-database/package.json +0 -32
  98. package/dist/scaffolds/notis-database/packages/sdk/package.json +0 -36
  99. package/dist/scaffolds/notis-database/packages/sdk/src/components/DocumentEditor.tsx +0 -93
  100. package/dist/scaffolds/notis-database/packages/sdk/src/components/Markdown.tsx +0 -60
  101. package/dist/scaffolds/notis-database/packages/sdk/src/components/MultiSelectActionBar.tsx +0 -278
  102. package/dist/scaffolds/notis-database/packages/sdk/src/components/MultiSelectCheckbox.tsx +0 -91
  103. package/dist/scaffolds/notis-database/packages/sdk/src/components/MultiSelectDragOverlay.tsx +0 -39
  104. package/dist/scaffolds/notis-database/packages/sdk/src/config.ts +0 -196
  105. package/dist/scaffolds/notis-database/packages/sdk/src/documents.ts +0 -229
  106. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useBackend.ts +0 -41
  107. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useDatabaseSchema.ts +0 -85
  108. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useDocument.ts +0 -78
  109. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useDocuments.ts +0 -121
  110. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useMultiSelect.ts +0 -539
  111. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useNotis.ts +0 -34
  112. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useNotisNavigation.ts +0 -49
  113. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useTool.ts +0 -64
  114. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useTools.ts +0 -56
  115. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useTopBarSearch.ts +0 -73
  116. package/dist/scaffolds/notis-database/packages/sdk/src/hooks/useUpsertDocument.ts +0 -95
  117. package/dist/scaffolds/notis-database/packages/sdk/src/index.ts +0 -83
  118. package/dist/scaffolds/notis-database/packages/sdk/src/provider.tsx +0 -43
  119. package/dist/scaffolds/notis-database/packages/sdk/src/runtime.ts +0 -220
  120. package/dist/scaffolds/notis-database/packages/sdk/src/styles.css +0 -186
  121. package/dist/scaffolds/notis-database/packages/sdk/src/ui.ts +0 -15
  122. package/dist/scaffolds/notis-database/packages/sdk/src/vite.ts +0 -56
  123. package/dist/scaffolds/notis-database/packages/sdk/tsconfig.json +0 -15
  124. package/dist/scaffolds/notis-database/postcss.config.mjs +0 -8
  125. package/dist/scaffolds/notis-database/src/dev-main.tsx +0 -23
  126. package/dist/scaffolds/notis-database/src/mock-runtime.ts +0 -561
  127. package/dist/scaffolds/notis-database/tailwind.config.ts +0 -59
  128. package/dist/scaffolds/notis-database/tsconfig.json +0 -23
  129. package/dist/scaffolds/notis-database/vite.config.ts +0 -22
  130. package/dist/scaffolds/notis-journal/CHANGELOG.md +0 -29
  131. package/dist/scaffolds/notis-journal/app/globals.css +0 -37
  132. package/dist/scaffolds/notis-journal/app/insights/page.tsx +0 -513
  133. package/dist/scaffolds/notis-journal/app/journal-core.tsx +0 -362
  134. package/dist/scaffolds/notis-journal/app/journal-ui.tsx +0 -337
  135. package/dist/scaffolds/notis-journal/app/layout.tsx +0 -6
  136. package/dist/scaffolds/notis-journal/app/page.tsx +0 -486
  137. package/dist/scaffolds/notis-journal/components/ui/badge.tsx +0 -28
  138. package/dist/scaffolds/notis-journal/components/ui/button.tsx +0 -53
  139. package/dist/scaffolds/notis-journal/components/ui/card.tsx +0 -56
  140. package/dist/scaffolds/notis-journal/components.json +0 -20
  141. package/dist/scaffolds/notis-journal/index.html +0 -12
  142. package/dist/scaffolds/notis-journal/lib/utils.ts +0 -6
  143. package/dist/scaffolds/notis-journal/metadata/screenshot-1.png +0 -0
  144. package/dist/scaffolds/notis-journal/metadata/screenshot-2.png +0 -0
  145. package/dist/scaffolds/notis-journal/metadata/screenshot-3.png +0 -0
  146. package/dist/scaffolds/notis-journal/metadata/screenshot-4.png +0 -0
  147. package/dist/scaffolds/notis-journal/metadata/screenshot-5.png +0 -0
  148. package/dist/scaffolds/notis-journal/metadata/screenshot-6.png +0 -0
  149. package/dist/scaffolds/notis-journal/metadata/screenshot-fixtures.json +0 -132
  150. package/dist/scaffolds/notis-journal/notis.config.ts +0 -93
  151. package/dist/scaffolds/notis-journal/package-lock.json +0 -4615
  152. package/dist/scaffolds/notis-journal/package.json +0 -34
  153. package/dist/scaffolds/notis-journal/packages/sdk/package.json +0 -36
  154. package/dist/scaffolds/notis-journal/packages/sdk/src/components/DocumentEditor.tsx +0 -93
  155. package/dist/scaffolds/notis-journal/packages/sdk/src/components/Markdown.tsx +0 -60
  156. package/dist/scaffolds/notis-journal/packages/sdk/src/components/MultiSelectActionBar.tsx +0 -278
  157. package/dist/scaffolds/notis-journal/packages/sdk/src/components/MultiSelectCheckbox.tsx +0 -91
  158. package/dist/scaffolds/notis-journal/packages/sdk/src/components/MultiSelectDragOverlay.tsx +0 -39
  159. package/dist/scaffolds/notis-journal/packages/sdk/src/config.ts +0 -196
  160. package/dist/scaffolds/notis-journal/packages/sdk/src/documents.ts +0 -229
  161. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useBackend.ts +0 -41
  162. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useDatabaseSchema.ts +0 -85
  163. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useDocument.ts +0 -78
  164. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useDocuments.ts +0 -121
  165. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useMultiSelect.ts +0 -539
  166. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useNotis.ts +0 -34
  167. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useNotisNavigation.ts +0 -49
  168. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useTool.ts +0 -64
  169. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useTools.ts +0 -56
  170. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useTopBarSearch.ts +0 -73
  171. package/dist/scaffolds/notis-journal/packages/sdk/src/hooks/useUpsertDocument.ts +0 -95
  172. package/dist/scaffolds/notis-journal/packages/sdk/src/index.ts +0 -83
  173. package/dist/scaffolds/notis-journal/packages/sdk/src/provider.tsx +0 -43
  174. package/dist/scaffolds/notis-journal/packages/sdk/src/runtime.ts +0 -220
  175. package/dist/scaffolds/notis-journal/packages/sdk/src/styles.css +0 -186
  176. package/dist/scaffolds/notis-journal/packages/sdk/src/ui.ts +0 -15
  177. package/dist/scaffolds/notis-journal/packages/sdk/src/vite.ts +0 -56
  178. package/dist/scaffolds/notis-journal/packages/sdk/tsconfig.json +0 -15
  179. package/dist/scaffolds/notis-journal/postcss.config.mjs +0 -8
  180. package/dist/scaffolds/notis-journal/skills/journal-onboarding/SKILL.md +0 -120
  181. package/dist/scaffolds/notis-journal/src/dev-main.tsx +0 -58
  182. package/dist/scaffolds/notis-journal/src/mock-runtime.ts +0 -197
  183. package/dist/scaffolds/notis-journal/tailwind.config.ts +0 -58
  184. package/dist/scaffolds/notis-journal/tsconfig.json +0 -23
  185. package/dist/scaffolds/notis-journal/vite.config.ts +0 -10
  186. package/dist/scaffolds/notis-notes/CHANGELOG.md +0 -5
  187. package/dist/scaffolds/notis-notes/app/globals.css +0 -3
  188. package/dist/scaffolds/notis-notes/app/layout.tsx +0 -6
  189. package/dist/scaffolds/notis-notes/app/page.tsx +0 -1943
  190. package/dist/scaffolds/notis-notes/app/phosphor-icons.ts +0 -596
  191. package/dist/scaffolds/notis-notes/components/ui/badge.tsx +0 -28
  192. package/dist/scaffolds/notis-notes/components/ui/button.tsx +0 -53
  193. package/dist/scaffolds/notis-notes/components/ui/card.tsx +0 -56
  194. package/dist/scaffolds/notis-notes/components.json +0 -20
  195. package/dist/scaffolds/notis-notes/lib/utils.ts +0 -6
  196. package/dist/scaffolds/notis-notes/lib/visible-properties.ts +0 -144
  197. package/dist/scaffolds/notis-notes/metadata/screenshot-1.png +0 -0
  198. package/dist/scaffolds/notis-notes/metadata/screenshot-2.png +0 -0
  199. package/dist/scaffolds/notis-notes/metadata/screenshot-3.png +0 -0
  200. package/dist/scaffolds/notis-notes/metadata/screenshot-4.png +0 -0
  201. package/dist/scaffolds/notis-notes/metadata/screenshot-5.png +0 -0
  202. package/dist/scaffolds/notis-notes/metadata/screenshot-fixtures.json +0 -752
  203. package/dist/scaffolds/notis-notes/notis.config.ts +0 -80
  204. package/dist/scaffolds/notis-notes/package-lock.json +0 -4636
  205. package/dist/scaffolds/notis-notes/package.json +0 -35
  206. package/dist/scaffolds/notis-notes/packages/sdk/package.json +0 -36
  207. package/dist/scaffolds/notis-notes/packages/sdk/src/components/DocumentEditor.tsx +0 -93
  208. package/dist/scaffolds/notis-notes/packages/sdk/src/components/Markdown.tsx +0 -60
  209. package/dist/scaffolds/notis-notes/packages/sdk/src/components/MultiSelectActionBar.tsx +0 -278
  210. package/dist/scaffolds/notis-notes/packages/sdk/src/components/MultiSelectCheckbox.tsx +0 -91
  211. package/dist/scaffolds/notis-notes/packages/sdk/src/components/MultiSelectDragOverlay.tsx +0 -39
  212. package/dist/scaffolds/notis-notes/packages/sdk/src/config.ts +0 -196
  213. package/dist/scaffolds/notis-notes/packages/sdk/src/documents.ts +0 -229
  214. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useBackend.ts +0 -41
  215. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useDatabaseSchema.ts +0 -85
  216. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useDocument.ts +0 -78
  217. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useDocuments.ts +0 -121
  218. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useMultiSelect.ts +0 -539
  219. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useNotis.ts +0 -34
  220. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useNotisNavigation.ts +0 -49
  221. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useTool.ts +0 -64
  222. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useTools.ts +0 -56
  223. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useTopBarSearch.ts +0 -73
  224. package/dist/scaffolds/notis-notes/packages/sdk/src/hooks/useUpsertDocument.ts +0 -95
  225. package/dist/scaffolds/notis-notes/packages/sdk/src/index.ts +0 -83
  226. package/dist/scaffolds/notis-notes/packages/sdk/src/provider.tsx +0 -43
  227. package/dist/scaffolds/notis-notes/packages/sdk/src/runtime.ts +0 -220
  228. package/dist/scaffolds/notis-notes/packages/sdk/src/styles.css +0 -186
  229. package/dist/scaffolds/notis-notes/packages/sdk/src/ui.ts +0 -15
  230. package/dist/scaffolds/notis-notes/packages/sdk/src/vite.ts +0 -56
  231. package/dist/scaffolds/notis-notes/packages/sdk/tsconfig.json +0 -15
  232. package/dist/scaffolds/notis-notes/postcss.config.mjs +0 -8
  233. package/dist/scaffolds/notis-notes/tailwind.config.ts +0 -58
  234. package/dist/scaffolds/notis-notes/tsconfig.json +0 -23
  235. package/dist/scaffolds/notis-notes/vite.config.ts +0 -10
  236. package/dist/scaffolds/notis-random/CHANGELOG.md +0 -15
  237. package/dist/scaffolds/notis-random/README.md +0 -33
  238. package/dist/scaffolds/notis-random/app/globals.css +0 -11
  239. package/dist/scaffolds/notis-random/app/history/page.tsx +0 -67
  240. package/dist/scaffolds/notis-random/app/layout.tsx +0 -7
  241. package/dist/scaffolds/notis-random/app/page.tsx +0 -289
  242. package/dist/scaffolds/notis-random/components/ui/button.tsx +0 -50
  243. package/dist/scaffolds/notis-random/components/ui/card.tsx +0 -16
  244. package/dist/scaffolds/notis-random/components/ui/input.tsx +0 -23
  245. package/dist/scaffolds/notis-random/components.json +0 -20
  246. package/dist/scaffolds/notis-random/index.html +0 -12
  247. package/dist/scaffolds/notis-random/lib/notis-tools.ts +0 -128
  248. package/dist/scaffolds/notis-random/lib/rng.ts +0 -202
  249. package/dist/scaffolds/notis-random/lib/roll-record.ts +0 -189
  250. package/dist/scaffolds/notis-random/lib/utils.ts +0 -25
  251. package/dist/scaffolds/notis-random/metadata/screenshot-1.png +0 -0
  252. package/dist/scaffolds/notis-random/metadata/screenshot-2.png +0 -0
  253. package/dist/scaffolds/notis-random/metadata/screenshot-3.png +0 -0
  254. package/dist/scaffolds/notis-random/metadata/screenshot-4.png +0 -0
  255. package/dist/scaffolds/notis-random/metadata/screenshot-5.png +0 -0
  256. package/dist/scaffolds/notis-random/metadata/screenshot-fixtures.json +0 -753
  257. package/dist/scaffolds/notis-random/notis.config.ts +0 -86
  258. package/dist/scaffolds/notis-random/package-lock.json +0 -4513
  259. package/dist/scaffolds/notis-random/package.json +0 -36
  260. package/dist/scaffolds/notis-random/packages/sdk/package.json +0 -36
  261. package/dist/scaffolds/notis-random/packages/sdk/src/components/DocumentEditor.tsx +0 -93
  262. package/dist/scaffolds/notis-random/packages/sdk/src/components/Markdown.tsx +0 -60
  263. package/dist/scaffolds/notis-random/packages/sdk/src/components/MultiSelectActionBar.tsx +0 -278
  264. package/dist/scaffolds/notis-random/packages/sdk/src/components/MultiSelectCheckbox.tsx +0 -91
  265. package/dist/scaffolds/notis-random/packages/sdk/src/components/MultiSelectDragOverlay.tsx +0 -39
  266. package/dist/scaffolds/notis-random/packages/sdk/src/config.ts +0 -196
  267. package/dist/scaffolds/notis-random/packages/sdk/src/documents.ts +0 -229
  268. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useBackend.ts +0 -41
  269. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useDatabaseSchema.ts +0 -85
  270. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useDocument.ts +0 -78
  271. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useDocuments.ts +0 -121
  272. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useMultiSelect.ts +0 -539
  273. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useNotis.ts +0 -34
  274. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useNotisNavigation.ts +0 -49
  275. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useTool.ts +0 -64
  276. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useTools.ts +0 -56
  277. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useTopBarSearch.ts +0 -73
  278. package/dist/scaffolds/notis-random/packages/sdk/src/hooks/useUpsertDocument.ts +0 -95
  279. package/dist/scaffolds/notis-random/packages/sdk/src/index.ts +0 -83
  280. package/dist/scaffolds/notis-random/packages/sdk/src/provider.tsx +0 -43
  281. package/dist/scaffolds/notis-random/packages/sdk/src/runtime.ts +0 -220
  282. package/dist/scaffolds/notis-random/packages/sdk/src/styles.css +0 -186
  283. package/dist/scaffolds/notis-random/packages/sdk/src/ui.ts +0 -15
  284. package/dist/scaffolds/notis-random/packages/sdk/src/vite.ts +0 -56
  285. package/dist/scaffolds/notis-random/packages/sdk/tsconfig.json +0 -15
  286. package/dist/scaffolds/notis-random/postcss.config.mjs +0 -6
  287. package/dist/scaffolds/notis-random/src/dev-main.tsx +0 -70
  288. package/dist/scaffolds/notis-random/src/mock-runtime.ts +0 -129
  289. package/dist/scaffolds/notis-random/tailwind.config.ts +0 -50
  290. package/dist/scaffolds/notis-random/tsconfig.json +0 -23
  291. package/dist/scaffolds/notis-random/vite.config.ts +0 -11
  292. package/dist/scaffolds.json +0 -49
  293. package/template/metadata/screenshot-1.png +0 -0
  294. package/template/metadata/screenshot-2.png +0 -0
  295. package/template/metadata/screenshot-3.png +0 -0
@@ -1,561 +0,0 @@
1
- import type { NotisRuntime } from '@notis/sdk';
2
- import type {
3
- DatabaseCatalogRow,
4
- DatabaseDetail,
5
- DatabaseDocument,
6
- DatabaseProperty,
7
- } from '@/lib/types';
8
-
9
- type DatabaseSeed = {
10
- catalog: DatabaseCatalogRow;
11
- detail: DatabaseDetail;
12
- };
13
-
14
- const SCHEMA = (
15
- title_property_id: string,
16
- properties: DatabaseProperty[],
17
- ): DatabaseDetail['schema'] => ({
18
- schema_version: 1,
19
- value_encoding_version: 1,
20
- coercion_version: 1,
21
- title_property_id,
22
- properties,
23
- });
24
-
25
- function makeSeed(): DatabaseSeed[] {
26
- const customersDetail: DatabaseDetail = {
27
- id: 'db_customers',
28
- slug: 'customers',
29
- name: 'Customers',
30
- description:
31
- 'Every person or company we sell to. The source of truth for billing identity, plan tier, and account ownership. Linked from Deals, Invoices, and Tasks.',
32
- icon: 'phosphor:users',
33
- cover: null,
34
- owner_app_id: 'app_sales_crm',
35
- owner_app_name: 'Sales CRM',
36
- content_type: null,
37
- view_config: null,
38
- total_documents: 4210,
39
- successful_documents: 4210,
40
- created_at: '2025-12-01T00:00:00Z',
41
- updated_at: '2026-04-20T00:00:00Z',
42
- schema: SCHEMA('prop_customers_name', [
43
- {
44
- id: 'prop_customers_name',
45
- name: 'name',
46
- type: 'title',
47
- description:
48
- 'Display name shown across the workspace. Used as the canonical title in views and search.',
49
- order: 0,
50
- storage_family: 'title',
51
- },
52
- {
53
- id: 'prop_customers_email',
54
- name: 'email',
55
- type: 'email',
56
- description:
57
- 'Primary contact email. Used to dedupe records when syncing from external CRMs.',
58
- order: 1,
59
- storage_family: 'text',
60
- },
61
- {
62
- id: 'prop_customers_plan',
63
- name: 'plan',
64
- type: 'select',
65
- description:
66
- 'Subscription tier. Drives feature gating and upgrade prompts in the product.',
67
- order: 2,
68
- storage_family: 'select',
69
- options: [
70
- { id: 'plan_free', name: 'Free', color: 'purple', order: 0 },
71
- { id: 'plan_pro', name: 'Pro', color: 'blue', order: 1 },
72
- { id: 'plan_ent', name: 'Enterprise', color: 'yellow', order: 2 },
73
- ],
74
- },
75
- {
76
- id: 'prop_customers_owner',
77
- name: 'owner',
78
- type: 'people',
79
- description:
80
- 'Account manager assigned to this customer. Routes follow-ups and reminders.',
81
- order: 3,
82
- storage_family: 'people',
83
- },
84
- {
85
- id: 'prop_customers_active_deals',
86
- name: 'active_deals',
87
- type: 'relation',
88
- description:
89
- 'All deals where this customer is on the buying side, regardless of stage.',
90
- order: 4,
91
- storage_family: 'relation',
92
- relation_target: {
93
- database_id: 'db_deals',
94
- database_slug: 'deals',
95
- database_name: 'Deals',
96
- },
97
- },
98
- ]),
99
- };
100
-
101
- const dealsDetail: DatabaseDetail = {
102
- id: 'db_deals',
103
- slug: 'deals',
104
- name: 'Deals',
105
- description:
106
- 'Pipeline records for every active and closed opportunity. Drives forecasting and revenue analytics.',
107
- icon: 'phosphor:currency-dollar',
108
- cover: null,
109
- owner_app_id: 'app_sales_crm',
110
- owner_app_name: 'Sales CRM',
111
- content_type: null,
112
- view_config: null,
113
- total_documents: 1120,
114
- successful_documents: 1120,
115
- created_at: '2025-12-01T00:00:00Z',
116
- updated_at: '2026-04-25T00:00:00Z',
117
- schema: SCHEMA('prop_deals_name', [
118
- {
119
- id: 'prop_deals_name',
120
- name: 'name',
121
- type: 'title',
122
- description: 'Short label for the deal, usually customer + product line.',
123
- order: 0,
124
- storage_family: 'title',
125
- },
126
- {
127
- id: 'prop_deals_amount',
128
- name: 'amount',
129
- type: 'number',
130
- description: 'Annualized contract value in USD.',
131
- order: 1,
132
- storage_family: 'number',
133
- format: 'dollar',
134
- },
135
- {
136
- id: 'prop_deals_stage',
137
- name: 'stage',
138
- type: 'status',
139
- description: 'Pipeline stage. Drives forecast probability.',
140
- order: 2,
141
- storage_family: 'status',
142
- options: [
143
- { id: 'stage_lead', name: 'Lead', color: 'gray', order: 0 },
144
- { id: 'stage_qualified', name: 'Qualified', color: 'blue', order: 1 },
145
- { id: 'stage_won', name: 'Won', color: 'green', order: 2 },
146
- { id: 'stage_lost', name: 'Lost', color: 'red', order: 3 },
147
- ],
148
- },
149
- {
150
- id: 'prop_deals_customer',
151
- name: 'customer',
152
- type: 'relation',
153
- description: 'Customer the deal belongs to.',
154
- order: 3,
155
- storage_family: 'relation',
156
- relation_target: {
157
- database_id: 'db_customers',
158
- database_slug: 'customers',
159
- database_name: 'Customers',
160
- },
161
- },
162
- ]),
163
- };
164
-
165
- const invoicesDetail: DatabaseDetail = {
166
- id: 'db_invoices',
167
- slug: 'invoices',
168
- name: 'Invoices',
169
- description: 'Issued invoices and their payment status.',
170
- icon: 'phosphor:file-text',
171
- cover: null,
172
- owner_app_id: 'app_sales_crm',
173
- owner_app_name: 'Sales CRM',
174
- content_type: null,
175
- view_config: null,
176
- total_documents: 890,
177
- successful_documents: 890,
178
- created_at: '2025-12-01T00:00:00Z',
179
- updated_at: '2026-04-25T00:00:00Z',
180
- schema: SCHEMA('prop_invoices_name', [
181
- {
182
- id: 'prop_invoices_name',
183
- name: 'invoice',
184
- type: 'title',
185
- description: 'Invoice number used externally.',
186
- order: 0,
187
- storage_family: 'title',
188
- },
189
- {
190
- id: 'prop_invoices_amount',
191
- name: 'amount',
192
- type: 'number',
193
- description: 'Line-item total in USD.',
194
- order: 1,
195
- storage_family: 'number',
196
- format: 'dollar',
197
- },
198
- {
199
- id: 'prop_invoices_due',
200
- name: 'due_date',
201
- type: 'date',
202
- description: 'When payment is expected.',
203
- order: 2,
204
- storage_family: 'date',
205
- },
206
- ]),
207
- };
208
-
209
- const tasksDetail: DatabaseDetail = {
210
- id: 'db_tasks',
211
- slug: 'tasks',
212
- name: 'Tasks',
213
- description:
214
- 'Things to do across the workspace. Captures both personal todos and account follow-ups.',
215
- icon: 'phosphor:check-square',
216
- cover: null,
217
- owner_app_id: 'app_tasks_notes',
218
- owner_app_name: 'Tasks & Notes',
219
- content_type: null,
220
- view_config: null,
221
- total_documents: 785,
222
- successful_documents: 785,
223
- created_at: '2025-12-01T00:00:00Z',
224
- updated_at: '2026-04-29T00:00:00Z',
225
- schema: SCHEMA('prop_tasks_title', [
226
- {
227
- id: 'prop_tasks_title',
228
- name: 'task',
229
- type: 'title',
230
- description: 'Short imperative description of the work.',
231
- order: 0,
232
- storage_family: 'title',
233
- },
234
- {
235
- id: 'prop_tasks_status',
236
- name: 'status',
237
- type: 'status',
238
- description: 'Workflow state. Defaults to Not started.',
239
- order: 1,
240
- storage_family: 'status',
241
- options: [
242
- { id: 'task_not_started', name: 'Not started', color: 'gray', order: 0 },
243
- { id: 'task_in_progress', name: 'In progress', color: 'blue', order: 1 },
244
- { id: 'task_done', name: 'Done', color: 'green', order: 2 },
245
- ],
246
- },
247
- {
248
- id: 'prop_tasks_priority',
249
- name: 'priority',
250
- type: 'select',
251
- description: 'Lightweight triage label.',
252
- order: 2,
253
- storage_family: 'select',
254
- options: [
255
- { id: 'pri_low', name: 'Low', color: 'gray', order: 0 },
256
- { id: 'pri_med', name: 'Medium', color: 'yellow', order: 1 },
257
- { id: 'pri_high', name: 'High', color: 'red', order: 2 },
258
- ],
259
- },
260
- {
261
- id: 'prop_tasks_due',
262
- name: 'due_date',
263
- type: 'date',
264
- description: 'Optional deadline.',
265
- order: 3,
266
- storage_family: 'date',
267
- },
268
- {
269
- id: 'prop_tasks_notes',
270
- name: 'notes',
271
- type: 'rich_text',
272
- description: 'Free-form context for the task.',
273
- order: 4,
274
- storage_family: 'text',
275
- },
276
- ]),
277
- };
278
-
279
- const notesDetail: DatabaseDetail = {
280
- id: 'db_notes',
281
- slug: 'notes',
282
- name: 'Notes',
283
- description: 'Long-form notes captured from conversations and meetings.',
284
- icon: 'phosphor:note-pencil',
285
- cover: null,
286
- owner_app_id: 'app_tasks_notes',
287
- owner_app_name: 'Tasks & Notes',
288
- content_type: null,
289
- view_config: null,
290
- total_documents: 2304,
291
- successful_documents: 2304,
292
- created_at: '2025-12-01T00:00:00Z',
293
- updated_at: '2026-04-28T00:00:00Z',
294
- schema: SCHEMA('prop_notes_title', [
295
- {
296
- id: 'prop_notes_title',
297
- name: 'title',
298
- type: 'title',
299
- description: 'Short note title.',
300
- order: 0,
301
- storage_family: 'title',
302
- },
303
- {
304
- id: 'prop_notes_tags',
305
- name: 'tags',
306
- type: 'multi_select',
307
- description: 'Lightweight labels.',
308
- order: 1,
309
- storage_family: 'multi_select',
310
- options: [
311
- { id: 'tag_idea', name: 'idea', color: 'blue', order: 0 },
312
- { id: 'tag_meeting', name: 'meeting', color: 'green', order: 1 },
313
- { id: 'tag_followup', name: 'followup', color: 'orange', order: 2 },
314
- ],
315
- },
316
- {
317
- id: 'prop_notes_content',
318
- name: 'content',
319
- type: 'rich_text',
320
- description: 'The note body.',
321
- order: 2,
322
- storage_family: 'text',
323
- },
324
- ]),
325
- };
326
-
327
- const usersDetail: DatabaseDetail = {
328
- id: 'db_users',
329
- slug: 'users',
330
- name: 'Users',
331
- description: 'People with access to the Notis workspace.',
332
- icon: 'phosphor:user',
333
- cover: null,
334
- owner_app_id: 'app_identity',
335
- owner_app_name: 'Identity',
336
- content_type: null,
337
- view_config: null,
338
- total_documents: 64,
339
- successful_documents: 64,
340
- created_at: '2025-12-01T00:00:00Z',
341
- updated_at: '2026-04-15T00:00:00Z',
342
- schema: SCHEMA('prop_users_name', [
343
- {
344
- id: 'prop_users_name',
345
- name: 'name',
346
- type: 'title',
347
- description: 'Full name.',
348
- order: 0,
349
- storage_family: 'title',
350
- },
351
- {
352
- id: 'prop_users_email',
353
- name: 'email',
354
- type: 'email',
355
- description: 'Login email.',
356
- order: 1,
357
- storage_family: 'text',
358
- },
359
- {
360
- id: 'prop_users_role',
361
- name: 'role',
362
- type: 'select',
363
- description: 'Permission tier.',
364
- order: 2,
365
- storage_family: 'select',
366
- options: [
367
- { id: 'role_admin', name: 'Admin', color: 'red', order: 0 },
368
- { id: 'role_member', name: 'Member', color: 'blue', order: 1 },
369
- { id: 'role_guest', name: 'Guest', color: 'gray', order: 2 },
370
- ],
371
- },
372
- ]),
373
- };
374
-
375
- const all: DatabaseDetail[] = [
376
- customersDetail,
377
- dealsDetail,
378
- invoicesDetail,
379
- tasksDetail,
380
- notesDetail,
381
- usersDetail,
382
- ];
383
-
384
- return all.map((detail) => ({
385
- detail,
386
- catalog: {
387
- id: detail.id,
388
- slug: detail.slug,
389
- name: detail.name,
390
- description: detail.description,
391
- icon: detail.icon,
392
- owner_app_id: detail.owner_app_id,
393
- owner_app_name: detail.owner_app_name,
394
- total_documents: detail.total_documents,
395
- successful_documents: detail.successful_documents,
396
- updated_at: detail.updated_at,
397
- },
398
- }));
399
- }
400
-
401
- const SEED = makeSeed();
402
-
403
- function mockPropertyValue(property: DatabaseProperty, index: number): Record<string, unknown> {
404
- switch (property.type) {
405
- case 'title':
406
- return {
407
- type: 'title',
408
- title: [{ type: 'text', text: { content: `${property.name ?? 'Title'} ${index + 1}` } }],
409
- rich_text: [{ type: 'text', text: { content: `${property.name ?? 'Title'} ${index + 1}` } }],
410
- };
411
- case 'rich_text':
412
- return {
413
- type: 'rich_text',
414
- rich_text: [{ type: 'text', text: { content: `Metadata value ${index + 1}` } }],
415
- };
416
- case 'number':
417
- return { type: 'number', number: (index + 1) * 10 };
418
- case 'select':
419
- case 'status': {
420
- const option = property.options?.[index % Math.max(property.options.length, 1)];
421
- return {
422
- type: property.type,
423
- [property.type]: option
424
- ? { id: option.id, name: option.name, color: option.color }
425
- : null,
426
- };
427
- }
428
- case 'multi_select': {
429
- const options = property.options?.slice(0, 2) ?? [];
430
- return {
431
- type: 'multi_select',
432
- multi_select: options.map((option) => ({
433
- id: option.id,
434
- name: option.name,
435
- color: option.color,
436
- })),
437
- };
438
- }
439
- case 'checkbox':
440
- return { type: 'checkbox', checkbox: index % 2 === 0 };
441
- case 'date':
442
- return { type: 'date', date: { start: `2026-04-${String(20 + index).padStart(2, '0')}`, end: null } };
443
- case 'relation':
444
- return { type: 'relation', relation: [{ id: `linked-${index + 1}` }] };
445
- case 'people':
446
- return { type: 'people', people: [{ id: `person-${index + 1}` }] };
447
- case 'files':
448
- return { type: 'files', files: [{ name: `file-${index + 1}.pdf` }] };
449
- case 'email':
450
- return { type: 'email', email: `person${index + 1}@example.com` };
451
- case 'phone_number':
452
- return { type: 'phone_number', phone_number: `+1 555 010${index}` };
453
- case 'url':
454
- return { type: 'url', url: `https://example.com/${index + 1}` };
455
- default:
456
- return { type: property.type, [property.type]: `Value ${index + 1}` };
457
- }
458
- }
459
-
460
- function mockDocuments(detail: DatabaseDetail): DatabaseDocument[] {
461
- const properties = detail.schema?.properties ?? [];
462
- return [0, 1, 2].map((index) => {
463
- const title = `${detail.name ?? 'Database'} record ${index + 1}`;
464
- return {
465
- id: `${detail.id}-doc-${index + 1}`,
466
- title,
467
- properties: Object.fromEntries(
468
- properties.map((property) => [
469
- property.name ?? property.id,
470
- property.type === 'title'
471
- ? {
472
- type: 'title',
473
- title: [{ type: 'text', text: { content: title } }],
474
- rich_text: [{ type: 'text', text: { content: title } }],
475
- }
476
- : mockPropertyValue(property, index),
477
- ]),
478
- ),
479
- property_states: {},
480
- url: null,
481
- created_time: `2026-04-${String(20 + index).padStart(2, '0')}T10:00:00Z`,
482
- last_edited_time: `2026-04-${String(23 + index).padStart(2, '0')}T15:30:00Z`,
483
- icon: null,
484
- cover: null,
485
- };
486
- });
487
- }
488
-
489
- export function installMockRuntime(): NotisRuntime {
490
- return {
491
- app: {
492
- id: 'dev-notis-database',
493
- name: 'Notis Database',
494
- icon: 'phosphor:database',
495
- description: 'Dev preview — seeded catalog data.',
496
- },
497
- route: {
498
- slug: 'catalog',
499
- path: '/',
500
- name: 'Catalog',
501
- icon: 'phosphor:database',
502
- parentSlug: null,
503
- default: true,
504
- collection: null,
505
- },
506
- databases: [],
507
- context: {},
508
- listTools: async () => [
509
- { name: 'LOCAL_NOTIS_DATABASE_LIST_DATABASES', inputSchema: { type: 'object', properties: {} } },
510
- { name: 'LOCAL_NOTIS_DATABASE_GET_DATABASE', inputSchema: { type: 'object', properties: {} } },
511
- { name: 'LOCAL_NOTIS_DATABASE_QUERY', inputSchema: { type: 'object', properties: {} } },
512
- ],
513
- callTool: async <TResult = unknown>(
514
- name: string,
515
- args?: Record<string, unknown>,
516
- ): Promise<TResult> => {
517
- if (name === 'LOCAL_NOTIS_DATABASE_LIST_DATABASES') {
518
- return {
519
- databases: SEED.map((s) => s.catalog),
520
- total_count: SEED.length,
521
- } as TResult;
522
- }
523
- if (name === 'LOCAL_NOTIS_DATABASE_GET_DATABASE') {
524
- const request = args ?? {};
525
- const id = typeof request.database_id === 'string' ? request.database_id : null;
526
- const slug = typeof request.database_slug === 'string' ? request.database_slug : null;
527
- const match = SEED.find(
528
- (s) => (id && s.detail.id === id) || (slug && s.detail.slug === slug),
529
- );
530
- if (!match) {
531
- return { status: 'error', message: 'Database not found' } as TResult;
532
- }
533
- return { database: match.detail } as TResult;
534
- }
535
- if (name === 'LOCAL_NOTIS_DATABASE_QUERY') {
536
- const request = args ?? {};
537
- const id = typeof request.database_id === 'string' ? request.database_id : null;
538
- const slug = typeof request.database_slug === 'string' ? request.database_slug : null;
539
- const match = SEED.find(
540
- (s) => (id && s.detail.id === id) || (slug && s.detail.slug === slug),
541
- );
542
- if (!match) {
543
- return { status: 'error', message: 'Database not found' } as TResult;
544
- }
545
- const documents = mockDocuments(match.detail);
546
- return {
547
- status: 'success',
548
- documents,
549
- results_count: documents.length,
550
- total_matching: documents.length,
551
- has_more: false,
552
- next_offset: null,
553
- } as TResult;
554
- }
555
- throw new Error(`Tool not available in dev preview: ${name}`);
556
- },
557
- request: async () => {
558
- throw new Error('Backend requests unavailable in dev preview.');
559
- },
560
- };
561
- }
@@ -1,59 +0,0 @@
1
- import type { Config } from 'tailwindcss';
2
- import tailwindAnimate from 'tailwindcss-animate';
3
-
4
- const config: Config = {
5
- darkMode: ['class'],
6
- content: [
7
- './app/**/*.{ts,tsx}',
8
- './components/**/*.{ts,tsx}',
9
- './lib/**/*.{ts,tsx}',
10
- './src/**/*.{ts,tsx}',
11
- ],
12
- theme: {
13
- extend: {
14
- colors: {
15
- border: 'hsl(var(--border))',
16
- input: 'hsl(var(--input))',
17
- ring: 'hsl(var(--ring))',
18
- background: 'hsl(var(--background))',
19
- foreground: 'hsl(var(--foreground))',
20
- primary: {
21
- DEFAULT: 'hsl(var(--primary))',
22
- foreground: 'hsl(var(--primary-foreground))',
23
- },
24
- secondary: {
25
- DEFAULT: 'hsl(var(--secondary))',
26
- foreground: 'hsl(var(--secondary-foreground))',
27
- },
28
- destructive: {
29
- DEFAULT: 'hsl(var(--destructive))',
30
- foreground: 'hsl(var(--destructive-foreground))',
31
- },
32
- muted: {
33
- DEFAULT: 'hsl(var(--muted))',
34
- foreground: 'hsl(var(--muted-foreground))',
35
- },
36
- accent: {
37
- DEFAULT: 'hsl(var(--accent))',
38
- foreground: 'hsl(var(--accent-foreground))',
39
- },
40
- popover: {
41
- DEFAULT: 'hsl(var(--popover))',
42
- foreground: 'hsl(var(--popover-foreground))',
43
- },
44
- card: {
45
- DEFAULT: 'hsl(var(--card))',
46
- foreground: 'hsl(var(--card-foreground))',
47
- },
48
- },
49
- borderRadius: {
50
- lg: 'var(--radius)',
51
- md: 'calc(var(--radius) - 2px)',
52
- sm: 'calc(var(--radius) - 4px)',
53
- },
54
- },
55
- },
56
- plugins: [tailwindAnimate],
57
- };
58
-
59
- export default config;
@@ -1,23 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2017",
4
- "lib": ["dom", "dom.iterable", "esnext"],
5
- "allowJs": true,
6
- "skipLibCheck": true,
7
- "strict": true,
8
- "noEmit": true,
9
- "esModuleInterop": true,
10
- "module": "esnext",
11
- "moduleResolution": "bundler",
12
- "preserveSymlinks": true,
13
- "resolveJsonModule": true,
14
- "isolatedModules": true,
15
- "jsx": "react-jsx",
16
- "types": ["vite/client", "node"],
17
- "paths": {
18
- "@/*": ["./*"]
19
- }
20
- },
21
- "include": ["**/*.ts", "**/*.tsx"],
22
- "exclude": ["node_modules"]
23
- }
@@ -1,22 +0,0 @@
1
- import { notisViteConfig } from '@notis/sdk/vite';
2
- import react from '@vitejs/plugin-react';
3
- import { defineConfig, type UserConfig } from 'vite';
4
- import appConfig from './notis.config';
5
-
6
- // Two-mode config: dev (`vite`) serves the mock-runtime preview from
7
- // `index.html` + `src/dev-main.tsx`, while production (`vite build`)
8
- // emits the Notis portal bundle from `.notis/_entry.tsx`.
9
- export default defineConfig(({ command }): UserConfig => {
10
- if (command === 'serve') {
11
- return {
12
- plugins: [react()],
13
- resolve: { alias: { '@': __dirname } },
14
- };
15
- }
16
-
17
- const libConfig = notisViteConfig(appConfig) as unknown as UserConfig;
18
- return {
19
- ...libConfig,
20
- plugins: [react(), ...((libConfig.plugins as UserConfig['plugins']) ?? [])],
21
- };
22
- });
@@ -1,29 +0,0 @@
1
- # 5 Minutes Journal Changelog
2
-
3
- ## [Accessible Timeline Selection] - 2026-07-29
4
-
5
- - Announces the selected journal day to assistive technology while preserving the visual timeline.
6
-
7
- ## [Package Details and History] - 2026-07-17
8
-
9
- - Added complete package release history to App Details.
10
- - Refreshed the light and dark Store screenshots for the latest release.
11
-
12
- ## [Publisher Attribution] - 2026-07-16
13
-
14
- - Shows Florian (Flo) Pariset as the Store publisher.
15
-
16
- ## [Theme-Aware Store Screenshots] - 2026-07-16
17
-
18
- - Added matching light and dark screenshots with the shared deep-blue background.
19
- - Removed the screenshot shadow and white edge artifacts.
20
-
21
- ## [5 Minutes Journal Redesign] - 2026-07-16
22
-
23
- - Renamed Journal to 5 Minutes Journal.
24
- - Added focused morning and evening check-in views plus mood, energy, motivation, ritual-consistency, and gratitude statistics.
25
- - Added guided onboarding for the morning and evening check-in routine.
26
-
27
- ## [Initial Journal] - 2026-07-14
28
-
29
- - Added a browse-first Journal experience powered by entries created through conversations with Notis.