@terreno/mcp 57.3.0 → 57.4.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 (250) hide show
  1. package/README.md +7 -1
  2. package/dist/bootstrap.d.ts +0 -18
  3. package/dist/bootstrap.d.ts.map +1 -1
  4. package/dist/bootstrap.js +10 -2428
  5. package/dist/bootstrap.js.map +1 -1
  6. package/dist/docs/guidelines/admin-frontend/guidelines/core.md +5 -1
  7. package/dist/docs/guidelines/api/skills/mongoose-schema-safety/SKILL.md +23 -10
  8. package/dist/docs/resources/syncdb.md +4 -1
  9. package/dist/docs/upgrades/57.4.0.md +140 -0
  10. package/dist/docs/versioned/next/README.md +3 -0
  11. package/dist/docs/versioned/next/explanation/README.md +4 -1
  12. package/dist/docs/versioned/next/explanation/admin-interface.md +20 -13
  13. package/dist/docs/versioned/next/explanation/charts.md +29 -0
  14. package/dist/docs/versioned/next/explanation/deployment-architecture-gcp.md +32 -0
  15. package/dist/docs/versioned/next/explanation/deployment-baseline.md +1 -1
  16. package/dist/docs/versioned/next/explanation/example-coverage.md +43 -0
  17. package/dist/docs/versioned/next/explanation/local-first-data.md +5 -2
  18. package/dist/docs/versioned/next/explanation/loop-engineering.md +9 -6
  19. package/dist/docs/versioned/next/explanation/model-router-actions.md +19 -2
  20. package/dist/docs/versioned/next/explanation/organizations.md +88 -0
  21. package/dist/docs/versioned/next/explanation/planning-plugins.md +114 -0
  22. package/dist/docs/versioned/next/explanation/positioning.md +3 -3
  23. package/dist/docs/versioned/next/explanation/repository-settings.md +6 -5
  24. package/dist/docs/versioned/next/explanation/roadmap-seed-issues.md +44 -34
  25. package/dist/docs/versioned/next/explanation/source-rules.md +1 -1
  26. package/dist/docs/versioned/next/explanation/static-analysis.md +76 -16
  27. package/dist/docs/versioned/next/how-to/README.md +10 -0
  28. package/dist/docs/versioned/next/how-to/add-gpt-chat-mascot.md +92 -0
  29. package/dist/docs/versioned/next/how-to/add-organizations.md +204 -0
  30. package/dist/docs/versioned/next/how-to/admin-add-model.md +9 -1
  31. package/dist/docs/versioned/next/how-to/admin-import-prebuilt.md +7 -1
  32. package/dist/docs/versioned/next/how-to/audit-log.md +85 -0
  33. package/dist/docs/versioned/next/how-to/background-jobs.md +296 -0
  34. package/dist/docs/versioned/next/how-to/build-admin-screens.md +42 -13
  35. package/dist/docs/versioned/next/how-to/charts-and-dashboards.md +37 -0
  36. package/dist/docs/versioned/next/how-to/circleci.md +136 -27
  37. package/dist/docs/versioned/next/how-to/compare-chart-rendered-snapshots.md +36 -0
  38. package/dist/docs/versioned/next/how-to/configure-better-auth.md +4 -0
  39. package/dist/docs/versioned/next/how-to/create-a-terreno-app.md +154 -0
  40. package/dist/docs/versioned/next/how-to/deploy-backend-to-cloud-run.md +2 -0
  41. package/dist/docs/versioned/next/how-to/github-actions-ci.md +4 -3
  42. package/dist/docs/versioned/next/how-to/github-issue-lifecycle.md +12 -8
  43. package/dist/docs/versioned/next/how-to/in-app-notifications.md +147 -0
  44. package/dist/docs/versioned/next/how-to/install-agent-skills.md +24 -12
  45. package/dist/docs/versioned/next/how-to/migrate-rtk-to-syncdb.md +19 -3
  46. package/dist/docs/versioned/next/how-to/product-announcements.md +155 -0
  47. package/dist/docs/versioned/next/how-to/run-mongodb-migrations.md +127 -0
  48. package/dist/docs/versioned/next/how-to/run-tests-locally.md +102 -0
  49. package/dist/docs/versioned/next/how-to/seed-a-database.md +7 -2
  50. package/dist/docs/versioned/next/implementationPlans/README.md +8 -5
  51. package/dist/docs/versioned/next/implementationPlans/admin-scripts-durable-jobs.md +44 -0
  52. package/dist/docs/versioned/next/implementationPlans/agent-ui-blocks.md +386 -0
  53. package/dist/docs/versioned/next/implementationPlans/agentic-sdlc-plugin.md +11 -8
  54. package/dist/docs/versioned/next/implementationPlans/announcements-surfaces.md +231 -0
  55. package/dist/docs/versioned/next/implementationPlans/announcements.md +289 -0
  56. package/dist/docs/versioned/next/implementationPlans/b2b-platform-program.md +3 -1
  57. package/dist/docs/versioned/next/implementationPlans/charts-and-dashboards.md +246 -0
  58. package/dist/docs/versioned/next/implementationPlans/comms-admin-dashboard.md +4 -3
  59. package/dist/docs/versioned/next/implementationPlans/create-terreno-app.md +177 -0
  60. package/dist/docs/versioned/next/implementationPlans/datatable-server-side-filtering.md +219 -0
  61. package/dist/docs/versioned/next/implementationPlans/examples-demo-coverage.md +17 -17
  62. package/dist/docs/versioned/next/implementationPlans/framework-audit-log.md +247 -0
  63. package/dist/docs/versioned/next/implementationPlans/gpt-chat-mascot.md +40 -0
  64. package/dist/docs/versioned/next/implementationPlans/job-queues.md +330 -0
  65. package/dist/docs/versioned/next/implementationPlans/knip-cleanup.md +136 -0
  66. package/dist/docs/versioned/next/implementationPlans/migrate-admin-to-syncdb.md +210 -0
  67. package/dist/docs/versioned/next/implementationPlans/mongodb-migrations-tooling.md +254 -0
  68. package/dist/docs/versioned/next/implementationPlans/notification-center.md +185 -0
  69. package/dist/docs/versioned/next/implementationPlans/org-management-ui.md +8 -3
  70. package/dist/docs/versioned/next/implementationPlans/positioning-django-rails-universal.md +1 -1
  71. package/dist/docs/versioned/next/reference/README.md +4 -0
  72. package/dist/docs/versioned/next/reference/admin-backend.md +83 -5
  73. package/dist/docs/versioned/next/reference/admin-config.md +7 -0
  74. package/dist/docs/versioned/next/reference/admin-frontend.md +178 -5
  75. package/dist/docs/versioned/next/reference/admin-spa.md +18 -1
  76. package/dist/docs/versioned/next/reference/ai.md +2 -0
  77. package/dist/docs/versioned/next/reference/announcements.md +179 -0
  78. package/dist/docs/versioned/next/reference/api.md +343 -4
  79. package/dist/docs/versioned/next/reference/comms.md +33 -0
  80. package/dist/docs/versioned/next/reference/create-terreno-app.md +44 -0
  81. package/dist/docs/versioned/next/reference/environment-variables.md +29 -0
  82. package/dist/docs/versioned/next/reference/jobs.md +319 -0
  83. package/dist/docs/versioned/next/reference/legacy/rtk.md +5 -1
  84. package/dist/docs/versioned/next/reference/lifecycle-plugin.md +29 -11
  85. package/dist/docs/versioned/next/reference/mcp-server.md +2 -43
  86. package/dist/docs/versioned/next/reference/scan-plugin.md +169 -0
  87. package/dist/docs/versioned/next/reference/syncdb.md +38 -12
  88. package/dist/docs/versioned/next/reference/test.md +57 -6
  89. package/dist/docs/versioned/next/reference/ui-performance.md +2 -1
  90. package/dist/docs/versioned/next/reference/ui.md +257 -3
  91. package/dist/docs/versioned/next/tasks/admin-scripts-durable-jobs.md +10 -0
  92. package/dist/docs/versioned/next/tasks/agent-ui-blocks.md +114 -0
  93. package/dist/docs/versioned/next/tasks/announcements-surfaces.md +101 -0
  94. package/dist/docs/versioned/next/tasks/announcements.md +173 -0
  95. package/dist/docs/versioned/next/tasks/charts-and-dashboards.md +120 -0
  96. package/dist/docs/versioned/next/tasks/create-terreno-app.md +82 -0
  97. package/dist/docs/versioned/next/tasks/datatable-server-side-filtering.md +87 -0
  98. package/dist/docs/versioned/next/tasks/examples-demo-coverage.md +123 -17
  99. package/dist/docs/versioned/next/tasks/framework-audit-log.md +86 -0
  100. package/dist/docs/versioned/next/tasks/gpt-chat-mascot.md +13 -0
  101. package/dist/docs/versioned/next/tasks/job-queues.md +144 -0
  102. package/dist/docs/versioned/next/tasks/knip-cleanup.md +146 -0
  103. package/dist/docs/versioned/next/tasks/migrate-admin-to-syncdb.md +209 -0
  104. package/dist/docs/versioned/next/tasks/mongodb-migrations-tooling.md +107 -0
  105. package/dist/docs/versioned/next/tasks/notification-center.md +102 -0
  106. package/dist/docs/versioned/next/tasks/org-management-ui.md +14 -14
  107. package/dist/docs/versioned/next/tutorials/README.md +1 -1
  108. package/dist/docs/versioned/next/tutorials/getting-started.md +62 -22
  109. package/dist/help/excerpt.d.ts +2 -0
  110. package/dist/help/excerpt.d.ts.map +1 -0
  111. package/dist/help/excerpt.js +8 -0
  112. package/dist/help/excerpt.js.map +1 -0
  113. package/dist/help/updateNotes.d.ts +42 -0
  114. package/dist/help/updateNotes.d.ts.map +1 -0
  115. package/dist/help/updateNotes.js +235 -0
  116. package/dist/help/updateNotes.js.map +1 -0
  117. package/dist/index.js +1 -1
  118. package/dist/index.js.map +1 -1
  119. package/dist/local/tools/databaseQuery.d.ts +1 -0
  120. package/dist/local/tools/databaseQuery.d.ts.map +1 -1
  121. package/dist/local/tools/databaseQuery.js +1 -0
  122. package/dist/local/tools/databaseQuery.js.map +1 -1
  123. package/dist/packageGuidelines.d.ts +2 -2
  124. package/dist/packageGuidelines.d.ts.map +1 -1
  125. package/dist/packageGuidelines.js +2 -8
  126. package/dist/packageGuidelines.js.map +1 -1
  127. package/dist/resources.d.ts +3 -0
  128. package/dist/resources.d.ts.map +1 -1
  129. package/dist/resources.js +3 -0
  130. package/dist/resources.js.map +1 -1
  131. package/dist/search/chunker.d.ts +1 -0
  132. package/dist/search/chunker.d.ts.map +1 -1
  133. package/dist/search/chunker.js +1 -0
  134. package/dist/search/chunker.js.map +1 -1
  135. package/dist/search/docIndex.d.ts +1 -5
  136. package/dist/search/docIndex.d.ts.map +1 -1
  137. package/dist/search/docIndex.js +1 -0
  138. package/dist/search/docIndex.js.map +1 -1
  139. package/dist/search/docVersion.d.ts +2 -1
  140. package/dist/search/docVersion.d.ts.map +1 -1
  141. package/dist/search/docVersion.js +3 -1
  142. package/dist/search/docVersion.js.map +1 -1
  143. package/dist/tools.d.ts +2 -2
  144. package/dist/tools.d.ts.map +1 -1
  145. package/dist/tools.js +113 -2
  146. package/dist/tools.js.map +1 -1
  147. package/package.json +28 -27
  148. package/src/docs/guidelines/admin-frontend/guidelines/core.md +5 -1
  149. package/src/docs/guidelines/api/skills/mongoose-schema-safety/SKILL.md +23 -10
  150. package/src/docs/resources/syncdb.md +4 -1
  151. package/src/docs/upgrades/57.4.0.md +140 -0
  152. package/src/docs/versioned/next/README.md +3 -0
  153. package/src/docs/versioned/next/explanation/README.md +4 -1
  154. package/src/docs/versioned/next/explanation/admin-interface.md +20 -13
  155. package/src/docs/versioned/next/explanation/charts.md +29 -0
  156. package/src/docs/versioned/next/explanation/deployment-architecture-gcp.md +32 -0
  157. package/src/docs/versioned/next/explanation/deployment-baseline.md +1 -1
  158. package/src/docs/versioned/next/explanation/example-coverage.md +43 -0
  159. package/src/docs/versioned/next/explanation/local-first-data.md +5 -2
  160. package/src/docs/versioned/next/explanation/loop-engineering.md +9 -6
  161. package/src/docs/versioned/next/explanation/model-router-actions.md +19 -2
  162. package/src/docs/versioned/next/explanation/organizations.md +88 -0
  163. package/src/docs/versioned/next/explanation/planning-plugins.md +114 -0
  164. package/src/docs/versioned/next/explanation/positioning.md +3 -3
  165. package/src/docs/versioned/next/explanation/repository-settings.md +6 -5
  166. package/src/docs/versioned/next/explanation/roadmap-seed-issues.md +44 -34
  167. package/src/docs/versioned/next/explanation/source-rules.md +1 -1
  168. package/src/docs/versioned/next/explanation/static-analysis.md +76 -16
  169. package/src/docs/versioned/next/how-to/README.md +10 -0
  170. package/src/docs/versioned/next/how-to/add-gpt-chat-mascot.md +92 -0
  171. package/src/docs/versioned/next/how-to/add-organizations.md +204 -0
  172. package/src/docs/versioned/next/how-to/admin-add-model.md +9 -1
  173. package/src/docs/versioned/next/how-to/admin-import-prebuilt.md +7 -1
  174. package/src/docs/versioned/next/how-to/audit-log.md +85 -0
  175. package/src/docs/versioned/next/how-to/background-jobs.md +296 -0
  176. package/src/docs/versioned/next/how-to/build-admin-screens.md +42 -13
  177. package/src/docs/versioned/next/how-to/charts-and-dashboards.md +37 -0
  178. package/src/docs/versioned/next/how-to/circleci.md +136 -27
  179. package/src/docs/versioned/next/how-to/compare-chart-rendered-snapshots.md +36 -0
  180. package/src/docs/versioned/next/how-to/configure-better-auth.md +4 -0
  181. package/src/docs/versioned/next/how-to/create-a-terreno-app.md +154 -0
  182. package/src/docs/versioned/next/how-to/deploy-backend-to-cloud-run.md +2 -0
  183. package/src/docs/versioned/next/how-to/github-actions-ci.md +4 -3
  184. package/src/docs/versioned/next/how-to/github-issue-lifecycle.md +12 -8
  185. package/src/docs/versioned/next/how-to/in-app-notifications.md +147 -0
  186. package/src/docs/versioned/next/how-to/install-agent-skills.md +24 -12
  187. package/src/docs/versioned/next/how-to/migrate-rtk-to-syncdb.md +19 -3
  188. package/src/docs/versioned/next/how-to/product-announcements.md +155 -0
  189. package/src/docs/versioned/next/how-to/run-mongodb-migrations.md +127 -0
  190. package/src/docs/versioned/next/how-to/run-tests-locally.md +102 -0
  191. package/src/docs/versioned/next/how-to/seed-a-database.md +7 -2
  192. package/src/docs/versioned/next/implementationPlans/README.md +8 -5
  193. package/src/docs/versioned/next/implementationPlans/admin-scripts-durable-jobs.md +44 -0
  194. package/src/docs/versioned/next/implementationPlans/agent-ui-blocks.md +386 -0
  195. package/src/docs/versioned/next/implementationPlans/agentic-sdlc-plugin.md +11 -8
  196. package/src/docs/versioned/next/implementationPlans/announcements-surfaces.md +231 -0
  197. package/src/docs/versioned/next/implementationPlans/announcements.md +289 -0
  198. package/src/docs/versioned/next/implementationPlans/b2b-platform-program.md +3 -1
  199. package/src/docs/versioned/next/implementationPlans/charts-and-dashboards.md +246 -0
  200. package/src/docs/versioned/next/implementationPlans/comms-admin-dashboard.md +4 -3
  201. package/src/docs/versioned/next/implementationPlans/create-terreno-app.md +177 -0
  202. package/src/docs/versioned/next/implementationPlans/datatable-server-side-filtering.md +219 -0
  203. package/src/docs/versioned/next/implementationPlans/examples-demo-coverage.md +17 -17
  204. package/src/docs/versioned/next/implementationPlans/framework-audit-log.md +247 -0
  205. package/src/docs/versioned/next/implementationPlans/gpt-chat-mascot.md +40 -0
  206. package/src/docs/versioned/next/implementationPlans/job-queues.md +330 -0
  207. package/src/docs/versioned/next/implementationPlans/knip-cleanup.md +136 -0
  208. package/src/docs/versioned/next/implementationPlans/migrate-admin-to-syncdb.md +210 -0
  209. package/src/docs/versioned/next/implementationPlans/mongodb-migrations-tooling.md +254 -0
  210. package/src/docs/versioned/next/implementationPlans/notification-center.md +185 -0
  211. package/src/docs/versioned/next/implementationPlans/org-management-ui.md +8 -3
  212. package/src/docs/versioned/next/implementationPlans/positioning-django-rails-universal.md +1 -1
  213. package/src/docs/versioned/next/reference/README.md +4 -0
  214. package/src/docs/versioned/next/reference/admin-backend.md +83 -5
  215. package/src/docs/versioned/next/reference/admin-config.md +7 -0
  216. package/src/docs/versioned/next/reference/admin-frontend.md +178 -5
  217. package/src/docs/versioned/next/reference/admin-spa.md +18 -1
  218. package/src/docs/versioned/next/reference/ai.md +2 -0
  219. package/src/docs/versioned/next/reference/announcements.md +179 -0
  220. package/src/docs/versioned/next/reference/api.md +343 -4
  221. package/src/docs/versioned/next/reference/comms.md +33 -0
  222. package/src/docs/versioned/next/reference/create-terreno-app.md +44 -0
  223. package/src/docs/versioned/next/reference/environment-variables.md +29 -0
  224. package/src/docs/versioned/next/reference/jobs.md +319 -0
  225. package/src/docs/versioned/next/reference/legacy/rtk.md +5 -1
  226. package/src/docs/versioned/next/reference/lifecycle-plugin.md +29 -11
  227. package/src/docs/versioned/next/reference/mcp-server.md +2 -43
  228. package/src/docs/versioned/next/reference/scan-plugin.md +169 -0
  229. package/src/docs/versioned/next/reference/syncdb.md +38 -12
  230. package/src/docs/versioned/next/reference/test.md +57 -6
  231. package/src/docs/versioned/next/reference/ui-performance.md +2 -1
  232. package/src/docs/versioned/next/reference/ui.md +257 -3
  233. package/src/docs/versioned/next/tasks/admin-scripts-durable-jobs.md +10 -0
  234. package/src/docs/versioned/next/tasks/agent-ui-blocks.md +114 -0
  235. package/src/docs/versioned/next/tasks/announcements-surfaces.md +101 -0
  236. package/src/docs/versioned/next/tasks/announcements.md +173 -0
  237. package/src/docs/versioned/next/tasks/charts-and-dashboards.md +120 -0
  238. package/src/docs/versioned/next/tasks/create-terreno-app.md +82 -0
  239. package/src/docs/versioned/next/tasks/datatable-server-side-filtering.md +87 -0
  240. package/src/docs/versioned/next/tasks/examples-demo-coverage.md +123 -17
  241. package/src/docs/versioned/next/tasks/framework-audit-log.md +86 -0
  242. package/src/docs/versioned/next/tasks/gpt-chat-mascot.md +13 -0
  243. package/src/docs/versioned/next/tasks/job-queues.md +144 -0
  244. package/src/docs/versioned/next/tasks/knip-cleanup.md +146 -0
  245. package/src/docs/versioned/next/tasks/migrate-admin-to-syncdb.md +209 -0
  246. package/src/docs/versioned/next/tasks/mongodb-migrations-tooling.md +107 -0
  247. package/src/docs/versioned/next/tasks/notification-center.md +102 -0
  248. package/src/docs/versioned/next/tasks/org-management-ui.md +14 -14
  249. package/src/docs/versioned/next/tutorials/README.md +1 -1
  250. package/src/docs/versioned/next/tutorials/getting-started.md +62 -22
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,10 @@ Read the architecture first:
8
8
  Use `AdminProvider` + `AdminShellLayout`. Home is `AdminHome`. Generic models use
9
9
  `AdminScreenRouter` on `[model]/index` (create is `[model]/create`, not `new`).
10
10
  Custom screens need the same `name` on `AdminApp.customScreens` and
11
- `widgets.screens`. Admin HTTP uses `useAdminConfig` / `useAdminApi` (not syncdb).
11
+ `widgets.screens`. String-`_id` model CRUD uses windowed syncdb when
12
+ `adminBroadcast` is enabled. Framework admin RPC uses host-bound
13
+ `adminRequest`; ObjectId/API-only compatibility CRUD keeps `useAdminApi` in
14
+ Terreno 57. Do not add new admin `injectEndpoints`; Terreno 58 removes that path
15
+ and the required `api` prop.
12
16
 
13
17
  Agent workflow: skill `building-admin-interfaces`.
@@ -83,29 +83,40 @@ schema.statics = {
83
83
  - Apply the standard plugins (`createdUpdatedPlugin`, `isDeletedPlugin`, `findOneOrNone`, `findExactlyOne`) on every new model. Most existing models go through `addDefaultPlugins`.
84
84
  - `checkModelsStrict()` runs at non-prod startup (`server.ts`) and validates schema consistency — keep it passing.
85
85
 
86
+ ## Migration files
87
+
88
+ Schema and data changes that must run once per environment belong in
89
+ `migrations/<YYYYMMDDHHmmss>-<slug>.ts` with required `up` and optional `down`.
90
+ Generate a draft with `terreno-migrate generate --dir ./migrations --models ./src/models.ts`,
91
+ then `terreno-migrate up --dir ./migrations --dry` before wet apply.
92
+ See [Run MongoDB migrations](../../../../docs/how-to/run-mongodb-migrations.md).
93
+
94
+ Admin **Scripts** (`ScriptRunner` + `BackgroundTask`) stay for one-off operator
95
+ tools. Do not use Scripts as the primary path for versioned schema backfills.
96
+
86
97
  ## Schema Change Risk Matrix
87
98
 
88
99
  | Change Type | Risk Level | Required Mitigation |
89
100
  |-------------|-----------|---------------------|
90
101
  | Add optional field | Low | Safe to ship directly (still requires `description`) |
91
- | Add required field | High | Must provide a default value, OR write a backfill migration script first |
102
+ | Add required field | High | Must provide a default value, OR write a versioned migration (`terreno-migrate generate` / `up`) with a backfill before wet apply |
92
103
  | Remove field | Medium | Soft-remove first (mark optional, stop writing); hard-remove in next PR after deploys settle |
93
- | Rename field | High | Three-step: add new → backfill → remove old (separate PRs) |
94
- | Change field type | Critical | Treat as rename: new field + migration + remove old |
95
- | Add index | Medium | Safe in code, but build can slow writes on large collections — coordinate with ops |
104
+ | Rename field | High | Three-step: add new → backfill migration → remove old (separate PRs) |
105
+ | Change field type | Critical | Treat as rename: new field + versioned migration + remove old |
106
+ | Add index | Medium | Prefer `terreno-migrate generate` for the index; build can slow writes on large collections — coordinate with ops |
96
107
  | Remove index | Low | Safe to ship directly |
97
- | Add unique index | High | Dedup migration must run first; otherwise the index build fails on existing duplicates |
108
+ | Add unique index | High | Dedup in a versioned migration first; otherwise the index build fails on existing duplicates |
98
109
 
99
- ## Migration Scripts
110
+ ## One-off admin scripts
100
111
 
101
- Migration / backfill scripts live in `example-backend/src/scripts/` (e.g. `syncConsents.ts`, `seedConsents.ts`). They use the `ScriptRunner` type and `BackgroundTask` model from `@terreno/api` (`api/src/scriptRunner.ts`):
112
+ Ad-hoc operator tools (counts, reseeds, support fixes) still live as admin
113
+ Scripts using `ScriptRunner` and `BackgroundTask`:
102
114
 
103
115
  ```typescript
104
116
  import type {ScriptContext, ScriptResult, ScriptRunner} from "@terreno/api";
105
117
 
106
118
  export const run: ScriptRunner = async (wetRun, ctx) => {
107
119
  const results: string[] = [];
108
- // ... do work ...
109
120
  if (wetRun) {
110
121
  // commit changes
111
122
  }
@@ -113,7 +124,9 @@ export const run: ScriptRunner = async (wetRun, ctx) => {
113
124
  };
114
125
  ```
115
126
 
116
- Always run with `wetRun = false` first to verify the dry-run output. Use `ctx.checkCancellation()`, `ctx.addLog()`, and `ctx.updateProgress()` for long-running tasks.
127
+ Always run with `wetRun = false` first. Use `ctx.checkCancellation()`,
128
+ `ctx.addLog()`, and `ctx.updateProgress()` for long-running tasks. Do not put
129
+ repeatable schema backfills here — use `migrations/` and `terreno-migrate`.
117
130
 
118
131
  ## Cross-Package Ripple
119
132
 
@@ -131,7 +144,7 @@ A schema change in one place often ripples:
131
144
  - [ ] For a new model: all five types (`Document`, `Methods`, `Statics`, `Model`, `Schema`) created
132
145
  - [ ] Statics/methods assigned directly on schema (`schema.statics = {...}`, `schema.methods = {...}`) — not `.static()` / `.method()`
133
146
  - [ ] Other model type files checked — any model that populates this one updated if its shape changed
134
- - [ ] Migration script written (and dry-run verified with `wetRun = false`) for any backfill
147
+ - [ ] Versioned migration written (`migrations/` + `terreno-migrate`) and dry-run verified for any backfill; unique-index dedup runs before the index is added
135
148
  - [ ] `modelRouter` config updated (`queryFields`, `populatePaths`, `responseHandler`) if needed
136
149
  - [ ] `AdminApp` `listFields` updated if the model is in the admin panel
137
150
  - [ ] `bun run sdk` run from `example-frontend/` if the API response shape changed
@@ -36,7 +36,10 @@ const {create, update, remove} = useMutate("todos");
36
36
 
37
37
  ## What syncdb replaces
38
38
 
39
- Do **not** use RTK Query `useGetXQuery` / `usePostXMutation` for synced collections. Keep `bun run sdk` for non-synced routes (auth/me, admin, AI).
39
+ Do **not** use RTK Query `useGetXQuery` / `usePostXMutation` for synced
40
+ collections. Keep `bun run sdk` for non-synced routes such as auth/me and AI.
41
+ Built-in admin String-`_id` CRUD uses windowed syncdb; admin RPC uses its
42
+ host-bound fetch client; ObjectId compatibility CRUD remains RTK in Terreno 57.
40
43
 
41
44
  Full reference: [docs/reference/syncdb.md](https://github.com/FlourishHealth/terreno/blob/master/docs/reference/syncdb.md)
42
45
 
@@ -0,0 +1,140 @@
1
+ # Upgrading to 57.4.0
2
+
3
+ **Action required:** Yes
4
+ **Affected packages:** @terreno/api, @terreno/ui, @terreno/admin-frontend, @terreno/admin-backend, @terreno/admin-spa, @terreno/announcements, @terreno/jobs, @terreno/mcp, @terreno/syncdb
5
+
6
+ ## Summary
7
+
8
+ Bump every `@terreno/*` package together to `57.4.0`. This minor on the Expo SDK 57 line adds charts and dashboards, in-app notifications, product announcements, optional organizations, a framework audit log, durable jobs, MongoDB migrations, windowed admin sync, `create-terreno-app`, and first publish of `@terreno/announcements`. Scaffolding moves off the MCP `terreno_bootstrap_app` tool. Admin RTK `useAdminApi` is deprecated for Terreno 58. No Expo upgrade is required if you are already on `57.x`.
9
+
10
+ ## Breaking changes
11
+
12
+ None
13
+
14
+ ## Deprecations
15
+
16
+ ### `useAdminApi` and the required admin `api` prop
17
+
18
+ These still work in 57.4.0 and will be removed in Terreno **58**:
19
+
20
+ - `@terreno/admin-frontend` `useAdminApi` (RTK `injectEndpoints`)
21
+ - required `api` prop on admin screens for eligible String-`_id` collections
22
+
23
+ New admin RPC uses host-bound `adminRequest` / `bindAdminRequest`. Eligible String-`_id` model CRUD uses windowed `@terreno/syncdb` (`AdminProvider` `syncDb`, `sync: {adminBroadcast: true}`). Keep passing `api` only for ObjectId / API-only hosts.
24
+
25
+ See [migrate-rtk-to-syncdb.md](../../../docs/how-to/migrate-rtk-to-syncdb.md).
26
+
27
+ ## Changed behavior
28
+
29
+ ### Scaffold with `create-terreno-app`, not MCP `terreno_bootstrap_app`
30
+
31
+ **What changed**
32
+
33
+ The MCP tool `terreno_bootstrap_app` is gone. The only supported scaffold is `bunx create-terreno-app` / `npm create terreno-app`. MCP still offers `terreno_bootstrap_ai_rules` for editor rules after the CLI runs.
34
+
35
+ **Why**
36
+
37
+ Generated apps need a deployable full-stack tree, not an in-chat file dump.
38
+
39
+ **Migration**
40
+
41
+ ```bash
42
+ # Before
43
+ # Call MCP tool terreno_bootstrap_app
44
+
45
+ # After
46
+ bunx create-terreno-app
47
+ ```
48
+
49
+ ### Admin host auth for native fetch RPC
50
+
51
+ **What changed**
52
+
53
+ `AdminProvider` accepts host-injected `credentials` and `getAuthHeaders`. Hosts that inject those use native `adminRequest`. Hosts that pass only `api` keep RTK `injectEndpoints`. The admin SPA uses cookie `same-origin` credentials; the example app sends a Bearer token.
54
+
55
+ **Migration**
56
+
57
+ Cookie hosts:
58
+
59
+ ```typescript
60
+ <AdminProvider credentials="same-origin" /* ... */>
61
+ ```
62
+
63
+ Bearer hosts:
64
+
65
+ ```typescript
66
+ <AdminProvider getAuthHeaders={async () => ({Authorization: `Bearer ${token}`})} /* ... */>
67
+ ```
68
+
69
+ Hosts that only pass `api` do not need a change in 57.4.0.
70
+
71
+ ### Admin HTTP scripts enqueue `admin/script` when `JobsApp` is registered
72
+
73
+ **What changed**
74
+
75
+ Admin panel HTTP script runs enqueue durable job `admin/script` when `JobsApp` is registered. The Scripts UI still polls `BackgroundTask`. If runner enqueue throws, the HTTP handler marks that `BackgroundTask` failed and returns 500. CLI script runs stay in-process.
76
+
77
+ **Migration**
78
+
79
+ If you register `JobsApp`, start a worker (`startWorker()`) so admin script runs execute. See [background-jobs.md](../../../docs/how-to/background-jobs.md).
80
+
81
+ ### Combined `terreno-planning` plugin
82
+
83
+ **What changed**
84
+
85
+ The plugin now ships Terreno app, docs, upgrade, deployment, and verification skills with the lifecycle. Redundant `commit` and `create-pr` skills are removed in favor of Brew. Several unused Expo skills are no longer distributed. Plugin version is `2.12.0` after Taste re-verify and prepush gates.
86
+
87
+ **Migration**
88
+
89
+ Reinstall or update the `terreno-planning` plugin. Use Brew instead of the removed `commit` / `create-pr` skills.
90
+
91
+ ## New capabilities
92
+
93
+ ### Charts and dashboards
94
+
95
+ `@terreno/ui` ships `LineChart`, `BarChart`, `AreaChart`, `DonutChart`, and `DashboardGrid`. See [charts-and-dashboards.md](../../../docs/how-to/charts-and-dashboards.md).
96
+
97
+ ### In-app notifications
98
+
99
+ Register `NotificationsApp`. Use `NotificationBell`, `NotificationInbox`, and `NotificationPreferences` from `@terreno/ui`. Inbox mutations use syncdb.
100
+
101
+ ### Product announcements
102
+
103
+ `bun add @terreno/announcements` and register `AnnouncementsApp`. Frontend: `AnnouncementNavigator`. See [product-announcements.md](../../../docs/how-to/product-announcements.md).
104
+
105
+ ### Optional organizations
106
+
107
+ Register `OrgsApp` for `Organization` / `Membership`, org context, and org-admin RBAC. Single-tenant apps stay unchanged.
108
+
109
+ ### Audit log
110
+
111
+ Register `AuditApp` and set `audit: true` on `modelRouter`. See [audit-log.md](../../../docs/how-to/audit-log.md).
112
+
113
+ ### Durable jobs
114
+
115
+ `@terreno/jobs` `JobsApp` with Mongo, GCP Cloud Tasks, or Vercel Queues runners. See [background-jobs.md](../../../docs/how-to/background-jobs.md).
116
+
117
+ ### MongoDB migrations
118
+
119
+ `terreno-migrate` plus `TerrenoApp` `migrations.runOnStart`. Production wet apply requires `ALLOW_MIGRATIONS=true`.
120
+
121
+ ### Windowed admin sync
122
+
123
+ Set `sync: {adminBroadcast: true}` and pass `syncDb` into `AdminProvider`. `GET /admin/config` includes `adminBroadcast` / `syncCollection`.
124
+
125
+ ### `create-terreno-app`
126
+
127
+ Unscoped CLI published in lockstep. Generated scaffolds pin `^57.4.0` on Terreno dependencies.
128
+
129
+ ### DataTable server-side filtering
130
+
131
+ Optional `onQueryChange` / `buildDataTableListQuery`. Admin tables adopt the same filter/search UI.
132
+
133
+ ## Verification
134
+
135
+ - `bun add` every `@terreno/*` dependency to `57.4.0`, then `bun run compile` and `bun run lint` at the app root
136
+ - `cd <your frontend> && bun run sdk` after pulling `@terreno/api` (notifications, orgs, audit, migrations, jobs, announcements)
137
+ - Replace any `terreno_bootstrap_app` MCP usage with `bunx create-terreno-app`
138
+ - If you use admin RPC, inject `credentials` or `getAuthHeaders` (or keep `api` until Terreno 58)
139
+ - If you register `JobsApp`, confirm `startWorker()` so admin scripts and enqueued jobs run
140
+ - If you enable windowed admin, confirm `adminBroadcast` on the collection and a `Refresh` control on `AdminModelTable`
@@ -41,9 +41,11 @@ Canonical copy, language rules, and the Django/Rails comparison:
41
41
  | [@terreno/admin-frontend](reference/admin-frontend.md) | Admin panel frontend screens for `@terreno/api` backends |
42
42
  | [@terreno/admin-spa](reference/admin-spa.md) | Standalone admin SPA (Expo Router web) plus Express serve plugin |
43
43
  | [@terreno/api-health](reference/api-health.md) | Health check plugin for `@terreno/api` |
44
+ | [@terreno/announcements](reference/announcements.md) | In-app product update announcements |
44
45
  | [@terreno/comms](reference/comms.md) | Pluggable communications providers |
45
46
  | [@terreno/feature-flags](reference/feature-flags.md) | Feature flags and A/B testing plugin for `@terreno/api` |
46
47
  | [@terreno/mcp](reference/mcp-server.md) | MCP server that gives coding agents Terreno docs, codegen tools, and prompts |
48
+ | [create-terreno-app](reference/create-terreno-app.md) | CLI to scaffold a deployable full-stack Terreno app (`bunx create-terreno-app`) |
47
49
 
48
50
  ### Legacy
49
51
 
@@ -56,6 +58,7 @@ Canonical copy, language rules, and the Django/Rails comparison:
56
58
  ## Quick links
57
59
 
58
60
  - [Getting started](tutorials/getting-started.md)
61
+ - [Create a Terreno app](how-to/create-a-terreno-app.md)
59
62
  - [Positioning](explanation/positioning.md)
60
63
  - [How admin interfaces are shaped](explanation/admin-interface.md)
61
64
  - [Build admin screens](how-to/build-admin-screens.md)
@@ -11,11 +11,13 @@ Understanding-oriented documentation: concepts, architecture, and context.
11
11
  ## Contents
12
12
 
13
13
  - [Local-first data](local-first-data.md) — Why the local store is the UI source of truth
14
+ - [Planning plugins](planning-plugins.md) — How the lifecycle and scan plugins divide discovery from delivery
14
15
  - [Loop engineering](loop-engineering.md) — Fresh-invocation lifecycle, state, evidence, and orchestration boundaries
15
16
  - [GitHub issue lifecycle](../how-to/github-issue-lifecycle.md) — Pick-ready issues and plan comments for Pick/Roast
16
17
  - [Install agent skills](../how-to/install-agent-skills.md) — `npx skills add FlourishHealth/terreno`
17
18
  - [AI-powered workflows](ai-workflows.md) — Autonomous documentation, testing, and maintenance workflows
18
19
  - [Authentication architecture](authentication.md) — Better Auth, JWT, and optional MCP service tokens
20
+ - [Organization tenancy](organizations.md) — Optional Membership-backed tenancy, context, and isolation boundaries
19
21
  - [Configuration system](configuration-system.md) — Runtime configuration with database persistence
20
22
  - [Dependency management](dependency-management.md) — Catalog pins, exercise tests, fingerprint freeze
21
23
  - [Modular API design](modular-api-design.md) — 🚧 Why TerrenoApp replaces setupServer
@@ -29,5 +31,6 @@ Understanding-oriented documentation: concepts, architecture, and context.
29
31
  - [Admin plugin frontend widgets](admin-plugin-frontend.md) — Widget IDs from backend plugins
30
32
  - [Consent admin migration](admin-consent-migration.md) — Which consent screens stay hand-written
31
33
  - [Public roadmap process](roadmap-process.md) — GitHub roadmap vs Linear execution
34
+ - [Example app coverage](example-coverage.md) — Which framework capabilities the example apps exercise
32
35
  - [Repository settings](repository-settings.md) — Maintainer GitHub settings that cannot be committed
33
- - [Roadmap seed issues](roadmap-seed-issues.md) — Ready-to-paste GitHub issue bodies for IPs
36
+ - [Why Terreno owns chart SVG](charts.md) — Owned `react-native-svg` vs victory-native
@@ -12,22 +12,25 @@ workflow (consent publish, comms message detail, password-on-create).
12
12
 
13
13
  ## Two hosts
14
14
 
15
- | Host | When to use | Route prefix (`routeBase`) | API prefix (`apiBase`) |
16
- | --- | --- | --- | --- |
17
- | Embedded (`example-frontend/app/admin`) | Admin lives inside the product Expo app | `"/admin"` | `"/admin"` |
18
- | Standalone (`@terreno/admin-spa`) | Same-origin console served by `AdminSpaServeApp` | `""` (SPA root; mount is `/console`) | `"/admin"` |
15
+ | Host | When to use | Route prefix (`routeBase`) | API prefix (`apiBase`) | Fetch auth |
16
+ | --- | --- | --- | --- | --- |
17
+ | Embedded (`example-frontend/app/admin`) | Admin lives inside the product Expo app | `"/admin"` | `"/admin"` | `getAuthHeaders` → Bearer, plus `apiOrigin` = RTK `baseUrl` so RPC does not hit the Expo origin |
18
+ | Standalone (`@terreno/admin-spa`) | Same-origin console served by `AdminSpaServeApp` | `""` (SPA root; mount is `/console`) | `"/admin"` | `credentials="same-origin"`; empty `getAuthHeaders`; omit `apiOrigin` |
19
19
 
20
20
  `apiBase` is the HTTP path for `/config` and CRUD. `routeBase` is the Expo Router
21
21
  prefix the sidebar concatenates onto `/{model.name}` and `/{screen.name}`. Mixing
22
- them puts nav on the wrong URL.
22
+ them puts nav on the wrong URL. Embedded hosts must also set `apiOrigin` (the
23
+ backend origin, e.g. `http://localhost:4000`) on `AdminProvider`. Native `fetch`
24
+ RPC uses that origin to prefix `/admin/config` and `/rbac/roles`. Do not put the
25
+ origin in `apiBase` — that would rewrite in-app navigation.
23
26
 
24
27
  ## Screen kinds
25
28
 
26
29
  | Kind | Source of truth | Frontend |
27
30
  | --- | --- | --- |
28
- | Model changelist / form | `modelRouter({admin: ...})` or plugin `adminContribution()` | `AdminScreenRouter` → `AdminModelTable` / `AdminModelForm` |
31
+ | Model changelist / form | `modelRouter({admin: ...})` or plugin `adminContribution()` | `AdminScreenRouter` → `AdminModelTable` / `AdminModelForm` (list filters live on `DataTable`, not a side drawer) |
29
32
  | Custom screen | `AdminApp.customScreens` or plugin `customScreens` (`name` + `displayName`) | Matching `AdminProvider.widgets.screens[name]`, or a dedicated Expo route |
30
- | Platform tool | Built-in (`scripts`, `roles`, `version`, `configuration`, audit log, feature flags) | Sidebar **Platform** section; visibility from `/admin/config.platformTools` |
33
+ | Platform tool | Built-in (`scripts`, `roles`, `version`, `configuration`, audit log, feature flags, jobs) | Sidebar **Platform** section; visibility from `/admin/config.platformTools` (jobs is lifted from `customScreens`) |
31
34
  | Home widget | `AdminApp.home.slots` IDs | `AdminProvider.widgets.home` (built-ins already registered) |
32
35
 
33
36
  `GET /admin/config` is caller-specific. Models and custom screens without read
@@ -41,12 +44,16 @@ app-level nav inside admin.
41
44
  Order in the rail:
42
45
 
43
46
  1. **Home** → `{routeBase}/`
44
- 2. **Models** grouped by `admin.group` (ungrouped models land in **General**)
45
- 3. **Screens** from config `customScreens` (plus optional host extras)
46
- 4. **Platform** — Scripts (`/__scripts`), Roles, Version, Audit Log, Feature Flags, Configuration
47
+ 2. **Models** grouped by `admin.group` (ungrouped models land in **General**). Custom screens with `group` render inside the matching group **before** model links for that group. A grouped screen with no models still gets its own group heading.
48
+ 3. **Screens** — only `customScreens` **without** `group` (plus optional host extras)
49
+ 4. **Platform** — Scripts (`/__scripts`), Migrations (`/__migrations` when
50
+ `migrations.enabled`), Roles, Version, Audit Log, Feature Flags, Jobs, Configuration
47
51
 
48
52
  Audit log and Feature Flags are models, but the shell lifts them into Platform so
49
- operators do not hunt for them among business collections.
53
+ operators do not hunt for them among business collections. The Platform Audit Log
54
+ row is `AuditEvent` when `AuditApp` is registered. `isAuditLogModel` also matches
55
+ legacy `AdminAuditLog`, `audit-log`, and `audit-events` names. Jobs is a custom
56
+ screen (`name: "jobs"`); the shell lifts it the same way.
50
57
 
51
58
  Below 768px the rail becomes a hamburger drawer. The main column is a body-style
52
59
  canvas (`neutral-050`). Nested `Page` screens use `color="transparent"` and
@@ -59,12 +66,12 @@ canvas (`neutral-050`). Nested `Page` screens use `color="transparent"` and
59
66
  | Concern | Location |
60
67
  | --- | --- |
61
68
  | Which models appear | `modelRouter` `admin` block, or plugin `adminContribution()` |
62
- | Extra non-CRUD pages | `AdminApp.customScreens` + `widgets.screens` with the **same** `name` |
69
+ | Extra non-CRUD pages | `AdminApp.customScreens` + `widgets.screens` with the **same** `name`. Optional `group` places the screen in that sidebar group (see **Models** above). |
63
70
  | Home dashboard composition | `AdminApp.home.slots` |
64
71
  | Field widgets | `admin.fieldOverrides.widget` + `widgets.fields` |
65
72
  | Expo files | `app/admin/_layout.tsx` (shell once) or per-route shell in admin-spa |
66
73
  | Dedicated extra segments (`/comms/:id`) | Explicit Expo files so `[model]/[id]` does not treat them as generic forms |
67
- | Data fetching | `useAdminConfig` / `useAdminApi` (RTK). Admin is **not** a syncdb collection |
74
+ | Data fetching | REST remains membership/search/sort/pagination. String `_id` models with `adminBroadcast` overlay TinyBase and write through syncdb when the host passes a window client + fetch auth. Framework RPC uses host-bound fetch; ObjectId/API-only CRUD keeps RTK compatibility in Terreno 57. |
68
75
 
69
76
  ## Related
70
77
 
@@ -0,0 +1,29 @@
1
+ # Why Terreno owns chart SVG
2
+
3
+ Terreno charts are drawn with `react-native-svg` and private `d3-scale` / `d3-shape` helpers inside `@terreno/ui`. Apps import `LineChart`, `BarChart`, `AreaChart`, and `DonutChart` — not d3 types and not a third-party chart API.
4
+
5
+ `victory-native` was rejected for this slice: Skia canvas fights Terreno theme fonts, bun tests, and accessibility. Owned SVG lets axis labels stay `@terreno/ui` `Text` (Nunito/Titillium) and lets hit targets stay clickable `Box`es with `testID`s.
6
+
7
+ `BarChart` grows each bar from the zero baseline (up for positives, down for negatives). A zero value draws no sliver; the press/hover hit stays at least 24px so the tooltip still works.
8
+
9
+ `DonutChart` uses `d3-shape` `arc` angles (`0` is 12 o'clock, clockwise). Slice press/hover hits use the same paint transform so the tooltip lands on the visible slice.
10
+
11
+ Axis ticks and donut legend labels use `Text` with `skipLinking`, matching `ChartFrame` tooltips, so a URL in `point.label` stays inert text instead of `Linking.openURL`.
12
+
13
+ Sizing flows one way: the frame stretches to the container (`alignSelf: stretch`), the plot
14
+ measures itself with `onLayout`, and the drawing is clipped to that measurement. Nothing inside a
15
+ chart may set its own min-content width, or the container would size to the chart and the chart
16
+ would size to the container. That is why x tick labels are absolutely positioned on their band
17
+ centers instead of laid out in a row, and why the plot column sets `minWidth: 0`.
18
+
19
+ Height works the same way: `height` is the whole chart, and the tick row, tooltip row, and legend
20
+ row come out of that budget. A chart therefore fits a fixed-height slot, and reserving the tooltip
21
+ row even when no tooltip is showing keeps hovering from reflowing the page.
22
+
23
+ `DashboardGrid` is layout only, so it stays on the eager root export. Chart implementations sit behind the same lazy root boundary as `GPTChat`. Cell width subtracts flex `gap` so `md`/`lg` column counts actually fit.
24
+
25
+ Chart paint is proven with **rendered PNG goldens**, not React test-renderer JSON.
26
+ `bun run ui:charts:compare` opens the demo gallery
27
+ (`/demo/chart-visual-gallery`), screenshots each fixture from easy to hard, and
28
+ pixel-diffs against `demo/rendered-snapshots/`. Agents use the `review-chart-visuals`
29
+ skill to read golden / actual / diff images when a compare fails.
@@ -11,6 +11,8 @@ flowchart TD
11
11
  U["User<br/>iOS / Android / Web"]
12
12
  CDN["Cloud CDN + GCS bucket<br/>expo export -p web output"]
13
13
  CR["Cloud Run<br/>@terreno/api backend"]
14
+ CT["Cloud Tasks<br/>durable jobs push queue"]
15
+ JW["Cloud Run<br/>private jobs worker service"]
14
16
  SM["Secret Manager<br/>auth secrets, MONGO_URI"]
15
17
  AT["MongoDB Atlas<br/>replica set (change streams)"]
16
18
  GCS["GCS bucket<br/>user file uploads"]
@@ -21,6 +23,9 @@ flowchart TD
21
23
  CR --> SM
22
24
  CR --> AT
23
25
  CR --> GCS
26
+ CR -->|"enqueue"| CT
27
+ CT -->|"OIDC POST /jobs/execute"| JW
28
+ JW --> AT
24
29
  AR --> CR
25
30
  ```
26
31
 
@@ -30,6 +35,8 @@ flowchart TD
30
35
  |-----------|------|
31
36
  | **Artifact Registry** | Stores versioned backend container images built from `example-backend/Dockerfile` |
32
37
  | **Cloud Run** | Runs the long-lived `@terreno/api` process (HTTP + Socket.io) |
38
+ | **Cloud Tasks** | Dispatches persisted `@terreno/jobs` rows to an authenticated HTTP worker with queue-level concurrency limits |
39
+ | **Jobs worker service** | Runs the same example-backend image and job definitions; exposes only the Cloud Tasks execute callback through Cloud Run IAM |
33
40
  | **Secret Manager** | Holds `MONGO_URI`, JWT secrets, and other credentials — mounted as env vars |
34
41
  | **MongoDB Atlas** | Primary database; must be a replica set for change streams (realtime, feature flags) |
35
42
  | **GCS (web bucket)** | Serves static web export; CDN caches at the edge |
@@ -59,6 +66,31 @@ flowchart TD
59
66
 
60
67
  Native iOS and Android apps call Cloud Run directly; only the web client uses the CDN origin.
61
68
 
69
+ ## Durable jobs and PR isolation
70
+
71
+ Cloud Tasks is a push service; it does not expose a pull-consumer API. Cloud Run worker
72
+ pools do not have HTTP ingress, so the example uses a private Cloud Run service as the
73
+ execution pool. Queue rate limits bound dispatch concurrency and Cloud Run scales the
74
+ worker instances.
75
+
76
+ Production and PR revisions share one queue safely because every task stores its complete
77
+ callback URL. A PR backend targets the matching `pr-<number>` worker tag and uses
78
+ `terreno-example-pr-<number>` as its Mongo database. Removing a preview removes both
79
+ service tags. An old callback then fails closed instead of reaching production or another
80
+ PR. A failed backend preview tag cannot stay on a not-Ready revision: CD rebuilds traffic
81
+ from Ready tags, deploys the new revision without `--tag`, then tags it.
82
+
83
+ Every example-frontend PR preview is paired with this isolated backend, including
84
+ frontend-only PRs. The exported Netlify bundle targets the matching `pr-<number>` Cloud
85
+ Run tag, whose CORS configuration trusts only that preview origin. Preview clients never
86
+ fall back to the production backend or production database.
87
+
88
+ Queue IAM grants `cloudtasks.enqueuer` and `iam.serviceAccountUser` on
89
+ `terreno-jobs-invoker` only to `terreno-backend-runtime`, the example API Cloud Run
90
+ identity. The project default Compute Engine SA (MCP and any other service that omits a
91
+ runtime identity) cannot create tasks that present that OIDC token. The worker remains
92
+ invokable only by `terreno-jobs-invoker`.
93
+
62
94
  ## Related
63
95
 
64
96
  - [Deployment baseline](deployment-baseline.md) — seven requirements every host must satisfy
@@ -73,6 +73,6 @@ Three details consumers get wrong:
73
73
 
74
74
  - **`PORT`** — Cloud Run and other platforms assign the listen port via `PORT`. Terreno reads `process.env.PORT` in `api/src/terrenoApp.ts` (default `9000` if unset).
75
75
  - **Non-root** — Do not run the container as root in production.
76
- - **Compile order** — Workspace packages (`@terreno/api`, `@terreno/test`, etc.) must compile before the example backend bundles.
76
+ - **Compile order** — Workspace packages (`@terreno/api`, `@terreno/jobs`, `@terreno/test`, etc.) must compile before the example backend bundles. Compile `@terreno/jobs` before `@terreno/admin-backend` — admin-backend imports jobs. The image `exports` point at `dist/`, so skipping a workspace compile fails `bun build --compile` with an unresolved `@terreno/*` import.
77
77
 
78
78
  CI builds the image on every PR that touches backend paths (`.github/workflows/example-backend-docker.yml`).
@@ -0,0 +1,43 @@
1
+ # Example app coverage
2
+
3
+ The `example-backend` and `example-frontend` apps are the living checklist for
4
+ framework capabilities. When you add a capability to `@terreno/*`, update this
5
+ matrix in the same slice.
6
+
7
+ Citations are paths from the repository root. A "yes" means a reader can follow
8
+ that file (and its imports) to a working example. Gaps stay explicit.
9
+
10
+ ## Capability matrix
11
+
12
+ | Capability | example-backend | example-frontend | Notes |
13
+ | --- | --- | --- | --- |
14
+ | `modelRouter` CRUD | yes — `example-backend/src/api/todos.ts` | yes — `example-frontend/components/SyncTodosScreen.tsx` (syncdb hooks generated from the same collection) | Todos are synced; list/create/update/delete go through `@terreno/syncdb`, not RTK collection hooks. |
15
+ | Owner permissions | yes — `OwnerQueryFilter` + `Permissions.IsOwner` in `example-backend/src/api/todos.ts` | yes — the todos screen only shows the signed-in user's rows after sync scopes apply | Also gated by RBAC `access: {resource: "todo"}`. |
16
+ | Admin panel (embedded) | yes — Admin plugin registration in `example-backend/src/server.ts` | yes — `example-frontend/app/admin/` | Expo routes wrap `@terreno/admin-frontend` screens. |
17
+ | Admin SPA | yes — `AdminSpaServeApp` in `example-backend/src/server.ts` | n/a | Standalone SPA is served from the backend; not a frontend route. |
18
+ | AI streaming chat | yes — `example-backend/src/api/ai.ts` (`addGptRoutes`) | yes — `example-frontend/app/(tabs)/ai.tsx` (`GPTChat`, optional `mascot`) | Empty-chat mascot is consumer-owned; the example fox is not a framework default. |
19
+ | AI structured output | no | no | `@terreno/ai` supports structured generation; the example only streams chat. Recorded gap — not claimed by a current tutorial. |
20
+ | Feature flags + live updates | yes — `FeatureFlagsApp` in `example-backend/src/server.ts`, seed `example-backend/src/scripts/seed-feature-flags.ts` | yes — `useTerrenoFeatureFlags` in `example-frontend/app/_layout.tsx` | Socket-backed live updates share the realtime connection. |
21
+ | Websockets / realtime | yes — `RealtimeApp` in `example-backend/src/server.ts`, `example-backend/src/websockets.ts` | yes — `useSocketConnection` in `example-frontend/app/_layout.tsx` | Sync deltas also use the socket (`SyncApp` + `@terreno/syncdb`). |
22
+ | Consent forms | yes — `example-backend/src/consentDefinitions.ts`, seed scripts | yes — `example-frontend/app/(tabs)/consents.tsx`, admin `example-frontend/app/admin/consent-forms/` | First-login flow is covered by e2e (`example-frontend/e2e/consents.spec.ts`). |
23
+ | File upload / GCS | yes — `example-backend/src/api/settings.ts`, AI file routes in `example-backend/src/api/ai.ts` | yes — `example-frontend/app/(tabs)/files.tsx`, `example-frontend/app/gcs-settings.tsx` | |
24
+ | Better Auth | yes — `example-backend/src/utils/betterAuthConfig.ts`, `BetterAuthApp` in `example-backend/src/server.ts` | yes — `example-frontend/app/login.tsx`, `example-frontend/lib/betterAuth.ts` | Default `AUTH_PROVIDER` is `better-auth`. |
25
+ | syncdb local-first | yes — `SyncApp` in `example-backend/src/server.ts` | yes — `example-frontend/store/syncdb.ts`, `example-frontend/app/(tabs)/index.tsx` | PR #869 closed without merge; `@terreno/syncdb` shipped on the launch line and is the example todos path. |
26
+ | RBAC | yes — `example-backend/src/rbacRoles.ts`, `access.ts`, `access: {resource: "todo"}` on the todo router | yes — `example-frontend/app/admin/roles.tsx` | Shipped. The IP snapshot that marked RBAC "not shipped" is stale. Plan: [rbac-permissions.md](../implementationPlans/rbac-permissions.md). |
27
+ | Organizations | yes — `createAccess({organizations: true})`, `organizationSettingsSchema`, `orgScopedPlugin` on projects | yes — admin org directory/settings at `example-frontend/app/admin/orgs/` | Settings live on `Organization.settings`; example registers a nested timezone schema. |
28
+ | Background jobs | no | no | No generic job queue example. Admin maintenance scripts (`example-backend/src/adminScripts.ts`, script runner widget) are a related but different surface. Plan: [admin-script-runner.md](../implementationPlans/admin-script-runner.md). |
29
+
30
+ ## Gaps
31
+
32
+ | Gap | Why it stays | Follow-up |
33
+ | --- | --- | --- |
34
+ | AI structured output | Chat streaming already demonstrates the AI pillar; structured `generateObject`-style routes are unused by current tutorials | Track with [AI-first tutorials #1010](https://github.com/FlourishHealth/terreno/issues/1010) (`add-ai-features.md` requires one structured-output call). |
35
+ | Generic background jobs | Unshipped as a first-class example; do not invent a queue UI here | Track with [Durable background jobs #1188](https://github.com/FlourishHealth/terreno/issues/1188). Admin script runner is a related surface — [admin-script-runner.md](../implementationPlans/admin-script-runner.md). |
36
+
37
+ ## Keeping the matrix true
38
+
39
+ When you add a framework capability:
40
+
41
+ 1. Exercise it in `example-backend` and/or `example-frontend`.
42
+ 2. Update this page (cite the file).
43
+ 3. Mention the example in the PR.
@@ -27,7 +27,10 @@ Think **apply locally, then reconcile** instead of **request, wait, update cache
27
27
  3. **Refetch orchestration** — `invalidatesTags`, `refetch()`, and list/detail cache coordination after mutations.
28
28
  4. **Treating the network as the read path** — list screens blocked on `isLoading` for every navigation.
29
29
 
30
- RTK Query remains appropriate for **non-synced** endpoints: `/auth/me`, admin RPC, AI routes, and anything that should stay request/response.
30
+ RTK Query remains appropriate for **non-synced generated** endpoints such as
31
+ `/auth/me` and AI routes. Built-in admin RPC stays request/response through its
32
+ host-bound fetch client; ObjectId/API-only admin CRUD keeps RTK compatibility in
33
+ Terreno 57.
31
34
 
32
35
  ## What you start doing
33
36
 
@@ -35,7 +38,7 @@ RTK Query remains appropriate for **non-synced** endpoints: `/auth/me`, admin RP
35
38
  2. **Sync-status UX** — Surface offline state, queued mutations, and drain progress with `useSyncStatus` (and optionally `SyncStatusBanner`).
36
39
  3. **Encryption at rest (web)** — Web persistence uses AES-GCM via the default `createServerKeyProvider`; understand key fetch and `onDecryptFailure` for support flows.
37
40
  4. **Key lifecycle on logout** — Call `syncDb.stop()` and consider `wipeLocalData` when the authenticated user changes so one account does not read another's local store.
38
- 5. **Backend sync registration** — Every synced collection needs `syncPlugin`, `isDeletedPlugin`, and a `sync` block on `modelRouter`, plus `SyncApp` and `RealtimeApp` on the server.
41
+ 5. **Backend sync registration** — Every synced collection needs `syncPlugin`, `isDeletedPlugin`, and a `sync` block on `modelRouter`, plus `SyncApp` and `RealtimeApp` on the server. Optional `sync.adminBroadcast: true` also emits `sync:delta` to `{collection}|admin`. Admin clients subscribe with `mode: "window"` (`createSyncDb({windowCollections})`) so they do not snapshot or reconcile that collection; they call `hydrateWindow` (REST membership ids + `GET /sync/entities`). Pass the same `accessControl` into `SyncApp` that `AdminApp` uses so `{collection}|admin` requires `admin:access`. `AdminApp.register` also installs that model's admin list/read/`queryFilter` on the admin window so hydrate and live `|admin` deltas match `/admin` REST. Without RBAC, `user.admin` is enough for the shell gate. Live deltas on that stream apply only to ids already in the window; Refresh is a REST re-query plus `hydrateWindow`.
39
42
 
40
43
  ## Tradeoffs
41
44