@agent-native/core 0.165.3 → 0.167.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 (249) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/templates/analytics/.agents/skills/secrets/SKILL.md +5 -1
  3. package/corpus/templates/analytics/.agents/skills/workspace-conventions/SKILL.md +4 -1
  4. package/corpus/templates/analytics/CHANGELOG.md +740 -2
  5. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +93 -56
  6. package/corpus/templates/analytics/app/i18n-data.ts +23 -20
  7. package/corpus/templates/analytics/app/pages/Settings.tsx +0 -1
  8. package/corpus/templates/analytics/app/pages/adhoc/explorer/index.tsx +0 -1
  9. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +1 -1
  10. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +2 -1
  11. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +0 -1
  12. package/corpus/templates/analytics/server/lib/first-party-analytics-backend.ts +0 -32
  13. package/corpus/templates/analytics/server/lib/session-replay.ts +1 -5
  14. package/corpus/templates/assets/.agents/skills/secrets/SKILL.md +5 -1
  15. package/corpus/templates/assets/.agents/skills/workspace-conventions/SKILL.md +4 -1
  16. package/corpus/templates/assets/CHANGELOG.md +204 -2
  17. package/corpus/templates/assets/actions/navigate.ts +2 -2
  18. package/corpus/templates/assets/actions/save-generated-image.ts +0 -5
  19. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +2 -262
  20. package/corpus/templates/assets/app/routes/library.tsx +1 -1
  21. package/corpus/templates/assets/app/routes/settings.tsx +0 -3
  22. package/corpus/templates/brain/.agents/skills/secrets/SKILL.md +5 -1
  23. package/corpus/templates/brain/.agents/skills/workspace-conventions/SKILL.md +4 -1
  24. package/corpus/templates/brain/CHANGELOG.md +145 -2
  25. package/corpus/templates/brain/actions/ask-brain.ts +0 -1
  26. package/corpus/templates/brain/actions/navigate.ts +2 -2
  27. package/corpus/templates/brain/app/routes/sources.tsx +0 -4
  28. package/corpus/templates/brain/server/lib/capture-sanitization.ts +0 -11
  29. package/corpus/templates/calendar/.agents/skills/secrets/SKILL.md +5 -1
  30. package/corpus/templates/calendar/.agents/skills/workspace-conventions/SKILL.md +4 -1
  31. package/corpus/templates/calendar/CHANGELOG.md +272 -2
  32. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +0 -20
  33. package/corpus/templates/calendar/app/pages/CalendarView.tsx +0 -1
  34. package/corpus/templates/chat/.agents/skills/secrets/SKILL.md +5 -1
  35. package/corpus/templates/chat/.agents/skills/workspace-conventions/SKILL.md +4 -1
  36. package/corpus/templates/chat/CHANGELOG.md +89 -2
  37. package/corpus/templates/chat/actions/navigate.ts +2 -2
  38. package/corpus/templates/clips/.agents/skills/secrets/SKILL.md +5 -1
  39. package/corpus/templates/clips/.agents/skills/workspace-conventions/SKILL.md +4 -1
  40. package/corpus/templates/clips/CHANGELOG.md +865 -2
  41. package/corpus/templates/clips/actions/import-loom-recording.ts +16 -4
  42. package/corpus/templates/clips/actions/navigate.ts +2 -2
  43. package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +0 -1
  44. package/corpus/templates/clips/app/components/library/space-dialogs.tsx +0 -1
  45. package/corpus/templates/clips/app/components/meetings/share-meeting-dialog.tsx +0 -1
  46. package/corpus/templates/clips/app/components/player/clips-share-trigger.tsx +17 -0
  47. package/corpus/templates/clips/app/components/player/delete-recording-menu.tsx +3 -3
  48. package/corpus/templates/clips/app/components/player/video-player.tsx +2 -2
  49. package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +0 -1
  50. package/corpus/templates/clips/app/components/settings/ai-setup-section.tsx +0 -1
  51. package/corpus/templates/clips/app/global.css +31 -0
  52. package/corpus/templates/clips/app/hooks/use-playback-position.ts +0 -2
  53. package/corpus/templates/clips/app/lib/download-release-channel.ts +10 -0
  54. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +1 -3
  55. package/corpus/templates/clips/app/routes/download.tsx +67 -44
  56. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +7 -12
  57. package/corpus/templates/clips/app/routes/record.tsx +6 -6
  58. package/corpus/templates/clips/app/routes/share.$shareId.tsx +26 -29
  59. package/corpus/templates/clips/changelog/2026-08-20-clip-viewer-share-actions.md +6 -0
  60. package/corpus/templates/clips/changelog/2026-08-20-preparing-recording-countdown-overlay.md +6 -0
  61. package/corpus/templates/clips/chrome-extension/src/background.ts +0 -13
  62. package/corpus/templates/clips/chrome-extension/src/overlay.ts +0 -1
  63. package/corpus/templates/clips/chrome-extension/src/popup.ts +0 -20
  64. package/corpus/templates/clips/desktop/src/app.tsx +6 -18
  65. package/corpus/templates/clips/desktop/src/hooks/useMediaDevices.ts +0 -1
  66. package/corpus/templates/clips/desktop/src/lib/recorder.ts +0 -8
  67. package/corpus/templates/clips/desktop/src/overlays/preparing.tsx +4 -6
  68. package/corpus/templates/clips/desktop/src/styles.css +18 -20
  69. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +9 -17
  70. package/corpus/templates/content/.agents/skills/secrets/SKILL.md +5 -1
  71. package/corpus/templates/content/.agents/skills/workspace-conventions/SKILL.md +4 -1
  72. package/corpus/templates/content/CHANGELOG.md +503 -2
  73. package/corpus/templates/content/actions/_database-source-utils.ts +0 -3
  74. package/corpus/templates/content/actions/attach-content-database-source.ts +1 -4
  75. package/corpus/templates/content/actions/navigate.ts +2 -2
  76. package/corpus/templates/content/actions/prepare-builder-source-execution.ts +1 -1
  77. package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +0 -6
  78. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +0 -580
  79. package/corpus/templates/content/app/components/editor/database/FormView.tsx +2 -2
  80. package/corpus/templates/content/app/components/editor/database/filter-sort.ts +1 -1
  81. package/corpus/templates/content/app/components/editor/database/settings.tsx +0 -23
  82. package/corpus/templates/content/app/components/editor/database/sidebar.tsx +0 -1
  83. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +8 -304
  84. package/corpus/templates/content/app/hooks/use-documents.ts +0 -1
  85. package/corpus/templates/content/shared/api.ts +0 -1
  86. package/corpus/templates/content/shared/builder-mdx.ts +0 -1
  87. package/corpus/templates/content/shared/nfm.ts +1 -7
  88. package/corpus/templates/crm/.agents/skills/secrets/SKILL.md +5 -1
  89. package/corpus/templates/crm/.agents/skills/workspace-conventions/SKILL.md +4 -1
  90. package/corpus/templates/crm/CHANGELOG.md +31 -2
  91. package/corpus/templates/crm/actions/merge-crm-records.ts +0 -4
  92. package/corpus/templates/crm/app/components/crm/record/RecordLists.tsx +0 -1
  93. package/corpus/templates/crm/server/crm/hubspot-adapter.ts +0 -1
  94. package/corpus/templates/crm/server/crm/salesforce-adapter.ts +0 -1
  95. package/corpus/templates/crm/server/db/crm-store.ts +1 -1
  96. package/corpus/templates/design/.agents/skills/secrets/SKILL.md +5 -1
  97. package/corpus/templates/design/.agents/skills/workspace-conventions/SKILL.md +4 -1
  98. package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +1 -14
  99. package/corpus/templates/design/AGENTS.md +2 -1
  100. package/corpus/templates/design/CHANGELOG.md +870 -2
  101. package/corpus/templates/design/actions/apply-component-prop-edit.ts +1 -5
  102. package/corpus/templates/design/actions/generate-design.ts +0 -1
  103. package/corpus/templates/design/actions/generate-screens.ts +5 -2
  104. package/corpus/templates/design/actions/go-to-main-component.ts +2 -2
  105. package/corpus/templates/design/actions/list-design-systems.ts +10 -0
  106. package/corpus/templates/design/actions/navigate.ts +2 -2
  107. package/corpus/templates/design/actions/open-component-source.ts +4 -4
  108. package/corpus/templates/design/actions/present-design-variants.ts +1 -2
  109. package/corpus/templates/design/actions/run-design-audit.ts +0 -22
  110. package/corpus/templates/design/actions/show-design-questions.ts +5 -2
  111. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +19 -8
  112. package/corpus/templates/design/app/components/design/EditPanel.tsx +11 -183
  113. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +21 -4
  114. package/corpus/templates/design/app/components/design/QuestionFlow.tsx +1 -5
  115. package/corpus/templates/design/app/components/design/bridge/codegen.ts +1 -1
  116. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +10 -19
  117. package/corpus/templates/design/app/components/design/edit-panel/appearance-properties.tsx +1 -1
  118. package/corpus/templates/design/app/components/design/edit-panel/layout-properties.tsx +13 -3
  119. package/corpus/templates/design/app/components/design/edit-panel/panel-primitives.tsx +38 -32
  120. package/corpus/templates/design/app/components/design/edit-panel/position-layout-properties.tsx +1 -4
  121. package/corpus/templates/design/app/components/design/inspector/AlignmentMatrix.tsx +0 -4
  122. package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +15 -6
  123. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +2 -2
  124. package/corpus/templates/design/app/components/visual-editor/NodeRewriteProposal.tsx +0 -1
  125. package/corpus/templates/design/app/components/visual-editor/ReviewCanvasPins.tsx +1 -1
  126. package/corpus/templates/design/app/i18n-data.ts +122 -0
  127. package/corpus/templates/design/app/lib/clipboard-content-lineage.ts +11 -1
  128. package/corpus/templates/design/app/pages/DesignEditor.tsx +50 -254
  129. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +163 -8
  130. package/corpus/templates/design/app/pages/Index.tsx +17 -0
  131. package/corpus/templates/design/app/pages/design-editor/canvas-primitive-insert.ts +44 -32
  132. package/corpus/templates/design/app/pages/design-editor/canvas-primitives.ts +10 -0
  133. package/corpus/templates/design/app/pages/design-editor/clone-and-pen-edit.ts +49 -3
  134. package/corpus/templates/design/app/pages/design-editor/clone-idrefs.ts +31 -0
  135. package/corpus/templates/design/app/pages/design-editor/code-layer-state.ts +28 -0
  136. package/corpus/templates/design/app/pages/design-editor/commands/add-auto-layout.ts +3 -3
  137. package/corpus/templates/design/app/pages/design-editor/commands/align-selection.ts +44 -14
  138. package/corpus/templates/design/app/pages/design-editor/commands/apply-local-content-update.ts +16 -5
  139. package/corpus/templates/design/app/pages/design-editor/commands/change-selected-z-index.ts +1 -1
  140. package/corpus/templates/design/app/pages/design-editor/commands/frame-selection.ts +1 -1
  141. package/corpus/templates/design/app/pages/design-editor/commands/group-selection.ts +1 -1
  142. package/corpus/templates/design/app/pages/design-editor/commands/nudge-selection.ts +1 -1
  143. package/corpus/templates/design/app/pages/design-editor/commands/paste-selection.ts +142 -17
  144. package/corpus/templates/design/app/pages/design-editor/commands/screen-visual-duplicate-change.ts +1 -0
  145. package/corpus/templates/design/app/pages/design-editor/commands/ungroup-selection.ts +1 -1
  146. package/corpus/templates/design/app/pages/design-editor/commands/visual-duplicate-change.ts +1 -0
  147. package/corpus/templates/design/app/pages/design-editor/cross-screen-text-color.ts +25 -9
  148. package/corpus/templates/design/app/pages/design-editor/editor-state.ts +1 -0
  149. package/corpus/templates/design/app/pages/design-editor/measure-child-rects.ts +83 -0
  150. package/corpus/templates/design/app/pages/design-editor/paste-placement.ts +66 -0
  151. package/corpus/templates/design/server/routes/[...page].get.ts +0 -1
  152. package/corpus/templates/design/shared/code-layer.ts +120 -70
  153. package/corpus/templates/design/shared/design-surface-index.ts +0 -1
  154. package/corpus/templates/design/shared/pen-path.ts +0 -4
  155. package/corpus/templates/dispatch/.agents/skills/secrets/SKILL.md +5 -1
  156. package/corpus/templates/dispatch/.agents/skills/workspace-conventions/SKILL.md +4 -1
  157. package/corpus/templates/dispatch/CHANGELOG.md +196 -2
  158. package/corpus/templates/dispatch/app/routes/integrations.tsx +0 -109
  159. package/corpus/templates/factory/.agents/skills/secrets/SKILL.md +5 -1
  160. package/corpus/templates/factory/.agents/skills/workspace-conventions/SKILL.md +4 -1
  161. package/corpus/templates/factory/CHANGELOG.md +121 -2
  162. package/corpus/templates/factory/actions/navigate.ts +2 -2
  163. package/corpus/templates/factory/app/components/factory/FactoryAuditView.tsx +0 -13
  164. package/corpus/templates/factory/app/routes/factory.tsx +0 -1
  165. package/corpus/templates/factory/server/factory-graph/store.ts +0 -1
  166. package/corpus/templates/forms/.agents/skills/secrets/SKILL.md +5 -1
  167. package/corpus/templates/forms/.agents/skills/workspace-conventions/SKILL.md +4 -1
  168. package/corpus/templates/forms/CHANGELOG.md +166 -2
  169. package/corpus/templates/macros/.agents/skills/secrets/SKILL.md +5 -1
  170. package/corpus/templates/macros/.agents/skills/workspace-conventions/SKILL.md +4 -1
  171. package/corpus/templates/macros/CHANGELOG.md +49 -2
  172. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +0 -1
  173. package/corpus/templates/mail/.agents/skills/secrets/SKILL.md +5 -1
  174. package/corpus/templates/mail/.agents/skills/workspace-conventions/SKILL.md +4 -1
  175. package/corpus/templates/mail/CHANGELOG.md +201 -2
  176. package/corpus/templates/mail/app/components/email/EmailList.tsx +0 -1
  177. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +2 -2
  178. package/corpus/templates/mail/shared/markdown.ts +3 -0
  179. package/corpus/templates/plan/.agents/skills/secrets/SKILL.md +5 -1
  180. package/corpus/templates/plan/.agents/skills/workspace-conventions/SKILL.md +4 -1
  181. package/corpus/templates/plan/CHANGELOG.md +277 -2
  182. package/corpus/templates/slides/.agents/skills/secrets/SKILL.md +5 -1
  183. package/corpus/templates/slides/.agents/skills/workspace-conventions/SKILL.md +4 -1
  184. package/corpus/templates/slides/CHANGELOG.md +437 -2
  185. package/corpus/templates/slides/actions/add-slide.ts +0 -1
  186. package/corpus/templates/slides/actions/list-decks.ts +1 -1
  187. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +1 -4
  188. package/corpus/templates/slides/app/components/editor/SlideContextToolbar.tsx +0 -1
  189. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +1 -1
  190. package/corpus/templates/slides/app/pages/DeckEditor.tsx +1 -6
  191. package/corpus/templates/tasks/.agents/skills/secrets/SKILL.md +5 -1
  192. package/corpus/templates/tasks/.agents/skills/workspace-conventions/SKILL.md +4 -1
  193. package/corpus/templates/tasks/CHANGELOG.md +32 -2
  194. package/corpus/templates/tasks/app/components/layout/Layout.tsx +0 -1
  195. package/corpus/templates/tasks/app/hooks/use-visible-task-fields.ts +1 -4
  196. package/corpus/templates/tasks/server/custom-fields/store.ts +1 -6
  197. package/corpus/templates/tasks/shared/list-screen-snapshot.ts +2 -2
  198. package/dist/agent/engine/registry.js +27 -14
  199. package/dist/agent/index.d.ts +1 -1
  200. package/dist/agent/production-agent.d.ts +19 -6
  201. package/dist/agent/production-agent.js +57 -16
  202. package/dist/agent/types.d.ts +3 -0
  203. package/dist/changelog/parse.d.ts +3 -3
  204. package/dist/changelog/parse.js +35 -16
  205. package/dist/client/EnvironmentBadge.d.ts +1 -0
  206. package/dist/client/EnvironmentBadge.js +7 -0
  207. package/dist/collab/awareness.d.ts +2 -2
  208. package/dist/collab/routes.d.ts +1 -1
  209. package/dist/collab/struct-routes.d.ts +1 -1
  210. package/dist/config.d.ts +11 -0
  211. package/dist/config.js +248 -0
  212. package/dist/deploy/build.js +12 -1
  213. package/dist/index.d.ts +1 -1
  214. package/dist/notifications/routes.d.ts +3 -3
  215. package/dist/observability/routes.d.ts +6 -6
  216. package/dist/resources/handlers.d.ts +2 -2
  217. package/dist/secrets/routes.d.ts +9 -9
  218. package/dist/server/agent-chat/plugin-options.d.ts +3 -2
  219. package/dist/server/agent-chat-plugin.js +5 -2
  220. package/dist/server/index.d.ts +1 -1
  221. package/dist/server/realtime-token.d.ts +1 -1
  222. package/dist/server/transcribe-voice.d.ts +1 -1
  223. package/dist/templates/chat/.agents/skills/secrets/SKILL.md +5 -1
  224. package/dist/templates/chat/.agents/skills/workspace-conventions/SKILL.md +4 -1
  225. package/dist/templates/chat/CHANGELOG.md +89 -2
  226. package/dist/templates/chat/actions/navigate.ts +2 -2
  227. package/dist/templates/default/.agents/skills/secrets/SKILL.md +5 -1
  228. package/dist/templates/default/.agents/skills/workspace-conventions/SKILL.md +4 -1
  229. package/dist/templates/headless/.agents/skills/secrets/SKILL.md +5 -1
  230. package/dist/templates/workspace-core/.agents/skills/secrets/SKILL.md +5 -1
  231. package/dist/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +4 -1
  232. package/dist/vite/agent-native-config-loader.d.ts +1 -0
  233. package/dist/vite/agent-native-config-loader.js +3 -3
  234. package/dist/vite/agents-bundle-plugin.d.ts +1 -1
  235. package/dist/vite/agents-bundle-plugin.js +13 -1
  236. package/dist/vite/client.js +14 -14
  237. package/docs/content/agent-native-config.mdx +62 -11
  238. package/docs/content/agent-surfaces.mdx +6 -0
  239. package/docs/content/environment-variables.mdx +5 -2
  240. package/package.json +3 -3
  241. package/src/templates/chat/.agents/skills/secrets/SKILL.md +5 -1
  242. package/src/templates/chat/.agents/skills/workspace-conventions/SKILL.md +4 -1
  243. package/src/templates/chat/CHANGELOG.md +89 -2
  244. package/src/templates/chat/actions/navigate.ts +2 -2
  245. package/src/templates/default/.agents/skills/secrets/SKILL.md +5 -1
  246. package/src/templates/default/.agents/skills/workspace-conventions/SKILL.md +4 -1
  247. package/src/templates/headless/.agents/skills/secrets/SKILL.md +5 -1
  248. package/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +5 -1
  249. package/src/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +4 -1
@@ -3,8 +3,6 @@
3
3
  All notable user-facing changes to Assets are documented here. Open it any
4
4
  time from the command menu (Cmd+K → "What's new") or from Settings.
5
5
 
6
- Older updates live in [the changelog folder](./changelog/) and are included in the in-app "What's new" view.
7
-
8
6
  ## 2026-08-11
9
7
 
10
8
  ### Improved
@@ -42,3 +40,207 @@ Older updates live in [the changelog folder](./changelog/) and are included in t
42
40
  ### Improved
43
41
 
44
42
  - The Agent Native logo stays visible when the sidebar is collapsed and toggles the sidebar when clicked.
43
+
44
+ ## 2026-07-29
45
+
46
+ ### Improved
47
+
48
+ - Chat history now closes smoothly and stays ready when you return to Ask.
49
+ - Chat history stays visible when you return to the workspace.
50
+ - Sidebar footers now keep Feedback, Search, and Collapse together without a separate language shortcut.
51
+
52
+ ## 2026-07-25
53
+
54
+ ### Improved
55
+
56
+ - App branding now uses the product name without the Agent-Native prefix.
57
+ - Settings navigation now keeps Manage agent as a dedicated linked destination at the bottom.
58
+
59
+ ## 2026-07-24
60
+
61
+ ### Improved
62
+
63
+ - Secondary controls and dashboard surfaces now use quieter borderless styling.
64
+ - Sidebar utility controls now follow a consistent footer order.
65
+
66
+ ## 2026-07-23
67
+
68
+ ### Improved
69
+
70
+ - Create and chat surfaces are better centered, with quieter chat history and a left-aligned New chat action.
71
+ - Drafts preview panel now fills the full width with a large preview area; save, add to references, and dismiss actions moved to the candidates header for all brand kits
72
+ - New chat is aligned consistently with the rest of the Assets sidebar.
73
+
74
+ ### Fixed
75
+
76
+ - Assets image generation now recovers after a completed tool run.
77
+
78
+ ## 2026-07-22
79
+
80
+ ### Improved
81
+
82
+ - Manage agent navigation now uses the connected-nodes icon.
83
+ - Recent chats now expand from a compact five-item list with New chat anchored at the bottom.
84
+
85
+ ### Fixed
86
+
87
+ - Full-page chat keeps the active conversation when moving to and from the sidebar.
88
+
89
+ ## 2026-07-21
90
+
91
+ ### Improved
92
+
93
+ - Unified asset preview: clicking an asset anywhere (create drafts, library, brand kits, generated candidates) now opens one side-panel preview with the image, a details panel, and next/previous navigation instead of a separate page
94
+
95
+ ## 2026-07-17
96
+
97
+ ### Added
98
+
99
+ - You can add exact, approved artifact versions to governed Creative Contexts for safe reuse.
100
+
101
+ ### Improved
102
+
103
+ - Library now flags published assets with newer versions and lets you submit the update in place.
104
+
105
+ ### Fixed
106
+
107
+ - The agent chat sidebar stays closed until you open it or start a chat handoff.
108
+
109
+ ## 2026-07-16
110
+
111
+ ### Added
112
+
113
+ - The Agent workspace now includes a creative-context Library while the existing Assets media Library stays unchanged.
114
+
115
+ ## 2026-07-15
116
+
117
+ ### Fixed
118
+
119
+ - Fixed top-level image picker selections returning to the composer
120
+
121
+ ## 2026-07-13
122
+
123
+ ### Added
124
+
125
+ - A full Agent page now brings context, files, connections, jobs, and external access together
126
+
127
+ ### Improved
128
+
129
+ - Merged the Candidates panel into the Library as a Drafts tab that opens by default
130
+
131
+ ### Fixed
132
+
133
+ - Assets keeps the right chat sidebar closed when the full-page chat is empty.
134
+ - Internal library links now support opening in a new tab.
135
+
136
+ ## 2026-07-11
137
+
138
+ ### Fixed
139
+
140
+ - Library and recent-draft loading failures now show a clear retry action instead of looking empty.
141
+
142
+ ## 2026-07-09
143
+
144
+ ### Added
145
+
146
+ - Import reference images into a brand kit directly from a URL - the agent can now ingest blog or web imagery as style, logo, or subject references.
147
+ - Presets now have a reference board: pin annotated photos (like your usual host) and mark per-event slots to fill when generating.
148
+
149
+ ## 2026-07-08
150
+
151
+ ### Improved
152
+
153
+ - Settings are cleaner and searchable, with a consistent navigation that jumps straight to any setting.
154
+
155
+ ### Fixed
156
+
157
+ - Recent drafts keep comfortable side padding on the Create page.
158
+
159
+ ## 2026-07-07
160
+
161
+ ### Fixed
162
+
163
+ - Preset skeleton controls fit correctly on narrower edit pages.
164
+
165
+ ## 2026-07-06
166
+
167
+ ### Fixed
168
+
169
+ - Mobile layouts no longer stack a desktop header under the navigation bar.
170
+
171
+ ## 2026-07-01
172
+
173
+ ### Added
174
+
175
+ - Generation presets can now composite your brand's canonical logo onto every image made with them
176
+
177
+ ### Improved
178
+
179
+ - Tagging a preset now briefs the agent on that preset's aesthetics and philosophy before it generates, for more on-brand results
180
+
181
+ ## 2026-06-30
182
+
183
+ ### Improved
184
+
185
+ - The Assets picker now supports a vertical embedded layout for sidebar workflows.
186
+
187
+ ### Fixed
188
+
189
+ - Image generation no longer looks stuck while the provider is still creating and saving the asset.
190
+ - Tagging a @preset now reliably uses its aspect ratio and other saved settings instead of a guessed one
191
+
192
+ ## 2026-06-29
193
+
194
+ ### Improved
195
+
196
+ - Image generation can now render requested text and respect brand fonts
197
+
198
+ ### Fixed
199
+
200
+ - Asset library and detail layouts now adapt cleanly when the agent sidebar narrows the app.
201
+ - Image generation requests have a longer hosted agent window, reducing timeouts for slow models and multi-image batches.
202
+
203
+ ## 2026-06-28
204
+
205
+ ### Improved
206
+
207
+ - Left sidebar collapse motion and footer controls now feel smoother and use less divider chrome.
208
+
209
+ ## 2026-06-27
210
+
211
+ ### Improved
212
+
213
+ - Improved mobile navigation chrome and sidebar drawer motion.
214
+
215
+ ### Fixed
216
+
217
+ - Traditional Chinese copy now uses Taiwan terminology and clearer technical wording.
218
+
219
+ ## 2026-06-25
220
+
221
+ ### Fixed
222
+
223
+ - Create no longer shows agent settings in the main asset chat area after reconnecting AI.
224
+
225
+ ## 2026-06-24
226
+
227
+ ### Added
228
+
229
+ - Added a language picker and localized app chrome for supported languages.
230
+
231
+ ### Improved
232
+
233
+ - Settings now link directly to Agent settings for model, API key, automation, and voice preferences.
234
+
235
+ ## 2026-06-23
236
+
237
+ ### Added
238
+
239
+ - Pick your image-generation model right from the chat model menu — it's shown alongside the chat model so it's clear which is which.
240
+
241
+ ### Fixed
242
+
243
+ - Chat dates in the sidebar no longer wrap onto two lines.
244
+ - Clicking image, video, or refine on the start screen now drops a starter prompt into the composer instead of doing nothing.
245
+
246
+ For the full list of updates, see the [changelog folder](./changelog/).
@@ -1,5 +1,5 @@
1
1
  import { defineAction } from "@agent-native/core";
2
- import { writeAppState } from "@agent-native/core/application-state";
2
+ import { writeAppStateForCurrentTab } from "@agent-native/core/application-state";
3
3
  import { z } from "zod";
4
4
 
5
5
  export default defineAction({
@@ -43,7 +43,7 @@ export default defineAction({
43
43
  if (!args.view && !args.path) {
44
44
  throw new Error("view or path is required.");
45
45
  }
46
- await writeAppState("navigate", args);
46
+ await writeAppStateForCurrentTab("navigate", args);
47
47
  return { navigating: true, ...args };
48
48
  },
49
49
  });
@@ -1,10 +1,5 @@
1
1
  import { defineAction } from "@agent-native/core";
2
2
  import type { ActionRunContext } from "@agent-native/core/action";
3
- import {
4
- deleteAppState,
5
- readAppState,
6
- writeAppState,
7
- } from "@agent-native/core/application-state";
8
3
  import { z } from "zod";
9
4
 
10
5
  import { markAssetSaved } from "../server/handlers/assets.js";
@@ -34,7 +34,6 @@ import {
34
34
  IconSettings,
35
35
  IconTrash,
36
36
  IconUpload,
37
- IconVideo,
38
37
  IconX,
39
38
  } from "@tabler/icons-react";
40
39
  import {
@@ -346,7 +345,7 @@ export function BrandKitDetailRoute({
346
345
  const urlTab = libraryTabFromValue(searchParams.get("tab"));
347
346
  const libraryId = explicitLibraryId ?? id!;
348
347
  const { data } = useActionQuery("get-library", { id: libraryId }) as any;
349
- const updateLibrary = useActionMutation("update-library");
348
+
350
349
  const archiveLibrary = useActionMutation("archive-library");
351
350
  const duplicateLibrary = useActionMutation("duplicate-library");
352
351
  const updateAsset = useActionMutation("update-asset");
@@ -3483,265 +3482,6 @@ function AssetActionsMenu({
3483
3482
  );
3484
3483
  }
3485
3484
 
3486
- function PendingUploadLaneTile({ upload }: { upload: PendingUpload }) {
3487
- const t = useT();
3488
- const isChecking = upload.status === "checking";
3489
- return (
3490
- <div className="w-36 shrink-0 overflow-hidden rounded-md border border-dashed border-border bg-background sm:w-39">
3491
- <div className="flex aspect-4/3 items-center justify-center bg-muted/30">
3492
- <div className="flex flex-col items-center gap-2 text-muted-foreground">
3493
- <Spinner className="h-5 w-5" />
3494
- <span className="text-xs font-medium">
3495
- {isChecking ? t("library.checking") : t("library.uploading")}
3496
- </span>
3497
- </div>
3498
- </div>
3499
- <div className="p-2.5">
3500
- <div className="flex items-center gap-2 truncate text-xs font-medium">
3501
- {upload.mediaType === "video" ? (
3502
- <IconVideo className="h-3.5 w-3.5 shrink-0 text-muted-foreground" />
3503
- ) : (
3504
- <IconPhoto className="h-3.5 w-3.5 shrink-0 text-muted-foreground" />
3505
- )}
3506
- <span className="truncate">{upload.name}</span>
3507
- </div>
3508
- </div>
3509
- </div>
3510
- );
3511
- }
3512
-
3513
- function AssetLaneTile({
3514
- asset,
3515
- folders,
3516
- selected,
3517
- deleting,
3518
- saving,
3519
- promoting,
3520
- onToggle,
3521
- onDelete,
3522
- updateAsset,
3523
- onSave,
3524
- onMoveToReferences,
3525
- }: {
3526
- asset: any;
3527
- folders: any[];
3528
- selected: boolean;
3529
- deleting?: boolean;
3530
- saving?: boolean;
3531
- promoting?: boolean;
3532
- onToggle: (checked: boolean) => void;
3533
- onDelete: () => void;
3534
- updateAsset: any;
3535
- onSave?: () => void;
3536
- onMoveToReferences?: () => void;
3537
- }) {
3538
- const t = useT();
3539
- const [contextOpen, setContextOpen] = useState(false);
3540
- const displayTitle = assetDisplayTitle(asset);
3541
- const sourceText = assetLineageSourceText(asset);
3542
- const canMoveToReferences = Boolean(onMoveToReferences);
3543
- const hasPrimaryActions = Boolean(onSave || canMoveToReferences);
3544
- const categoryLabel = assetCategoryLabel(asset);
3545
- const busy = deleting || saving || promoting;
3546
-
3547
- return (
3548
- <div
3549
- className={[
3550
- "group relative w-36 shrink-0 overflow-hidden rounded-md border bg-background transition sm:w-39",
3551
- selected
3552
- ? "border-primary ring-2 ring-primary/25"
3553
- : "border-border/80 hover:border-foreground/20",
3554
- deleting ? "opacity-60" : "",
3555
- ].join(" ")}
3556
- aria-busy={busy}
3557
- >
3558
- <div className="absolute left-2 top-2 z-10">
3559
- <Checkbox
3560
- checked={selected}
3561
- onCheckedChange={(checked) => onToggle(checked === true)}
3562
- aria-label={t("library.selectAsset", { title: displayTitle })}
3563
- className={[
3564
- "border-2 border-foreground/40 bg-background/90 shadow-sm opacity-100 transition sm:opacity-0 sm:group-hover:opacity-100 sm:focus-visible:opacity-100",
3565
- selected ? "sm:opacity-100" : "",
3566
- ].join(" ")}
3567
- />
3568
- </div>
3569
- <div className="absolute right-2 top-2 z-10">
3570
- <DropdownMenu>
3571
- <DropdownMenuTrigger asChild>
3572
- <Button
3573
- type="button"
3574
- variant="secondary"
3575
- size="icon"
3576
- className="h-8 w-8 shadow-sm opacity-100 sm:opacity-0 sm:group-hover:opacity-100 sm:focus-visible:opacity-100 data-[state=open]:opacity-100"
3577
- aria-label={t("library.assetActions")}
3578
- disabled={busy}
3579
- >
3580
- <IconDotsVertical className="h-4 w-4" />
3581
- </Button>
3582
- </DropdownMenuTrigger>
3583
- <DropdownMenuContent align="end">
3584
- <DropdownMenuItem asChild>
3585
- <Link to={`/asset/${asset.id}`}>
3586
- <IconArrowUpRight className="mr-2 h-4 w-4 shrink-0" />
3587
- {t("library.viewDetails")}
3588
- </Link>
3589
- </DropdownMenuItem>
3590
- <DropdownMenuItem
3591
- onSelect={(event) => {
3592
- event.preventDefault();
3593
- setContextOpen(true);
3594
- }}
3595
- >
3596
- <IconLink className="mr-2 h-4 w-4 shrink-0" />
3597
- Add to context
3598
- {/* i18n-ignore assets template UI is raw-English pending template i18n pass */}
3599
- </DropdownMenuItem>
3600
- {canMoveToReferences ? (
3601
- <DropdownMenuItem
3602
- onSelect={(event) => {
3603
- event.preventDefault();
3604
- onMoveToReferences?.();
3605
- }}
3606
- >
3607
- <IconPhotoPlus className="mr-2 h-4 w-4 shrink-0" />
3608
- {t("library.addToReferences")}
3609
- </DropdownMenuItem>
3610
- ) : null}
3611
- <DropdownMenuSub>
3612
- <DropdownMenuSubTrigger>
3613
- <IconFolder className="mr-2 h-4 w-4 shrink-0" />
3614
- {t("library.moveTo")}
3615
- </DropdownMenuSubTrigger>
3616
- <DropdownMenuSubContent>
3617
- <DropdownMenuItem
3618
- onSelect={() =>
3619
- updateAsset.mutate({
3620
- id: asset.id,
3621
- folderId: null,
3622
- })
3623
- }
3624
- >
3625
- {t("library.unfiled")}
3626
- </DropdownMenuItem>
3627
- {folders.map((folder) => (
3628
- <DropdownMenuItem
3629
- key={folder.id}
3630
- onSelect={() =>
3631
- updateAsset.mutate({
3632
- id: asset.id,
3633
- folderId: folder.id,
3634
- })
3635
- }
3636
- >
3637
- {folder.title}
3638
- </DropdownMenuItem>
3639
- ))}
3640
- </DropdownMenuSubContent>
3641
- </DropdownMenuSub>
3642
- <DropdownMenuSeparator />
3643
- <DropdownMenuItem
3644
- className="text-destructive focus:bg-destructive/10 focus:text-destructive"
3645
- onSelect={onDelete}
3646
- >
3647
- <IconTrash className="mr-2 h-4 w-4 shrink-0" />
3648
- {t("assetDetail.delete")}
3649
- </DropdownMenuItem>
3650
- </DropdownMenuContent>
3651
- </DropdownMenu>
3652
- </div>
3653
- <Link to={`/asset/${asset.id}`} className="block outline-none">
3654
- <div className="relative aspect-4/3 bg-muted">
3655
- <AssetPreview asset={asset} />
3656
- <div className="pointer-events-none absolute inset-x-0 bottom-0 bg-linear-to-t from-background via-background/90 to-transparent px-2 pb-2 pt-8">
3657
- <div className="flex items-center gap-1.5 truncate text-xs font-medium">
3658
- {asset.mediaType === "video" ? (
3659
- <IconVideo className="h-3.5 w-3.5 shrink-0 text-muted-foreground" />
3660
- ) : (
3661
- <IconPhoto className="h-3.5 w-3.5 shrink-0 text-muted-foreground" />
3662
- )}
3663
- <span className="truncate">{displayTitle}</span>
3664
- </div>
3665
- <div className="mt-1 flex min-w-0 items-center gap-1 overflow-hidden text-[10px] font-medium text-muted-foreground">
3666
- {sourceText ? (
3667
- <span className="truncate">{sourceText}</span>
3668
- ) : (
3669
- <>
3670
- <span className="truncate">{asset.status}</span>
3671
- {categoryLabel ? (
3672
- <>
3673
- <span className="shrink-0 text-muted-foreground/60">
3674
- /
3675
- </span>
3676
- <span className="truncate">{categoryLabel}</span>
3677
- </>
3678
- ) : null}
3679
- </>
3680
- )}
3681
- </div>
3682
- </div>
3683
- </div>
3684
- </Link>
3685
- {hasPrimaryActions ? (
3686
- <div className="space-y-2 border-t border-border/70 p-2">
3687
- <div
3688
- className={
3689
- onSave && canMoveToReferences
3690
- ? "grid grid-cols-1 gap-2"
3691
- : "grid grid-cols-2 gap-2"
3692
- }
3693
- >
3694
- {onSave ? (
3695
- <Button
3696
- size="sm"
3697
- className="h-8 px-2 text-xs"
3698
- onClick={onSave}
3699
- disabled={busy}
3700
- >
3701
- {saving ? (
3702
- <Spinner className="h-3.5 w-3.5" />
3703
- ) : (
3704
- t("library.save")
3705
- )}
3706
- </Button>
3707
- ) : null}
3708
- {canMoveToReferences ? (
3709
- <Button
3710
- variant="outline"
3711
- size="sm"
3712
- className={
3713
- onSave ? "h-8 px-2 text-xs" : "col-span-2 h-8 px-2 text-xs"
3714
- }
3715
- onClick={onMoveToReferences}
3716
- disabled={busy}
3717
- title={t("library.addToReferences")}
3718
- >
3719
- {promoting ? (
3720
- <Spinner className="h-3.5 w-3.5" />
3721
- ) : (
3722
- t("library.addToReferences")
3723
- )}
3724
- </Button>
3725
- ) : null}
3726
- </div>
3727
- </div>
3728
- ) : null}
3729
- <CreativeContextShareSheet
3730
- open={contextOpen}
3731
- onOpenChange={setContextOpen}
3732
- resource={{
3733
- appId: "assets",
3734
- resourceType: "asset",
3735
- resourceId: asset.id,
3736
- title: displayTitle,
3737
- updatedAt: asset.updatedAt,
3738
- preview: { kind: "document", label: "Asset" },
3739
- }}
3740
- />
3741
- </div>
3742
- );
3743
- }
3744
-
3745
3485
  export function LiveCandidatesStage({
3746
3486
  slots,
3747
3487
  draftAssets,
@@ -3784,7 +3524,7 @@ export function LiveCandidatesStage({
3784
3524
  asset?: any;
3785
3525
  } | null>(null);
3786
3526
  const dismissing = dismissSlot.isPending || deleteAsset.isPending;
3787
- const totalCount = slots.length + draftAssets.length;
3527
+
3788
3528
  const [activeItemId, setActiveItemId] = useState<string | null>(null);
3789
3529
 
3790
3530
  async function handleDismissCandidate() {
@@ -1155,7 +1155,7 @@ function AllAssetsBrowser({
1155
1155
  foldersByLibraryId?: Record<string, any[]>;
1156
1156
  }) {
1157
1157
  const t = useT();
1158
- const navigate = useNavigate();
1158
+
1159
1159
  const queryClient = useQueryClient();
1160
1160
  const [searchParams, setSearchParams] = useSearchParams();
1161
1161
  const searchParamsKey = searchParams.toString();
@@ -582,9 +582,6 @@ function CredentialForm({
582
582
  });
583
583
 
584
584
  if (!response.ok) {
585
- const data = (await response.json().catch(() => ({}))) as {
586
- error?: string;
587
- };
588
585
  throw new Error(`${t("settings.saveFailed")}: ${response.status}`);
589
586
  }
590
587
 
@@ -38,7 +38,11 @@ connection exists:
38
38
  register a `kind: "oauth"` entry so the shared UI renders Connect and the
39
39
  runtime owns status, refresh, and reauthorization.
40
40
  - **Deploy- or app-level configuration** - use deployment/runtime
41
- configuration, not a per-user secret row.
41
+ configuration, not a per-user secret row. For a non-secret public setting
42
+ already represented by `AgentNativeConfig`, put the default in
43
+ `agent-native.config.ts` and use its `AGENT_NATIVE_CONFIG_<PATH>` alias only
44
+ for a deployment override. Never put a credential or provider key in that
45
+ public namespace.
42
46
  - **Account, customer, manager, or other non-secret identifier** - store it as
43
47
  scoped connection metadata or app data, not as a masked secret field.
44
48
 
@@ -55,7 +55,10 @@ Preview before `--apply`, commit `agent-native.ejections.json`, and never edit
55
55
  ZIPs, screenshots, thumbnails, session replay chunks) in configured file/blob
56
56
  storage and persist only URLs, ids, or handles.
57
57
  - Store shared runtime configuration in the workspace root `.env`; use
58
- `apps/<app>/.env` only for app-specific overrides. Never hardcode API keys,
58
+ `apps/<app>/.env` only for app-specific overrides. For public app behavior,
59
+ prefer the default in `agent-native.config.ts` and use the deterministic
60
+ `AGENT_NATIVE_CONFIG_<UPPER_SNAKE_PATH>` alias only when a non-secret value
61
+ needs a deployment override. Never hardcode API keys,
59
62
  tokens, webhook URLs, signing secrets, private Builder/internal data, customer
60
63
  data, or credential-looking literals in source, docs, prompts, fixtures,
61
64
  application state, action responses, or generated app content. Use