@agent-native/core 0.165.1 → 0.165.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 (68) hide show
  1. package/corpus/templates/analytics/CHANGELOG.md +37 -3
  2. package/corpus/templates/analytics/changelog/2026-08-20-staged-data-limit-recovery.md +6 -0
  3. package/corpus/templates/assets/CHANGELOG.md +36 -2
  4. package/corpus/templates/brain/CHANGELOG.md +33 -3
  5. package/corpus/templates/calendar/CHANGELOG.md +45 -2
  6. package/corpus/templates/chat/CHANGELOG.md +29 -3
  7. package/corpus/templates/clips/CHANGELOG.md +55 -2
  8. package/corpus/templates/clips/app/i18n/en-US.ts +6 -11
  9. package/corpus/templates/clips/app/root.tsx +2 -1
  10. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +3 -3
  11. package/corpus/templates/clips/app/routes/download.tsx +111 -17
  12. package/corpus/templates/clips/changelog/2026-08-20-cross-tab-recording-controls.md +6 -0
  13. package/corpus/templates/clips/changelog/2026-08-20-overlay-follow-review-fixes.md +6 -0
  14. package/corpus/templates/clips/changelog/2026-08-20-provider-key-recovery.md +6 -0
  15. package/corpus/templates/clips/chrome-extension/PERMISSIONS.md +29 -46
  16. package/corpus/templates/clips/chrome-extension/STORE_DRAFT.md +1 -1
  17. package/corpus/templates/clips/chrome-extension/public/manifest.json +9 -2
  18. package/corpus/templates/clips/chrome-extension/src/background.ts +65 -46
  19. package/corpus/templates/clips/chrome-extension/src/content-script.ts +25 -17
  20. package/corpus/templates/clips/chrome-extension/src/overlay-follow.ts +25 -0
  21. package/corpus/templates/clips/server/routes/api/clips-latest.json.get.ts +109 -46
  22. package/corpus/templates/content/CHANGELOG.md +45 -2
  23. package/corpus/templates/crm/CHANGELOG.md +28 -16
  24. package/corpus/templates/design/CHANGELOG.md +54 -2
  25. package/corpus/templates/dispatch/CHANGELOG.md +51 -2
  26. package/corpus/templates/factory/CHANGELOG.md +28 -2
  27. package/corpus/templates/forms/CHANGELOG.md +39 -3
  28. package/corpus/templates/macros/CHANGELOG.md +30 -2
  29. package/corpus/templates/mail/CHANGELOG.md +34 -3
  30. package/corpus/templates/plan/CHANGELOG.md +34 -3
  31. package/corpus/templates/slides/CHANGELOG.md +73 -2
  32. package/corpus/templates/tasks/CHANGELOG.md +35 -0
  33. package/corpus/templates/tasks/app/root.tsx +8 -1
  34. package/dist/changelog/parse.d.ts +12 -4
  35. package/dist/changelog/parse.js +61 -23
  36. package/dist/cli/changelog.js +9 -11
  37. package/dist/client/blocks/library/diagram.js +1 -1
  38. package/dist/client/chat/run-recovery.js +8 -3
  39. package/dist/collab/routes.d.ts +1 -1
  40. package/dist/deploy/workspace-deploy.js +7 -0
  41. package/dist/mcp-client/oauth-routes.d.ts +1 -0
  42. package/dist/mcp-client/oauth-routes.js +15 -2
  43. package/dist/mcp-client/remote-store.js +83 -43
  44. package/dist/notifications/routes.d.ts +3 -3
  45. package/dist/observability/routes.d.ts +5 -5
  46. package/dist/progress/routes.d.ts +1 -1
  47. package/dist/provider-api/actions/provider-api.js +16 -4
  48. package/dist/resources/handlers.d.ts +2 -2
  49. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  50. package/dist/server/google-oauth-credentials.js +14 -1
  51. package/dist/server/realtime-token.d.ts +1 -1
  52. package/dist/server/transcribe-voice.d.ts +1 -1
  53. package/dist/settings/index.d.ts +1 -1
  54. package/dist/settings/index.js +1 -1
  55. package/dist/settings/store.d.ts +7 -1
  56. package/dist/settings/store.js +25 -3
  57. package/dist/settings/user-settings.d.ts +2 -0
  58. package/dist/settings/user-settings.js +65 -2
  59. package/dist/templates/chat/CHANGELOG.md +29 -3
  60. package/docs/content/deployment.mdx +89 -14
  61. package/package.json +3 -3
  62. package/src/templates/chat/CHANGELOG.md +29 -3
  63. package/corpus/templates/.retired/issues/package.json +0 -7
  64. package/corpus/templates/.retired/meeting-notes/package.json +0 -7
  65. package/corpus/templates/.retired/recruiting/package.json +0 -7
  66. package/corpus/templates/.retired/scheduling/package.json +0 -7
  67. package/corpus/templates/.retired/voice/package.json +0 -7
  68. package/corpus/templates/voice/.agents/skills/upgrade-agent-native/SKILL.md +0 -87
@@ -1,4 +1,9 @@
1
- import { defineEventHandler, setResponseHeaders, createError } from "h3";
1
+ import {
2
+ createError,
3
+ defineEventHandler,
4
+ getQuery,
5
+ setResponseHeaders,
6
+ } from "h3";
2
7
 
3
8
  /**
4
9
  * Same-origin endpoint that tells the download page which user-facing
@@ -12,14 +17,13 @@ import { defineEventHandler, setResponseHeaders, createError } from "h3";
12
17
  * /download want the raw installers (.dmg / .msi / .AppImage).
13
18
  *
14
19
  * This route therefore hits GitHub's REST API, paginates through
15
- * releases until it finds the most recent published `clips-v*` release,
16
- * and returns its asset list plus metadata.
20
+ * releases until it finds the most recent published release for the requested
21
+ * channel, and returns its asset list plus metadata.
17
22
  *
18
- * The `clips-latest` pointer release is still the release-channel hint:
19
- * when it has a signed updater manifest, we resolve that manifest's
20
- * version back to the matching `clips-v*` release before scanning. That
21
- * keeps the manual download page and the in-app updater pointed at the
22
- * same build by default.
23
+ * The channel's pointer release is still the release-channel hint: when it
24
+ * has a signed updater manifest, we resolve that manifest's version back to
25
+ * the matching versioned release before scanning. That keeps the manual
26
+ * download page and the in-app updater pointed at the same build by default.
23
27
  *
24
28
  * ## Rate-limit hardening
25
29
  *
@@ -38,14 +42,30 @@ import { defineEventHandler, setResponseHeaders, createError } from "h3";
38
42
 
39
43
  const RELEASES_URL_BASE =
40
44
  "https://api.github.com/repos/BuilderIO/agent-native/releases";
41
- const UPDATER_MANIFEST_URL =
42
- "https://github.com/BuilderIO/agent-native/releases/download/clips-latest/clips-latest.json";
43
45
  const PER_PAGE = 100;
44
- // Up to 10 pages = 1000 releases. If clips-v* hasn't shown up by then,
45
- // something else is wrong and the 404 is correct.
46
+ // Up to 10 pages = 1000 releases. If the requested channel has not appeared
47
+ // by then, something else is wrong and the 404 is correct.
46
48
  const MAX_PAGES = 10;
47
49
  const CACHE_TTL_MS = 5 * 60_000;
48
50
 
51
+ export type ClipsReleaseChannel = "production" | "nightly";
52
+
53
+ const RELEASE_CHANNEL_CONFIG: Record<
54
+ ClipsReleaseChannel,
55
+ { releasePrefix: string; updaterManifestUrl: string }
56
+ > = {
57
+ production: {
58
+ releasePrefix: "clips-v",
59
+ updaterManifestUrl:
60
+ "https://github.com/BuilderIO/agent-native/releases/download/clips-latest/clips-latest.json",
61
+ },
62
+ nightly: {
63
+ releasePrefix: "clips-nightly-v",
64
+ updaterManifestUrl:
65
+ "https://github.com/BuilderIO/agent-native/releases/download/clips-nightly-latest/clips-nightly-latest.json",
66
+ },
67
+ };
68
+
49
69
  interface GhAsset {
50
70
  name: string;
51
71
  browser_download_url: string;
@@ -121,7 +141,9 @@ export function classifyClipsAsset(
121
141
  }
122
142
 
123
143
  function parseClipsVersion(tagName: string): number[] | null {
124
- const match = /^clips-v(\d+)\.(\d+)\.(\d+)(?:[-+].*)?$/.exec(tagName);
144
+ const match = /^clips(?:-nightly)?-v(\d+)\.(\d+)\.(\d+)(?:[-+].*)?$/.exec(
145
+ tagName,
146
+ );
125
147
  if (!match) return null;
126
148
  return match.slice(1, 4).map((part) => Number(part));
127
149
  }
@@ -139,6 +161,22 @@ export function compareClipsReleaseTags(a: string, b: string): number {
139
161
  return 0;
140
162
  }
141
163
 
164
+ export function isClipsReleaseForChannel(
165
+ release: GhRelease,
166
+ channel: ClipsReleaseChannel,
167
+ ): boolean {
168
+ if (release.draft || !hasInstallerAssets(release)) return false;
169
+ if (channel === "production") {
170
+ return (
171
+ !release.prerelease && /^clips-v\d+\.\d+\.\d+$/.test(release.tag_name)
172
+ );
173
+ }
174
+ return (
175
+ release.prerelease &&
176
+ /^clips-nightly-v\d+\.\d+\.\d+(?:[-+].*)?$/.test(release.tag_name)
177
+ );
178
+ }
179
+
142
180
  function isBetterRelease(candidate: GhRelease, current: GhRelease | null) {
143
181
  if (!current) return true;
144
182
  const versionOrder = compareClipsReleaseTags(
@@ -158,8 +196,11 @@ function hasInstallerAssets(release: GhRelease) {
158
196
  );
159
197
  }
160
198
 
161
- let cache: { data: DownloadManifest; ts: number } | null = null;
162
- let inFlight: Promise<DownloadManifest> | null = null;
199
+ const cache = new Map<
200
+ ClipsReleaseChannel,
201
+ { data: DownloadManifest; ts: number }
202
+ >();
203
+ const inFlight = new Map<ClipsReleaseChannel, Promise<DownloadManifest>>();
163
204
 
164
205
  class UpstreamError extends Error {
165
206
  statusCode: number;
@@ -215,8 +256,10 @@ function isUpdaterManifestLike(value: unknown): value is UpdaterManifest {
215
256
  return typeof obj.version === "string" && obj.version.length > 0;
216
257
  }
217
258
 
218
- async function fetchUpdaterManifest(): Promise<UpdaterManifest> {
219
- const res = await fetch(UPDATER_MANIFEST_URL, {
259
+ async function fetchUpdaterManifest(
260
+ channel: ClipsReleaseChannel,
261
+ ): Promise<UpdaterManifest> {
262
+ const res = await fetch(RELEASE_CHANNEL_CONFIG[channel].updaterManifestUrl, {
220
263
  headers: {
221
264
  accept: "application/json",
222
265
  "user-agent": "clips-download-page",
@@ -236,35 +279,38 @@ async function fetchUpdaterManifest(): Promise<UpdaterManifest> {
236
279
  return json;
237
280
  }
238
281
 
239
- async function findUpdaterPinnedRelease(): Promise<GhRelease | null> {
282
+ async function findUpdaterPinnedRelease(
283
+ channel: ClipsReleaseChannel,
284
+ ): Promise<GhRelease | null> {
240
285
  try {
241
- const manifest = await fetchUpdaterManifest();
242
- const version = manifest.version.replace(/^clips-v/, "");
243
- const release = await fetchReleaseByTag(`clips-v${version}`);
244
- if (!release) return null;
245
- if (release.draft || release.prerelease) return null;
246
- if (!release.tag_name.startsWith("clips-v")) return null;
247
- if (!hasInstallerAssets(release)) return null;
248
- return release;
286
+ const manifest = await fetchUpdaterManifest(channel);
287
+ const releasePrefix = RELEASE_CHANNEL_CONFIG[channel].releasePrefix;
288
+ const version = manifest.version
289
+ .replace(/^clips(?:-nightly)?-v/, "")
290
+ .replace(/^v/, "");
291
+ const release = await fetchReleaseByTag(`${releasePrefix}${version}`);
292
+ return release && isClipsReleaseForChannel(release, channel)
293
+ ? release
294
+ : null;
249
295
  } catch {
250
296
  return null;
251
297
  }
252
298
  }
253
299
 
254
- async function findLatestClipsRelease(): Promise<GhRelease | null> {
255
- // Start with the updater's stable pointer so fresh manual installs and
300
+ async function findLatestClipsRelease(
301
+ channel: ClipsReleaseChannel,
302
+ ): Promise<GhRelease | null> {
303
+ // Start with the updater's channel pointer so fresh manual installs and
256
304
  // auto-updates agree about the channel's current version. Then scan the
257
305
  // versioned releases as a fallback/guard and prefer the highest semver
258
306
  // tag; a republished older tag must not beat a newer build just because
259
307
  // it has a later `published_at`.
260
- let best: GhRelease | null = await findUpdaterPinnedRelease();
308
+ let best: GhRelease | null = await findUpdaterPinnedRelease(channel);
261
309
  for (let page = 1; page <= MAX_PAGES; page++) {
262
310
  const batch = await fetchPage(page);
263
311
  if (batch.length === 0) break;
264
312
  for (const r of batch) {
265
- if (r.draft || r.prerelease) continue;
266
- if (!r.tag_name.startsWith("clips-v")) continue;
267
- if (!hasInstallerAssets(r)) continue;
313
+ if (!isClipsReleaseForChannel(r, channel)) continue;
268
314
  if (isBetterRelease(r, best)) {
269
315
  best = r;
270
316
  }
@@ -274,16 +320,21 @@ async function findLatestClipsRelease(): Promise<GhRelease | null> {
274
320
  return best;
275
321
  }
276
322
 
277
- async function buildManifest(): Promise<DownloadManifest> {
278
- const latest = await findLatestClipsRelease();
323
+ async function buildManifest(
324
+ channel: ClipsReleaseChannel,
325
+ ): Promise<DownloadManifest> {
326
+ const latest = await findLatestClipsRelease(channel);
279
327
  if (!latest) {
280
328
  throw createError({
281
329
  statusCode: 404,
282
- statusMessage: "No published clips-v* release found",
330
+ statusMessage:
331
+ channel === "nightly"
332
+ ? "No published clips-nightly-v* release found"
333
+ : "No published clips-v* release found",
283
334
  });
284
335
  }
285
336
  return {
286
- version: latest.tag_name.replace(/^clips-v/, ""),
337
+ version: latest.tag_name.replace(/^clips(?:-nightly)?-v/, ""),
287
338
  tag: latest.tag_name,
288
339
  pub_date: latest.published_at,
289
340
  notes: latest.body,
@@ -296,31 +347,43 @@ async function buildManifest(): Promise<DownloadManifest> {
296
347
  };
297
348
  }
298
349
 
299
- async function getManifest(): Promise<DownloadManifest> {
350
+ async function getManifest(
351
+ channel: ClipsReleaseChannel = "production",
352
+ ): Promise<DownloadManifest> {
300
353
  const now = Date.now();
301
- if (cache && now - cache.ts < CACHE_TTL_MS) return cache.data;
302
- if (inFlight) return inFlight;
303
- inFlight = (async () => {
354
+ const cached = cache.get(channel);
355
+ if (cached && now - cached.ts < CACHE_TTL_MS) return cached.data;
356
+ const pending = inFlight.get(channel);
357
+ if (pending) return pending;
358
+ const request = (async () => {
304
359
  try {
305
- const data = await buildManifest();
306
- cache = { data, ts: Date.now() };
360
+ const data = await buildManifest(channel);
361
+ cache.set(channel, { data, ts: Date.now() });
307
362
  return data;
308
363
  } catch (err) {
309
364
  // Stale-while-error: if we have an older payload, serve it. Only
310
365
  // bubble the error if the cache is empty.
311
- if (cache) return cache.data;
366
+ if (cached) return cached.data;
312
367
  throw err;
313
368
  } finally {
314
- inFlight = null;
369
+ inFlight.delete(channel);
315
370
  }
316
371
  })();
317
- return inFlight;
372
+ inFlight.set(channel, request);
373
+ return request;
374
+ }
375
+
376
+ export function normalizeClipsReleaseChannel(
377
+ value: unknown,
378
+ ): ClipsReleaseChannel {
379
+ return value === "nightly" ? "nightly" : "production";
318
380
  }
319
381
 
320
382
  export default defineEventHandler(async (event) => {
383
+ const channel = normalizeClipsReleaseChannel(getQuery(event).channel);
321
384
  let manifest: DownloadManifest;
322
385
  try {
323
- manifest = await getManifest();
386
+ manifest = await getManifest(channel);
324
387
  } catch (err) {
325
388
  const e = err as {
326
389
  statusCode?: number;
@@ -3,8 +3,51 @@
3
3
  All notable user-facing changes to Agent-Native Content are documented here. Open it any
4
4
  time from the command menu (Cmd+K → "What's new").
5
5
 
6
- ## 2026-06-23
6
+ Older updates live in [the changelog folder](./changelog/) and are included in the in-app "What's new" view.
7
+
8
+ ## 2026-08-14
9
+
10
+ ### Fixed
11
+
12
+ - Images fill the page width by default and remain visible when more images are added
13
+ - Images inserted from the slash command stay saved after upload
14
+ - SVG files can be selected reliably from the image picker
15
+
16
+ ## 2026-08-13
17
+
18
+ ### Fixed
19
+
20
+ - Blocks field conflicts now keep the newer saved version visible instead of leaving a rejected edit on screen
21
+
22
+ ## 2026-08-12
23
+
24
+ ### Improved
25
+
26
+ - Toggle blocks now follow Notion-style Enter and Shift-Tab behavior while preserving summaries and nested paragraphs.
27
+ - Shared Content documents now keep viewers read-only and let commenters add comments without editing the document.
28
+
29
+ ### Fixed
30
+
31
+ - Image uploads now confirm the image can be displayed before reporting success
32
+
33
+ ## 2026-08-11
34
+
35
+ ### Improved
36
+
37
+ - Content opens your last page on return and gives new users a private welcome page.
38
+
39
+ ### Fixed
40
+
41
+ - Chrome no longer offers to install Content as a desktop app.
42
+ - Content mutations delegated from verified Slack DMs now use the member's exact Personal scope and return verified row receipts.
43
+
44
+ ## 2026-08-10
7
45
 
8
46
  ### Added
9
47
 
10
- - See what's new right inside Agent-Native Content — a changelog now lives in the command menu (Cmd+K).
48
+ - Agents can safely insert, update, upsert, delete, and reorder one stable block in a database Blocks field.
49
+
50
+ ### Improved
51
+
52
+ - Database Blocks fields now keep logical block identity through editing, reordering, deletion recovery, and reloads
53
+ - Database row actions now validate exact schemas and safe retries before changing data.
@@ -1,25 +1,37 @@
1
1
  # CRM changelog
2
2
 
3
- ## 2026-07-26
3
+ Older updates live in [the changelog folder](./changelog/) and are included in the in-app "What's new" view.
4
4
 
5
- ### Added
6
-
7
- - CRM connects to HubSpot for scoped account intelligence, saved views, follow-up tasks, evidence, and approval-gated write proposals.
8
- - CRM can prepare a record-scoped, default-off Clips review recipe while keeping media and transcripts in Clips.
9
- - CRM can now find and review evidence-grounded call signals without storing transcripts or media.
10
- - Approved sales automations can now update routine local CRM fields while provider changes remain reviewable proposals.
11
- - CRM can now run as a standalone Native SQL system for accounts, people, opportunities, views, tasks, and cadence without an external provider.
12
- - Pipeline now gives each CRM user a live, permission-aware view of opportunity value by stage.
13
- - CRM can now connect to Salesforce alongside HubSpot for scoped account intelligence and follow-up work.
5
+ ## 2026-08-11
14
6
 
15
7
  ### Improved
16
8
 
17
- - CRM can now manage keyword and smart call-signal trackers from Intelligence settings.
9
+ - Full-page chat composers stay at a focused 750px width.
18
10
 
19
11
  ### Fixed
20
12
 
21
- - Pipeline dashboards now install correctly from the CRM action CLI.
22
- - CRM field validation now explains which fields cannot be edited instead of showing a generic error.
23
- - Fixed HubSpot contact syncs missing records updated after the sync cursor.
24
- - Fixed Pipeline dashboard panels so their opportunity data loads reliably.
25
- - Full-page chat keeps the active conversation when moving to and from the sidebar.
13
+ - Chrome no longer offers to install CRM as a desktop app.
14
+
15
+ ## 2026-08-10
16
+
17
+ ### Improved
18
+
19
+ - Full-page chat now uses the available width up to 1000px for more comfortable prompts and responses.
20
+
21
+ ## 2026-08-07
22
+
23
+ ### Improved
24
+
25
+ - CRM settings show stable skeleton placeholders while lists, fields, connections, and intelligence trackers load.
26
+
27
+ ## 2026-08-06
28
+
29
+ ### Improved
30
+
31
+ - CRM starts faster after a deploy or idle period — one-time data backfills now run once as tracked migrations instead of on every cold start.
32
+
33
+ ## 2026-07-29
34
+
35
+ ### Improved
36
+
37
+ - Sidebar footers now keep Feedback, Search, and Collapse together, with language preferences available in Settings.
@@ -3,8 +3,60 @@
3
3
  All notable user-facing changes to Design are documented here. Open it any time
4
4
  from the command menu (Cmd+K → "What's new") or from Settings.
5
5
 
6
- ## 2026-06-23
6
+ Older updates live in [the changelog folder](./changelog/) and are included in the in-app "What's new" view.
7
+
8
+ ## 2026-08-18
9
+
10
+ ### Improved
11
+
12
+ - Design chat keeps context out of the composer and uses shorter completion summaries.
13
+
14
+ ### Changed
15
+
16
+ - Advanced Design editor panels are hidden by default while they are refined.
17
+
18
+ ## 2026-08-13
7
19
 
8
20
  ### Added
9
21
 
10
- - See what's new right inside Design — a changelog now lives in the command menu (Cmd+K) and in Settings.
22
+ - The design audit now catches a screen that renders behind a full-frame Alpine overlay — the failure a screenshot cannot show, because the capture waits for Alpine to settle and the overlay is gone by then.
23
+ - The design audit now reports when a screen uses none of its linked design system's fonts, colors, or token names.
24
+
25
+ ### Improved
26
+
27
+ - Attach a UI screenshot and the design is reproduced from it instead of being reinterpreted as three alternative directions.
28
+ - The design system preview now shows how many named tokens were captured, so a large imported system no longer looks like a handful of colors.
29
+
30
+ ### Fixed
31
+
32
+ - A screen whose Alpine overlay would cover it on load — `x-cloak` without its hiding rule, or a broken Alpine script URL — is now caught when it is saved instead of shipping as a blank or covered design.
33
+ - Linking a design system means you never get generic direction cards: exploring variants without real HTML is now refused for that design rather than rendering placeholder screens that ignore your tokens.
34
+ - Your design system, original prompt, and reference screenshots now reach the turn that actually generates the design, instead of being spent on the questions step.
35
+
36
+ ## 2026-08-12
37
+
38
+ ### Improved
39
+
40
+ - Shared designs now keep viewers read-only and let commenters add review comments without editing the design.
41
+
42
+ ## 2026-08-11
43
+
44
+ ### Improved
45
+
46
+ - Design sharing now identifies viewers who can add review comments
47
+ - New designs now skip the intake questions and follow your existing work when Creative Context already holds closely related pieces.
48
+
49
+ ### Fixed
50
+
51
+ - Chrome no longer offers to install Design as a desktop app.
52
+ - Design agent prompts copy successfully in the desktop app.
53
+
54
+ ## 2026-08-10
55
+
56
+ ### Improved
57
+
58
+ - The frame tool draws a plain frame by default, with Screen available in its dropdown
59
+
60
+ ### Fixed
61
+
62
+ - Marquee-selecting layers far down a tall screen now selects the layers you dragged over
@@ -3,8 +3,57 @@
3
3
  All notable user-facing changes to Agent-Native Dispatch are documented here. Open it any
4
4
  time from the command menu (Cmd+K → "What's new").
5
5
 
6
- ## 2026-06-23
6
+ Older updates live in [the changelog folder](./changelog/) and are included in the in-app "What's new" view.
7
+
8
+ ## 2026-08-20
9
+
10
+ ### Fixed
11
+
12
+ - Dispatch chat now loads its OpenRouter provider reliably in production.
13
+
14
+ ## 2026-08-12
15
+
16
+ ### Improved
17
+
18
+ - Search and pin workspace apps from the app catalog
19
+ - Workspace integration access now shows exactly which apps can reuse each connection.
20
+
21
+ ### Fixed
22
+
23
+ - Dispatch now appears in authorized workspace app directories for fleet-wide administration
24
+
25
+ ## 2026-08-11
26
+
27
+ ### Added
28
+
29
+ - Dispatch shows usage trends, recent prompts, and an agent review path
30
+
31
+ ### Improved
32
+
33
+ - Dispatch no longer shows the generic Chat starter among default app launchers
34
+ - Dispatch settings now link directly to Admin
35
+ - New apps accept human-friendly names and convert them to URL-safe IDs automatically.
36
+ - Integrations and scheduled work open as first-class Electron pages without a duplicate Dispatch navigation shell.
37
+ - Sidebar text is slightly easier to read in light and dark mode.
38
+
39
+ ### Fixed
40
+
41
+ - Chrome no longer offers to install Dispatch as a desktop app.
42
+ - Clicking the Dispatch logo returns to the Overview page
43
+ - Dispatch omits its own app entry from the app switcher.
44
+
45
+ ## 2026-08-10
46
+
47
+ ### Added
48
+
49
+ - Desktop workspace sign-in can now be rolled out gradually while ordinary app sign-in remains unchanged by default.
50
+
51
+ ### Improved
52
+
53
+ - Full-page chat now uses the available width up to 1000px for more comfortable prompts and responses.
54
+
55
+ ## 2026-08-08
7
56
 
8
57
  ### Added
9
58
 
10
- - See what's new right inside Agent-Native Dispatch — a changelog now lives in the command menu (Cmd+K).
59
+ - Chat-first navigation keeps conversations central while opening workspace apps and watched sessions beside them.
@@ -3,8 +3,34 @@
3
3
  All notable user-facing changes to Chat are documented here. Open it any
4
4
  time from the command menu (Cmd+K → "What's new").
5
5
 
6
- ## 2026-06-23
6
+ Older updates live in [the changelog folder](./changelog/) and are included in the in-app "What's new" view.
7
+
8
+ ## 2026-08-11
9
+
10
+ ### Fixed
11
+
12
+ - Chrome no longer offers to install Factory as a desktop app.
13
+
14
+ ## 2026-08-10
15
+
16
+ ### Improved
17
+
18
+ - Full-page chat now uses the available width up to 1000px for more comfortable prompts and responses.
19
+
20
+ ## 2026-08-08
21
+
22
+ ### Improved
23
+
24
+ - Scheduler health now stays in Settings until diagnostics are needed.
25
+
26
+ ## 2026-08-07
7
27
 
8
28
  ### Added
9
29
 
10
- - See what's new right inside Chat — a changelog now lives in the command menu (Cmd+K).
30
+ - Factory can keep Builder bot pull requests moving by requesting fixes for review feedback, CI failures, and merge conflicts.
31
+
32
+ ## 2026-08-05
33
+
34
+ ### Improved
35
+
36
+ - Factory now keeps production automations running, shows scheduler health and run errors, and can email failure diagnostics.
@@ -3,8 +3,44 @@
3
3
  All notable user-facing changes to Agent-Native Forms are documented here. Open it any
4
4
  time from the command menu (Cmd+K → "What's new").
5
5
 
6
- ## 2026-06-23
6
+ Older updates live in [the changelog folder](./changelog/) and are included in the in-app "What's new" view.
7
7
 
8
- ### Added
8
+ ## 2026-08-11
9
9
 
10
- - See what's new right inside Agent-Native Forms — a changelog now lives in the command menu (Cmd+K).
10
+ ### Improved
11
+
12
+ - Full-page chat composers stay at a focused 750px width.
13
+
14
+ ### Fixed
15
+
16
+ - Chrome no longer offers to install Forms as a desktop app.
17
+ - Fixed public forms so conditional questions stay hidden until relevant and submissions retain a safe page link.
18
+
19
+ ## 2026-08-10
20
+
21
+ ### Improved
22
+
23
+ - Full-page chat now uses the available width up to 1000px for more comfortable prompts and responses.
24
+
25
+ ### Fixed
26
+
27
+ - Forms now keep agent-applied field changes visible after an edit
28
+ - Published form links always use the working public form URL
29
+
30
+ ## 2026-08-06
31
+
32
+ ### Improved
33
+
34
+ - Long-running form requests now continue in the background instead of stopping at the foreground time limit.
35
+
36
+ ## 2026-08-05
37
+
38
+ ### Fixed
39
+
40
+ - Form links can now be Cmd-clicked to open in a new tab
41
+
42
+ ## 2026-07-31
43
+
44
+ ### Improved
45
+
46
+ - The Agent Native logo stays visible when the sidebar is collapsed and toggles the sidebar when clicked.
@@ -3,8 +3,36 @@
3
3
  All notable user-facing changes to Agent-Native Macros are documented here. Open it any
4
4
  time from the command menu (Cmd+K → "What's new").
5
5
 
6
- ## 2026-06-23
6
+ Older updates live in [the changelog folder](./changelog/) and are included in the in-app "What's new" view.
7
+
8
+ ## 2026-07-29
9
+
10
+ ### Improved
11
+
12
+ - Sidebar footers now keep Feedback, Search, and Collapse together without a separate language shortcut.
13
+
14
+ ## 2026-07-25
15
+
16
+ ### Improved
17
+
18
+ - App branding now uses the product name without the Agent-Native prefix.
19
+ - Settings navigation now keeps Manage agent as a dedicated linked destination at the bottom.
20
+
21
+ ## 2026-07-24
22
+
23
+ ### Improved
24
+
25
+ - Secondary controls and dashboard surfaces now use quieter borderless styling.
26
+ - Sidebar utility controls now follow a consistent footer order.
27
+
28
+ ## 2026-07-22
29
+
30
+ ### Improved
31
+
32
+ - Manage agent navigation now uses the connected-nodes icon.
33
+
34
+ ## 2026-07-13
7
35
 
8
36
  ### Added
9
37
 
10
- - See what's new right inside Agent-Native Macros — a changelog now lives in the command menu (Cmd+K).
38
+ - New Agent page: see and manage your agent's context, files, connections, jobs, and external access in one place
@@ -3,8 +3,39 @@
3
3
  All notable user-facing changes to Agent-Native Mail are documented here. Open it any
4
4
  time from the command menu (Cmd+K → "What's new") or from Settings.
5
5
 
6
- ## 2026-06-23
6
+ Older updates live in [the changelog folder](./changelog/) and are included in the in-app "What's new" view.
7
7
 
8
- ### Added
8
+ ## 2026-08-18
9
9
 
10
- - See what's new right inside Agent-Native Mail — a changelog now lives in the command menu (Cmd+K) and in Settings.
10
+ ### Fixed
11
+
12
+ - Pinned labels now keep loading until matching inbox messages are found.
13
+
14
+ ## 2026-08-17
15
+
16
+ ### Fixed
17
+
18
+ - Gmail signatures now preserve images and support paste or upload in Mail
19
+ - Mail now updates durable drafting preferences without opening a draft
20
+
21
+ ## 2026-08-12
22
+
23
+ ### Fixed
24
+
25
+ - Agent-sent messages appear in Mail immediately after Gmail sends them.
26
+
27
+ ## 2026-08-11
28
+
29
+ ### Improved
30
+
31
+ - Google sign-in now opens the Gmail connection flow directly
32
+
33
+ ### Fixed
34
+
35
+ - Chrome no longer offers to install Mail as a desktop app.
36
+
37
+ ## 2026-08-06
38
+
39
+ ### Improved
40
+
41
+ - Long-running mail requests now continue in the background instead of stopping at the foreground time limit.