@agent-native/core 0.119.1 → 0.119.3

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 (233) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +21 -0
  3. package/corpus/core/package.json +1 -1
  4. package/corpus/core/src/a2a/client.ts +4 -0
  5. package/corpus/core/src/agent/production-agent.ts +1 -0
  6. package/corpus/core/src/cli/create.ts +44 -5
  7. package/corpus/core/src/client/AssistantChat.tsx +11 -50
  8. package/corpus/core/src/client/ErrorBoundary.tsx +25 -19
  9. package/corpus/core/src/client/agent-page/AgentTabFrame.tsx +1 -1
  10. package/corpus/core/src/client/agent-page/AgentTabsPage.tsx +23 -0
  11. package/corpus/core/src/client/components/ui/message-scroller.tsx +1 -9
  12. package/corpus/core/src/client/resources/ResourceTree.tsx +3 -3
  13. package/corpus/core/src/client/resources/ResourcesPanel.tsx +64 -60
  14. package/corpus/core/src/client/settings/AccountSettingsCard.tsx +228 -0
  15. package/corpus/core/src/client/settings/SecretsSection.tsx +7 -5
  16. package/corpus/core/src/client/settings/SettingsPanel.tsx +67 -244
  17. package/corpus/core/src/client/settings/SettingsTabsPage.tsx +88 -21
  18. package/corpus/core/src/client/settings/agent-settings-search.ts +0 -2
  19. package/corpus/core/src/client/settings/index.ts +7 -0
  20. package/corpus/core/src/client/vite-dev-recovery-script.ts +18 -1
  21. package/corpus/core/src/db/client.ts +65 -15
  22. package/corpus/core/src/db/index.ts +2 -0
  23. package/corpus/core/src/localization/default-messages.ts +1 -0
  24. package/corpus/core/src/server/email.ts +33 -1
  25. package/corpus/core/src/styles/agent-native.css +23 -0
  26. package/corpus/core/src/templates/default/.agents/skills/frontend-design/SKILL.md +28 -0
  27. package/corpus/core/src/templates/default/app/routes/settings.tsx +2 -0
  28. package/corpus/core/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +28 -0
  29. package/corpus/core/src/vite/client.ts +76 -8
  30. package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +28 -0
  31. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +3 -1
  32. package/corpus/templates/analytics/app/components/layout/Layout.tsx +9 -13
  33. package/corpus/templates/analytics/app/components/layout/layout-route-policy.ts +2 -2
  34. package/corpus/templates/analytics/app/global.css +0 -5
  35. package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +0 -13
  36. package/corpus/templates/analytics/app/lib/sql-query.ts +15 -2
  37. package/corpus/templates/analytics/app/pages/Settings.tsx +2 -24
  38. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +6 -0
  39. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +11 -1
  40. package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +8 -1
  41. package/corpus/templates/analytics/app/pages/settings/settings-search.ts +1 -1
  42. package/corpus/templates/analytics/changelog/2026-07-22-fixed-dashboards-and-analyses-missing-a-copyable-share-link.md +6 -0
  43. package/corpus/templates/analytics/changelog/2026-07-23-ask-analytics-is-better-centered-with-a-quieter-chat-rail-an.md +6 -0
  44. package/corpus/templates/analytics/changelog/2026-07-23-daily-dashboard-emails-load-read-heavy-panels-reliably.md +6 -0
  45. package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +2 -2
  46. package/corpus/templates/analytics/server/jobs/dashboard-report.ts +39 -5
  47. package/corpus/templates/analytics/server/lib/dashboard-report.ts +186 -62
  48. package/corpus/templates/analytics/server/lib/first-party-analytics.ts +3 -0
  49. package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +18 -2
  50. package/corpus/templates/analytics/shared/dashboard-report-timeouts.ts +3 -0
  51. package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +28 -0
  52. package/corpus/templates/assets/app/components/layout/Layout.tsx +3 -4
  53. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +1 -1
  54. package/corpus/templates/assets/app/global.css +0 -5
  55. package/corpus/templates/assets/app/hooks/use-navigation-state.ts +0 -22
  56. package/corpus/templates/assets/app/routes/settings.tsx +2 -0
  57. package/corpus/templates/assets/changelog/2026-07-23-create-and-chat-surfaces-are-better-centered-with-quieter-ch.md +6 -0
  58. package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +28 -0
  59. package/corpus/templates/brain/app/components/layout/Layout.tsx +1 -1
  60. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +1 -1
  61. package/corpus/templates/brain/app/global.css +0 -9
  62. package/corpus/templates/brain/app/hooks/use-navigation-state.ts +0 -12
  63. package/corpus/templates/brain/app/i18n-data.ts +1 -0
  64. package/corpus/templates/brain/app/lib/settings-navigation.ts +1 -1
  65. package/corpus/templates/brain/app/routes/settings.tsx +21 -22
  66. package/corpus/templates/brain/changelog/2026-07-23-ask-brain-is-better-centered-with-quieter-chat-history-and-a.md +6 -0
  67. package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +28 -0
  68. package/corpus/templates/calendar/app/pages/Settings.tsx +2 -0
  69. package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +28 -0
  70. package/corpus/templates/chat/app/components/layout/Layout.tsx +1 -1
  71. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +1 -1
  72. package/corpus/templates/chat/app/hooks/use-navigation-state.ts +0 -15
  73. package/corpus/templates/chat/app/routes/settings.tsx +2 -0
  74. package/corpus/templates/chat/changelog/2026-07-23-full-page-chat-is-better-centered-with-quieter-chat-history-.md +6 -0
  75. package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +28 -0
  76. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +2 -0
  77. package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +28 -0
  78. package/corpus/templates/content/app/routes/_app.settings.tsx +2 -0
  79. package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +28 -0
  80. package/corpus/templates/design/app/routes/settings.tsx +2 -0
  81. package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +28 -0
  82. package/corpus/templates/dispatch/app/routes/settings.tsx +2 -0
  83. package/corpus/templates/dispatch/changelog/2026-07-23-quieter-progressive-disclosure.md +6 -0
  84. package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +28 -0
  85. package/corpus/templates/forms/app/global.css +0 -5
  86. package/corpus/templates/forms/app/hooks/use-navigation-state.ts +0 -7
  87. package/corpus/templates/forms/app/root.tsx +1 -7
  88. package/corpus/templates/forms/app/routes/_app.settings.tsx +2 -0
  89. package/corpus/templates/forms/changelog/2026-07-23-ask-forms-is-better-centered-with-quieter-chat-history-and-a.md +6 -0
  90. package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +28 -0
  91. package/corpus/templates/macros/app/routes/settings.tsx +2 -0
  92. package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +28 -0
  93. package/corpus/templates/mail/app/pages/SettingsPage.tsx +3 -1
  94. package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +28 -0
  95. package/corpus/templates/plan/app/components/layout/Layout.tsx +2 -2
  96. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +1 -13
  97. package/corpus/templates/plan/app/hooks/use-navigation-state.ts +0 -4
  98. package/corpus/templates/plan/app/routes/settings.tsx +2 -0
  99. package/corpus/templates/plan/changelog/2026-07-23-ask-plan-is-now-a-clean-full-page-chat-surface-with-better-c.md +6 -0
  100. package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +28 -0
  101. package/corpus/templates/slides/app/routes/settings.tsx +2 -0
  102. package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +28 -0
  103. package/corpus/toolkit/CHANGELOG.md +6 -0
  104. package/corpus/toolkit/package.json +1 -1
  105. package/corpus/toolkit/src/chat-history.css +2 -2
  106. package/corpus/toolkit/src/composer/PromptComposer.tsx +0 -31
  107. package/corpus/toolkit/src/composer/RealtimeVoiceMode.tsx +7 -2
  108. package/corpus/toolkit/src/styles.css +183 -36
  109. package/dist/a2a/client.d.ts +2 -0
  110. package/dist/a2a/client.d.ts.map +1 -1
  111. package/dist/a2a/client.js +2 -0
  112. package/dist/a2a/client.js.map +1 -1
  113. package/dist/agent/production-agent.d.ts.map +1 -1
  114. package/dist/agent/production-agent.js +1 -0
  115. package/dist/agent/production-agent.js.map +1 -1
  116. package/dist/cli/create.d.ts +2 -1
  117. package/dist/cli/create.d.ts.map +1 -1
  118. package/dist/cli/create.js +43 -6
  119. package/dist/cli/create.js.map +1 -1
  120. package/dist/client/AssistantChat.d.ts.map +1 -1
  121. package/dist/client/AssistantChat.js +11 -42
  122. package/dist/client/AssistantChat.js.map +1 -1
  123. package/dist/client/ErrorBoundary.d.ts.map +1 -1
  124. package/dist/client/ErrorBoundary.js +3 -2
  125. package/dist/client/ErrorBoundary.js.map +1 -1
  126. package/dist/client/agent-page/AgentTabFrame.js +1 -1
  127. package/dist/client/agent-page/AgentTabFrame.js.map +1 -1
  128. package/dist/client/agent-page/AgentTabsPage.d.ts.map +1 -1
  129. package/dist/client/agent-page/AgentTabsPage.js +13 -1
  130. package/dist/client/agent-page/AgentTabsPage.js.map +1 -1
  131. package/dist/client/components/ui/message-scroller.d.ts.map +1 -1
  132. package/dist/client/components/ui/message-scroller.js +2 -2
  133. package/dist/client/components/ui/message-scroller.js.map +1 -1
  134. package/dist/client/resources/ResourceTree.js +2 -2
  135. package/dist/client/resources/ResourceTree.js.map +1 -1
  136. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  137. package/dist/client/resources/ResourcesPanel.js +11 -11
  138. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  139. package/dist/client/settings/AccountSettingsCard.d.ts +9 -0
  140. package/dist/client/settings/AccountSettingsCard.d.ts.map +1 -0
  141. package/dist/client/settings/AccountSettingsCard.js +78 -0
  142. package/dist/client/settings/AccountSettingsCard.js.map +1 -0
  143. package/dist/client/settings/SecretsSection.d.ts.map +1 -1
  144. package/dist/client/settings/SecretsSection.js +2 -2
  145. package/dist/client/settings/SecretsSection.js.map +1 -1
  146. package/dist/client/settings/SettingsPanel.d.ts +3 -0
  147. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  148. package/dist/client/settings/SettingsPanel.js +25 -77
  149. package/dist/client/settings/SettingsPanel.js.map +1 -1
  150. package/dist/client/settings/SettingsTabsPage.d.ts +5 -1
  151. package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
  152. package/dist/client/settings/SettingsTabsPage.js +35 -9
  153. package/dist/client/settings/SettingsTabsPage.js.map +1 -1
  154. package/dist/client/settings/agent-settings-search.d.ts.map +1 -1
  155. package/dist/client/settings/agent-settings-search.js +0 -2
  156. package/dist/client/settings/agent-settings-search.js.map +1 -1
  157. package/dist/client/settings/index.d.ts +2 -1
  158. package/dist/client/settings/index.d.ts.map +1 -1
  159. package/dist/client/settings/index.js +2 -1
  160. package/dist/client/settings/index.js.map +1 -1
  161. package/dist/client/vite-dev-recovery-script.d.ts.map +1 -1
  162. package/dist/client/vite-dev-recovery-script.js +18 -1
  163. package/dist/client/vite-dev-recovery-script.js.map +1 -1
  164. package/dist/collab/routes.d.ts +1 -1
  165. package/dist/db/client.d.ts +18 -8
  166. package/dist/db/client.d.ts.map +1 -1
  167. package/dist/db/client.js +34 -11
  168. package/dist/db/client.js.map +1 -1
  169. package/dist/db/index.d.ts +1 -1
  170. package/dist/db/index.d.ts.map +1 -1
  171. package/dist/db/index.js.map +1 -1
  172. package/dist/localization/default-messages.d.ts +1 -0
  173. package/dist/localization/default-messages.d.ts.map +1 -1
  174. package/dist/localization/default-messages.js +1 -0
  175. package/dist/localization/default-messages.js.map +1 -1
  176. package/dist/notifications/routes.d.ts +1 -1
  177. package/dist/provider-api/actions/custom-provider-registration.d.ts +7 -7
  178. package/dist/provider-api/actions/provider-api.d.ts +7 -7
  179. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  180. package/dist/resources/handlers.d.ts +1 -1
  181. package/dist/secrets/routes.d.ts +9 -9
  182. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  183. package/dist/server/email.d.ts +1 -0
  184. package/dist/server/email.d.ts.map +1 -1
  185. package/dist/server/email.js +29 -1
  186. package/dist/server/email.js.map +1 -1
  187. package/dist/server/realtime-token.d.ts +1 -1
  188. package/dist/styles/agent-native.css +23 -0
  189. package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +28 -0
  190. package/dist/templates/chat/app/components/layout/Layout.tsx +1 -1
  191. package/dist/templates/chat/app/components/layout/Sidebar.tsx +1 -1
  192. package/dist/templates/chat/app/hooks/use-navigation-state.ts +0 -15
  193. package/dist/templates/chat/app/routes/settings.tsx +2 -0
  194. package/dist/templates/chat/changelog/2026-07-23-full-page-chat-is-better-centered-with-quieter-chat-history-.md +6 -0
  195. package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +28 -0
  196. package/dist/templates/default/app/routes/settings.tsx +2 -0
  197. package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +28 -0
  198. package/dist/vite/client.d.ts.map +1 -1
  199. package/dist/vite/client.js +68 -6
  200. package/dist/vite/client.js.map +1 -1
  201. package/package.json +2 -2
  202. package/src/a2a/client.ts +4 -0
  203. package/src/agent/production-agent.ts +1 -0
  204. package/src/cli/create.ts +44 -5
  205. package/src/client/AssistantChat.tsx +11 -50
  206. package/src/client/ErrorBoundary.tsx +25 -19
  207. package/src/client/agent-page/AgentTabFrame.tsx +1 -1
  208. package/src/client/agent-page/AgentTabsPage.tsx +23 -0
  209. package/src/client/components/ui/message-scroller.tsx +1 -9
  210. package/src/client/resources/ResourceTree.tsx +3 -3
  211. package/src/client/resources/ResourcesPanel.tsx +64 -60
  212. package/src/client/settings/AccountSettingsCard.tsx +228 -0
  213. package/src/client/settings/SecretsSection.tsx +7 -5
  214. package/src/client/settings/SettingsPanel.tsx +67 -244
  215. package/src/client/settings/SettingsTabsPage.tsx +88 -21
  216. package/src/client/settings/agent-settings-search.ts +0 -2
  217. package/src/client/settings/index.ts +7 -0
  218. package/src/client/vite-dev-recovery-script.ts +18 -1
  219. package/src/db/client.ts +65 -15
  220. package/src/db/index.ts +2 -0
  221. package/src/localization/default-messages.ts +1 -0
  222. package/src/server/email.ts +33 -1
  223. package/src/styles/agent-native.css +23 -0
  224. package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +28 -0
  225. package/src/templates/chat/app/components/layout/Layout.tsx +1 -1
  226. package/src/templates/chat/app/components/layout/Sidebar.tsx +1 -1
  227. package/src/templates/chat/app/hooks/use-navigation-state.ts +0 -15
  228. package/src/templates/chat/app/routes/settings.tsx +2 -0
  229. package/src/templates/chat/changelog/2026-07-23-full-page-chat-is-better-centered-with-quieter-chat-history-.md +6 -0
  230. package/src/templates/default/.agents/skills/frontend-design/SKILL.md +28 -0
  231. package/src/templates/default/app/routes/settings.tsx +2 -0
  232. package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +28 -0
  233. package/src/vite/client.ts +76 -8
@@ -35,6 +35,34 @@ Then implement working code that is cohesive, accessible, responsive, and polish
35
35
 
36
36
  Default to Apple/Linear-level restraint: make the primary workflow obvious, then remove everything that does not help that workflow right now. A polished UI often has fewer visible controls, fewer borders, fewer labels, and fewer explanatory surfaces than the first reasonable implementation.
37
37
 
38
+ ### Progressive Disclosure Is A Design Requirement
39
+
40
+ Treat an all-at-once interface as a defect to fix during design, not as a
41
+ styling preference. Before coding, inventory every piece of content and action
42
+ on the surface, then assign each one to the smallest useful visibility level:
43
+
44
+ 1. **Immediate** — the page title, current state, one primary action, and the
45
+ compact context needed to choose what to do next.
46
+ 2. **Expanded** — the details needed for the selected item or active workflow.
47
+ 3. **On demand** — advanced settings, diagnostics, credentials, metadata,
48
+ destructive actions, documentation, and rarely used tools.
49
+
50
+ Use single-select accordions or simple disclosure rows for sibling panels when
51
+ the user is choosing one item at a time. Inside an expanded panel, keep another
52
+ layer for independent concerns instead of dumping every form, explanation, and
53
+ secondary action into the first reveal. Prefer one flat panel with alignment,
54
+ dividers, and whitespace over nested cards; provider or product icons should
55
+ not receive decorative borders or containers unless the container communicates
56
+ state or interaction. A collapsed row should still show the item name, status,
57
+ and a concise summary so the user can scan the whole surface without opening
58
+ everything.
59
+
60
+ Before shipping, ask: “What can disappear until the user asks for it?” Then
61
+ verify collapsed, expanded, loading, empty, error, and narrow-width states.
62
+ If the first viewport contains multiple forms, repeated explanatory copy,
63
+ documentation links, and controls for unrelated tasks, the surface has not
64
+ passed this requirement yet.
65
+
38
66
  - **Start by subtracting**: Before adding a visible control, banner, toolbar row, card, or explanatory block, ask what can be removed, merged, renamed, or moved into an existing affordance.
39
67
  - **One primary action**: Each surface should have one dominant next action. Secondary actions belong in menus, popovers, command palettes, disclosure rows, or contextual hover/focus states unless they are used constantly.
40
68
  - **Progressively disclose rare work**: Advanced options, diagnostics, metadata, settings, import/export, destructive actions, and inspection tools should stay tucked away until requested. Prefer small icon triggers with tooltips, popovers, drawers, or detail panels over permanent chrome.
@@ -2,6 +2,7 @@ import { ChangelogSettingsCard } from "@agent-native/core/client/changelog";
2
2
  import { LanguagePicker, useT } from "@agent-native/core/client/i18n";
3
3
  import { TeamPage } from "@agent-native/core/client/org";
4
4
  import {
5
+ AccountSettingsCard,
5
6
  SettingsTabsPage,
6
7
  useAgentSettingsTabs,
7
8
  type SettingsSearchEntry,
@@ -44,6 +45,7 @@ export default function SettingsRoute() {
44
45
  return (
45
46
  <div className="flex h-full min-h-0 flex-col overflow-y-auto bg-background">
46
47
  <SettingsTabsPage
48
+ account={<AccountSettingsCard />}
47
49
  extraTabs={agentSettingsTabs}
48
50
  generalSearchEntries={generalSearchEntries}
49
51
  general={
@@ -35,6 +35,34 @@ Then implement working code that is cohesive, accessible, responsive, and polish
35
35
 
36
36
  Default to Apple/Linear-level restraint: make the primary workflow obvious, then remove everything that does not help that workflow right now. A polished UI often has fewer visible controls, fewer borders, fewer labels, and fewer explanatory surfaces than the first reasonable implementation.
37
37
 
38
+ ### Progressive Disclosure Is A Design Requirement
39
+
40
+ Treat an all-at-once interface as a defect to fix during design, not as a
41
+ styling preference. Before coding, inventory every piece of content and action
42
+ on the surface, then assign each one to the smallest useful visibility level:
43
+
44
+ 1. **Immediate** — the page title, current state, one primary action, and the
45
+ compact context needed to choose what to do next.
46
+ 2. **Expanded** — the details needed for the selected item or active workflow.
47
+ 3. **On demand** — advanced settings, diagnostics, credentials, metadata,
48
+ destructive actions, documentation, and rarely used tools.
49
+
50
+ Use single-select accordions or simple disclosure rows for sibling panels when
51
+ the user is choosing one item at a time. Inside an expanded panel, keep another
52
+ layer for independent concerns instead of dumping every form, explanation, and
53
+ secondary action into the first reveal. Prefer one flat panel with alignment,
54
+ dividers, and whitespace over nested cards; provider or product icons should
55
+ not receive decorative borders or containers unless the container communicates
56
+ state or interaction. A collapsed row should still show the item name, status,
57
+ and a concise summary so the user can scan the whole surface without opening
58
+ everything.
59
+
60
+ Before shipping, ask: “What can disappear until the user asks for it?” Then
61
+ verify collapsed, expanded, loading, empty, error, and narrow-width states.
62
+ If the first viewport contains multiple forms, repeated explanatory copy,
63
+ documentation links, and controls for unrelated tasks, the surface has not
64
+ passed this requirement yet.
65
+
38
66
  - **Start by subtracting**: Before adding a visible control, banner, toolbar row, card, or explanatory block, ask what can be removed, merged, renamed, or moved into an existing affordance.
39
67
  - **One primary action**: Each surface should have one dominant next action. Secondary actions belong in menus, popovers, command palettes, disclosure rows, or contextual hover/focus states unless they are used constantly.
40
68
  - **Progressively disclose rare work**: Advanced options, diagnostics, metadata, settings, import/export, destructive actions, and inspection tools should stay tucked away until requested. Prefer small icon triggers with tooltips, popovers, drawers, or detail panels over permanent chrome.
@@ -2,6 +2,7 @@ import { ChangelogSettingsCard } from "@agent-native/core/client/changelog";
2
2
  import { LanguagePicker, useT } from "@agent-native/core/client/i18n";
3
3
  import { TeamPage } from "@agent-native/core/client/org";
4
4
  import {
5
+ AccountSettingsCard,
5
6
  SettingsTabsPage,
6
7
  useAgentSettingsTabs,
7
8
  type SettingsSearchEntry,
@@ -50,6 +51,7 @@ export default function SettingsRoute() {
50
51
 
51
52
  return (
52
53
  <SettingsTabsPage
54
+ account={<AccountSettingsCard />}
53
55
  extraTabs={agentSettingsTabs}
54
56
  generalSearchEntries={generalSearchEntries}
55
57
  general={
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-07-23
4
+ ---
5
+
6
+ Dispatch keeps messaging setup and destination details behind focused expandable panels.
@@ -35,6 +35,34 @@ Then implement working code that is cohesive, accessible, responsive, and polish
35
35
 
36
36
  Default to Apple/Linear-level restraint: make the primary workflow obvious, then remove everything that does not help that workflow right now. A polished UI often has fewer visible controls, fewer borders, fewer labels, and fewer explanatory surfaces than the first reasonable implementation.
37
37
 
38
+ ### Progressive Disclosure Is A Design Requirement
39
+
40
+ Treat an all-at-once interface as a defect to fix during design, not as a
41
+ styling preference. Before coding, inventory every piece of content and action
42
+ on the surface, then assign each one to the smallest useful visibility level:
43
+
44
+ 1. **Immediate** — the page title, current state, one primary action, and the
45
+ compact context needed to choose what to do next.
46
+ 2. **Expanded** — the details needed for the selected item or active workflow.
47
+ 3. **On demand** — advanced settings, diagnostics, credentials, metadata,
48
+ destructive actions, documentation, and rarely used tools.
49
+
50
+ Use single-select accordions or simple disclosure rows for sibling panels when
51
+ the user is choosing one item at a time. Inside an expanded panel, keep another
52
+ layer for independent concerns instead of dumping every form, explanation, and
53
+ secondary action into the first reveal. Prefer one flat panel with alignment,
54
+ dividers, and whitespace over nested cards; provider or product icons should
55
+ not receive decorative borders or containers unless the container communicates
56
+ state or interaction. A collapsed row should still show the item name, status,
57
+ and a concise summary so the user can scan the whole surface without opening
58
+ everything.
59
+
60
+ Before shipping, ask: “What can disappear until the user asks for it?” Then
61
+ verify collapsed, expanded, loading, empty, error, and narrow-width states.
62
+ If the first viewport contains multiple forms, repeated explanatory copy,
63
+ documentation links, and controls for unrelated tasks, the surface has not
64
+ passed this requirement yet.
65
+
38
66
  - **Start by subtracting**: Before adding a visible control, banner, toolbar row, card, or explanatory block, ask what can be removed, merged, renamed, or moved into an existing affordance.
39
67
  - **One primary action**: Each surface should have one dominant next action. Secondary actions belong in menus, popovers, command palettes, disclosure rows, or contextual hover/focus states unless they are used constantly.
40
68
  - **Progressively disclose rare work**: Advanced options, diagnostics, metadata, settings, import/export, destructive actions, and inspection tools should stay tucked away until requested. Prefer small icon triggers with tooltips, popovers, drawers, or detail panels over permanent chrome.
@@ -179,11 +179,6 @@
179
179
  width: 100%;
180
180
  }
181
181
 
182
- .forms-ask-chat-panel [data-agent-empty-state="centered"] {
183
- justify-content: center;
184
- padding-bottom: clamp(2rem, 6vh, 4rem);
185
- }
186
-
187
182
  .forms-ask-chat-panel [data-agent-empty-state="centered"] .agent-chat-scroll {
188
183
  flex: 0 0 auto;
189
184
  min-height: 0;
@@ -1,7 +1,5 @@
1
- import { markAgentChatHomeHandoff } from "@agent-native/core/client/agent-chat";
2
1
  import { appBasePath } from "@agent-native/core/client/api-path";
3
2
  import { useAgentRouteState } from "@agent-native/core/client/navigation";
4
- import { useLocation } from "react-router";
5
3
 
6
4
  import {
7
5
  formsRoutePath,
@@ -74,8 +72,6 @@ function routerPath(path: string): string {
74
72
  }
75
73
 
76
74
  export function useNavigationState() {
77
- const location = useLocation();
78
-
79
75
  useAgentRouteState<NavigationState, NavigateCommand>({
80
76
  browserTabId: TAB_ID,
81
77
  requestSource: TAB_ID,
@@ -129,9 +125,6 @@ export function useNavigationState() {
129
125
  navigateOptions: { flushSync: true, replace: true },
130
126
  onNavigate: (_command, path) => {
131
127
  void prewarmFormsRoutePath(path);
132
- if (location.pathname === "/ask" && path !== "/ask") {
133
- markAgentChatHomeHandoff("forms");
134
- }
135
128
  },
136
129
  });
137
130
  }
@@ -1,7 +1,4 @@
1
- import {
2
- markAgentChatHomeHandoff,
3
- navigateWithAgentChatViewTransition,
4
- } from "@agent-native/core/client/agent-chat";
1
+ import { navigateWithAgentChatViewTransition } from "@agent-native/core/client/agent-chat";
5
2
  import { configureTracking } from "@agent-native/core/client/analytics";
6
3
  import { appPath } from "@agent-native/core/client/api-path";
7
4
  import {
@@ -202,9 +199,6 @@ function OpenLinkInterceptor() {
202
199
  if (!path) return;
203
200
 
204
201
  event.preventDefault();
205
- if (location.pathname === "/ask" && path !== "/ask") {
206
- markAgentChatHomeHandoff("forms");
207
- }
208
202
  navigateWithAgentChatViewTransition(navigate, path);
209
203
  }
210
204
 
@@ -2,6 +2,7 @@ import { ChangelogSettingsCard } from "@agent-native/core/client/changelog";
2
2
  import { LanguagePicker, useT } from "@agent-native/core/client/i18n";
3
3
  import { TeamPage } from "@agent-native/core/client/org";
4
4
  import {
5
+ AccountSettingsCard,
5
6
  SettingsTabsPage,
6
7
  useAgentSettingsTabs,
7
8
  type SettingsSearchEntry,
@@ -44,6 +45,7 @@ export default function SettingsRoute() {
44
45
 
45
46
  return (
46
47
  <SettingsTabsPage
48
+ account={<AccountSettingsCard />}
47
49
  teamLabel={t("navigation.team")}
48
50
  extraTabs={agentSettingsTabs}
49
51
  generalSearchEntries={generalSearchEntries}
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-07-23
4
+ ---
5
+
6
+ Ask Forms is better centered, with quieter chat history and a left-aligned New chat action.
@@ -35,6 +35,34 @@ Then implement working code that is cohesive, accessible, responsive, and polish
35
35
 
36
36
  Default to Apple/Linear-level restraint: make the primary workflow obvious, then remove everything that does not help that workflow right now. A polished UI often has fewer visible controls, fewer borders, fewer labels, and fewer explanatory surfaces than the first reasonable implementation.
37
37
 
38
+ ### Progressive Disclosure Is A Design Requirement
39
+
40
+ Treat an all-at-once interface as a defect to fix during design, not as a
41
+ styling preference. Before coding, inventory every piece of content and action
42
+ on the surface, then assign each one to the smallest useful visibility level:
43
+
44
+ 1. **Immediate** — the page title, current state, one primary action, and the
45
+ compact context needed to choose what to do next.
46
+ 2. **Expanded** — the details needed for the selected item or active workflow.
47
+ 3. **On demand** — advanced settings, diagnostics, credentials, metadata,
48
+ destructive actions, documentation, and rarely used tools.
49
+
50
+ Use single-select accordions or simple disclosure rows for sibling panels when
51
+ the user is choosing one item at a time. Inside an expanded panel, keep another
52
+ layer for independent concerns instead of dumping every form, explanation, and
53
+ secondary action into the first reveal. Prefer one flat panel with alignment,
54
+ dividers, and whitespace over nested cards; provider or product icons should
55
+ not receive decorative borders or containers unless the container communicates
56
+ state or interaction. A collapsed row should still show the item name, status,
57
+ and a concise summary so the user can scan the whole surface without opening
58
+ everything.
59
+
60
+ Before shipping, ask: “What can disappear until the user asks for it?” Then
61
+ verify collapsed, expanded, loading, empty, error, and narrow-width states.
62
+ If the first viewport contains multiple forms, repeated explanatory copy,
63
+ documentation links, and controls for unrelated tasks, the surface has not
64
+ passed this requirement yet.
65
+
38
66
  - **Start by subtracting**: Before adding a visible control, banner, toolbar row, card, or explanatory block, ask what can be removed, merged, renamed, or moved into an existing affordance.
39
67
  - **One primary action**: Each surface should have one dominant next action. Secondary actions belong in menus, popovers, command palettes, disclosure rows, or contextual hover/focus states unless they are used constantly.
40
68
  - **Progressively disclose rare work**: Advanced options, diagnostics, metadata, settings, import/export, destructive actions, and inspection tools should stay tucked away until requested. Prefer small icon triggers with tooltips, popovers, drawers, or detail panels over permanent chrome.
@@ -2,6 +2,7 @@ import { ChangelogSettingsCard } from "@agent-native/core/client/changelog";
2
2
  import { LanguagePicker, useT } from "@agent-native/core/client/i18n";
3
3
  import { TeamPage } from "@agent-native/core/client/org";
4
4
  import {
5
+ AccountSettingsCard,
5
6
  SettingsTabsPage,
6
7
  useAgentSettingsTabs,
7
8
  type SettingsSearchEntry,
@@ -44,6 +45,7 @@ export default function SettingsRoute() {
44
45
 
45
46
  return (
46
47
  <SettingsTabsPage
48
+ account={<AccountSettingsCard />}
47
49
  teamLabel={t("team.title")}
48
50
  extraTabs={agentSettingsTabs}
49
51
  generalSearchEntries={generalSearchEntries}
@@ -35,6 +35,34 @@ Then implement working code that is cohesive, accessible, responsive, and polish
35
35
 
36
36
  Default to Apple/Linear-level restraint: make the primary workflow obvious, then remove everything that does not help that workflow right now. A polished UI often has fewer visible controls, fewer borders, fewer labels, and fewer explanatory surfaces than the first reasonable implementation.
37
37
 
38
+ ### Progressive Disclosure Is A Design Requirement
39
+
40
+ Treat an all-at-once interface as a defect to fix during design, not as a
41
+ styling preference. Before coding, inventory every piece of content and action
42
+ on the surface, then assign each one to the smallest useful visibility level:
43
+
44
+ 1. **Immediate** — the page title, current state, one primary action, and the
45
+ compact context needed to choose what to do next.
46
+ 2. **Expanded** — the details needed for the selected item or active workflow.
47
+ 3. **On demand** — advanced settings, diagnostics, credentials, metadata,
48
+ destructive actions, documentation, and rarely used tools.
49
+
50
+ Use single-select accordions or simple disclosure rows for sibling panels when
51
+ the user is choosing one item at a time. Inside an expanded panel, keep another
52
+ layer for independent concerns instead of dumping every form, explanation, and
53
+ secondary action into the first reveal. Prefer one flat panel with alignment,
54
+ dividers, and whitespace over nested cards; provider or product icons should
55
+ not receive decorative borders or containers unless the container communicates
56
+ state or interaction. A collapsed row should still show the item name, status,
57
+ and a concise summary so the user can scan the whole surface without opening
58
+ everything.
59
+
60
+ Before shipping, ask: “What can disappear until the user asks for it?” Then
61
+ verify collapsed, expanded, loading, empty, error, and narrow-width states.
62
+ If the first viewport contains multiple forms, repeated explanatory copy,
63
+ documentation links, and controls for unrelated tasks, the surface has not
64
+ passed this requirement yet.
65
+
38
66
  - **Start by subtracting**: Before adding a visible control, banner, toolbar row, card, or explanatory block, ask what can be removed, merged, renamed, or moved into an existing affordance.
39
67
  - **One primary action**: Each surface should have one dominant next action. Secondary actions belong in menus, popovers, command palettes, disclosure rows, or contextual hover/focus states unless they are used constantly.
40
68
  - **Progressively disclose rare work**: Advanced options, diagnostics, metadata, settings, import/export, destructive actions, and inspection tools should stay tucked away until requested. Prefer small icon triggers with tooltips, popovers, drawers, or detail panels over permanent chrome.
@@ -9,6 +9,7 @@ import {
9
9
  import { LanguagePicker, useT } from "@agent-native/core/client/i18n";
10
10
  import { TeamPage } from "@agent-native/core/client/org";
11
11
  import {
12
+ AccountSettingsCard,
12
13
  SettingsTabsPage,
13
14
  useAgentSettingsTabs,
14
15
  type SettingsSearchEntry,
@@ -1549,7 +1550,7 @@ export function SettingsPage() {
1549
1550
  );
1550
1551
 
1551
1552
  const validSectionIds = useMemo(() => {
1552
- const ids = new Set<string>(["general", "team", "whats-new"]);
1553
+ const ids = new Set<string>(["general", "account", "team", "whats-new"]);
1553
1554
  for (const tab of extraTabs) ids.add(tab.id);
1554
1555
  return ids;
1555
1556
  }, [extraTabs]);
@@ -1578,6 +1579,7 @@ export function SettingsPage() {
1578
1579
 
1579
1580
  return (
1580
1581
  <SettingsTabsPage
1582
+ account={<AccountSettingsCard />}
1581
1583
  className="flex-1"
1582
1584
  generalLabel={t("settings.general")}
1583
1585
  teamLabel={t("settings.team")}
@@ -35,6 +35,34 @@ Then implement working code that is cohesive, accessible, responsive, and polish
35
35
 
36
36
  Default to Apple/Linear-level restraint: make the primary workflow obvious, then remove everything that does not help that workflow right now. A polished UI often has fewer visible controls, fewer borders, fewer labels, and fewer explanatory surfaces than the first reasonable implementation.
37
37
 
38
+ ### Progressive Disclosure Is A Design Requirement
39
+
40
+ Treat an all-at-once interface as a defect to fix during design, not as a
41
+ styling preference. Before coding, inventory every piece of content and action
42
+ on the surface, then assign each one to the smallest useful visibility level:
43
+
44
+ 1. **Immediate** — the page title, current state, one primary action, and the
45
+ compact context needed to choose what to do next.
46
+ 2. **Expanded** — the details needed for the selected item or active workflow.
47
+ 3. **On demand** — advanced settings, diagnostics, credentials, metadata,
48
+ destructive actions, documentation, and rarely used tools.
49
+
50
+ Use single-select accordions or simple disclosure rows for sibling panels when
51
+ the user is choosing one item at a time. Inside an expanded panel, keep another
52
+ layer for independent concerns instead of dumping every form, explanation, and
53
+ secondary action into the first reveal. Prefer one flat panel with alignment,
54
+ dividers, and whitespace over nested cards; provider or product icons should
55
+ not receive decorative borders or containers unless the container communicates
56
+ state or interaction. A collapsed row should still show the item name, status,
57
+ and a concise summary so the user can scan the whole surface without opening
58
+ everything.
59
+
60
+ Before shipping, ask: “What can disappear until the user asks for it?” Then
61
+ verify collapsed, expanded, loading, empty, error, and narrow-width states.
62
+ If the first viewport contains multiple forms, repeated explanatory copy,
63
+ documentation links, and controls for unrelated tasks, the surface has not
64
+ passed this requirement yet.
65
+
38
66
  - **Start by subtracting**: Before adding a visible control, banner, toolbar row, card, or explanatory block, ask what can be removed, merged, renamed, or moved into an existing affordance.
39
67
  - **One primary action**: Each surface should have one dominant next action. Secondary actions belong in menus, popovers, command palettes, disclosure rows, or contextual hover/focus states unless they are used constantly.
40
68
  - **Progressively disclose rare work**: Advanced options, diagnostics, metadata, settings, import/export, destructive actions, and inspection tools should stay tucked away until requested. Prefer small icon triggers with tooltips, popovers, drawers, or detail panels over permanent chrome.
@@ -95,7 +95,7 @@ export function Layout({ children }: LayoutProps) {
95
95
  useAgentChatHomeHandoffLinks({
96
96
  storageKey: "plans",
97
97
  chatPath: "/",
98
- requireActiveHandoff: false,
98
+ requireActiveHandoff: true,
99
99
  });
100
100
  const hideAppNavigation = planDetailRoute && planReaderImmersive;
101
101
  const effectiveSidebarCollapsed = chatRoute
@@ -153,7 +153,7 @@ export function Layout({ children }: LayoutProps) {
153
153
 
154
154
  const pageContent = (
155
155
  <div className="flex h-full flex-1 flex-col overflow-hidden">
156
- {ownsToolbar ? (
156
+ {chatRoute ? null : ownsToolbar ? (
157
157
  hideAppNavigation ? null : (
158
158
  <div className="flex h-12 items-center border-b border-border px-4 md:hidden shrink-0">
159
159
  <button
@@ -1,5 +1,4 @@
1
1
  import {
2
- markAgentChatHomeHandoff,
3
2
  navigateWithAgentChatViewTransition,
4
3
  sendToAgentChat,
5
4
  useChatThreads,
@@ -243,7 +242,7 @@ function PlanChatsSection({ collapsed }: { collapsed: boolean }) {
243
242
  }
244
243
 
245
244
  return (
246
- <div className="mt-2 border-s border-sidebar-border/70 ps-3">
245
+ <div className="mt-2 ms-4">
247
246
  <ChatHistoryRail
248
247
  items={chatItems}
249
248
  activeId={activeThreadId}
@@ -316,17 +315,11 @@ function PlansSidebarSection({ collapsed }: { collapsed: boolean }) {
316
315
  signInForPlanCreate();
317
316
  return;
318
317
  }
319
- if (location.pathname === "/") {
320
- markAgentChatHomeHandoff("plans");
321
- }
322
318
  navigateWithAgentChatViewTransition(navigate, "/plans?create=1");
323
319
  };
324
320
 
325
321
  const openPlanPath = (event: MouseEvent<HTMLAnchorElement>, path: string) => {
326
322
  event.preventDefault();
327
- if (location.pathname === "/") {
328
- markAgentChatHomeHandoff("plans");
329
- }
330
323
  navigateWithAgentChatViewTransition(navigate, path);
331
324
  };
332
325
 
@@ -615,11 +608,6 @@ export function Sidebar({
615
608
  const link = (
616
609
  <Link
617
610
  to={item.href}
618
- onClick={() => {
619
- if (item.href !== "/" && location.pathname === "/") {
620
- markAgentChatHomeHandoff("plans");
621
- }
622
- }}
623
611
  className={cn(
624
612
  "flex items-center gap-3 rounded-lg px-3 py-2 text-sm transition-colors",
625
613
  isActive
@@ -1,4 +1,3 @@
1
- import { markAgentChatHomeHandoff } from "@agent-native/core/client/agent-chat";
2
1
  import {
3
2
  agentNativePath,
4
3
  appBasePath,
@@ -108,9 +107,6 @@ export function useNavigationState() {
108
107
  deleteCommand();
109
108
  const path = planNavigateCommandPath(cmd);
110
109
  void prewarmPlanRoutePath(path);
111
- if (location.pathname === "/" && path !== "/") {
112
- markAgentChatHomeHandoff("plans");
113
- }
114
110
  const commitNavigation = () =>
115
111
  navigate(path, { replace: true, flushSync: true });
116
112
  if (
@@ -2,6 +2,7 @@ import { ChangelogSettingsCard } from "@agent-native/core/client/changelog";
2
2
  import { LanguagePicker, useT } from "@agent-native/core/client/i18n";
3
3
  import { TeamPage } from "@agent-native/core/client/org";
4
4
  import {
5
+ AccountSettingsCard,
5
6
  SettingsTabsPage,
6
7
  useAgentSettingsTabs,
7
8
  type SettingsSearchEntry,
@@ -51,6 +52,7 @@ export default function SettingsRoute() {
51
52
 
52
53
  return (
53
54
  <SettingsTabsPage
55
+ account={<AccountSettingsCard />}
54
56
  teamLabel={t("header.team")}
55
57
  extraTabs={agentSettingsTabs}
56
58
  generalSearchEntries={generalSearchEntries}
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-07-23
4
+ ---
5
+
6
+ Ask Plan is now a clean full-page chat surface with better centering and quieter chat history.
@@ -35,6 +35,34 @@ Then implement working code that is cohesive, accessible, responsive, and polish
35
35
 
36
36
  Default to Apple/Linear-level restraint: make the primary workflow obvious, then remove everything that does not help that workflow right now. A polished UI often has fewer visible controls, fewer borders, fewer labels, and fewer explanatory surfaces than the first reasonable implementation.
37
37
 
38
+ ### Progressive Disclosure Is A Design Requirement
39
+
40
+ Treat an all-at-once interface as a defect to fix during design, not as a
41
+ styling preference. Before coding, inventory every piece of content and action
42
+ on the surface, then assign each one to the smallest useful visibility level:
43
+
44
+ 1. **Immediate** — the page title, current state, one primary action, and the
45
+ compact context needed to choose what to do next.
46
+ 2. **Expanded** — the details needed for the selected item or active workflow.
47
+ 3. **On demand** — advanced settings, diagnostics, credentials, metadata,
48
+ destructive actions, documentation, and rarely used tools.
49
+
50
+ Use single-select accordions or simple disclosure rows for sibling panels when
51
+ the user is choosing one item at a time. Inside an expanded panel, keep another
52
+ layer for independent concerns instead of dumping every form, explanation, and
53
+ secondary action into the first reveal. Prefer one flat panel with alignment,
54
+ dividers, and whitespace over nested cards; provider or product icons should
55
+ not receive decorative borders or containers unless the container communicates
56
+ state or interaction. A collapsed row should still show the item name, status,
57
+ and a concise summary so the user can scan the whole surface without opening
58
+ everything.
59
+
60
+ Before shipping, ask: “What can disappear until the user asks for it?” Then
61
+ verify collapsed, expanded, loading, empty, error, and narrow-width states.
62
+ If the first viewport contains multiple forms, repeated explanatory copy,
63
+ documentation links, and controls for unrelated tasks, the surface has not
64
+ passed this requirement yet.
65
+
38
66
  - **Start by subtracting**: Before adding a visible control, banner, toolbar row, card, or explanatory block, ask what can be removed, merged, renamed, or moved into an existing affordance.
39
67
  - **One primary action**: Each surface should have one dominant next action. Secondary actions belong in menus, popovers, command palettes, disclosure rows, or contextual hover/focus states unless they are used constantly.
40
68
  - **Progressively disclose rare work**: Advanced options, diagnostics, metadata, settings, import/export, destructive actions, and inspection tools should stay tucked away until requested. Prefer small icon triggers with tooltips, popovers, drawers, or detail panels over permanent chrome.
@@ -2,6 +2,7 @@ import { ChangelogSettingsCard } from "@agent-native/core/client/changelog";
2
2
  import { LanguagePicker, useT } from "@agent-native/core/client/i18n";
3
3
  import { TeamPage } from "@agent-native/core/client/org";
4
4
  import {
5
+ AccountSettingsCard,
5
6
  SettingsTabsPage,
6
7
  useAgentSettingsTabs,
7
8
  type SettingsSearchEntry,
@@ -45,6 +46,7 @@ export default function SettingsRoute() {
45
46
 
46
47
  return (
47
48
  <SettingsTabsPage
49
+ account={<AccountSettingsCard />}
48
50
  teamLabel={t("navigation.team")}
49
51
  extraTabs={agentSettingsTabs}
50
52
  generalSearchEntries={generalSearchEntries}
@@ -35,6 +35,34 @@ Then implement working code that is cohesive, accessible, responsive, and polish
35
35
 
36
36
  Default to Apple/Linear-level restraint: make the primary workflow obvious, then remove everything that does not help that workflow right now. A polished UI often has fewer visible controls, fewer borders, fewer labels, and fewer explanatory surfaces than the first reasonable implementation.
37
37
 
38
+ ### Progressive Disclosure Is A Design Requirement
39
+
40
+ Treat an all-at-once interface as a defect to fix during design, not as a
41
+ styling preference. Before coding, inventory every piece of content and action
42
+ on the surface, then assign each one to the smallest useful visibility level:
43
+
44
+ 1. **Immediate** — the page title, current state, one primary action, and the
45
+ compact context needed to choose what to do next.
46
+ 2. **Expanded** — the details needed for the selected item or active workflow.
47
+ 3. **On demand** — advanced settings, diagnostics, credentials, metadata,
48
+ destructive actions, documentation, and rarely used tools.
49
+
50
+ Use single-select accordions or simple disclosure rows for sibling panels when
51
+ the user is choosing one item at a time. Inside an expanded panel, keep another
52
+ layer for independent concerns instead of dumping every form, explanation, and
53
+ secondary action into the first reveal. Prefer one flat panel with alignment,
54
+ dividers, and whitespace over nested cards; provider or product icons should
55
+ not receive decorative borders or containers unless the container communicates
56
+ state or interaction. A collapsed row should still show the item name, status,
57
+ and a concise summary so the user can scan the whole surface without opening
58
+ everything.
59
+
60
+ Before shipping, ask: “What can disappear until the user asks for it?” Then
61
+ verify collapsed, expanded, loading, empty, error, and narrow-width states.
62
+ If the first viewport contains multiple forms, repeated explanatory copy,
63
+ documentation links, and controls for unrelated tasks, the surface has not
64
+ passed this requirement yet.
65
+
38
66
  - **Start by subtracting**: Before adding a visible control, banner, toolbar row, card, or explanatory block, ask what can be removed, merged, renamed, or moved into an existing affordance.
39
67
  - **One primary action**: Each surface should have one dominant next action. Secondary actions belong in menus, popovers, command palettes, disclosure rows, or contextual hover/focus states unless they are used constantly.
40
68
  - **Progressively disclose rare work**: Advanced options, diagnostics, metadata, settings, import/export, destructive actions, and inspection tools should stay tucked away until requested. Prefer small icon triggers with tooltips, popovers, drawers, or detail panels over permanent chrome.
@@ -1,5 +1,11 @@
1
1
  # @agent-native/toolkit
2
2
 
3
+ ## 0.10.2
4
+
5
+ ### Patch Changes
6
+
7
+ - 2254362: Center full-page empty chat surfaces consistently and quiet the shared chat history rail.
8
+
3
9
  ## 0.10.1
4
10
 
5
11
  ### Patch Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/toolkit",
3
- "version": "0.10.1",
3
+ "version": "0.10.2",
4
4
  "description": "Reusable app-building UI and helpers for Agent-Native apps.",
5
5
  "homepage": "https://github.com/BuilderIO/agent-native#readme",
6
6
  "bugs": {
@@ -211,7 +211,7 @@
211
211
  white-space: nowrap;
212
212
  font-size: 12px;
213
213
  font-weight: 500;
214
- color: hsl(var(--foreground));
214
+ color: hsl(var(--muted-foreground));
215
215
  }
216
216
 
217
217
  .an-chat-history-row--active .an-chat-history-row__title {
@@ -227,7 +227,7 @@
227
227
  .an-chat-history--rail
228
228
  .an-chat-history-row--pinned:not(.an-chat-history-row--active)
229
229
  .an-chat-history-row__title {
230
- color: hsl(var(--foreground));
230
+ color: hsl(var(--muted-foreground));
231
231
  }
232
232
 
233
233
  .an-chat-history-row__timestamp {