@agent-native/core 0.165.2 → 0.165.4

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 (54) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/templates/analytics/CHANGELOG.md +740 -2
  3. package/corpus/templates/analytics/changelog/2026-08-20-staged-data-limit-recovery.md +1 -0
  4. package/corpus/templates/assets/CHANGELOG.md +204 -2
  5. package/corpus/templates/brain/CHANGELOG.md +145 -2
  6. package/corpus/templates/calendar/CHANGELOG.md +272 -2
  7. package/corpus/templates/chat/CHANGELOG.md +89 -2
  8. package/corpus/templates/clips/CHANGELOG.md +864 -2
  9. package/corpus/templates/clips/app/i18n/en-US.ts +6 -2
  10. package/corpus/templates/clips/app/routes/download.tsx +111 -17
  11. package/corpus/templates/clips/changelog/2026-08-20-cross-tab-recording-controls.md +1 -0
  12. package/corpus/templates/clips/changelog/2026-08-20-overlay-follow-review-fixes.md +1 -0
  13. package/corpus/templates/clips/changelog/2026-08-20-preparing-recording-countdown-overlay.md +5 -0
  14. package/corpus/templates/clips/changelog/2026-08-20-provider-key-recovery.md +1 -0
  15. package/corpus/templates/clips/desktop/src/overlays/preparing.tsx +4 -6
  16. package/corpus/templates/clips/desktop/src/styles.css +18 -20
  17. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +9 -17
  18. package/corpus/templates/clips/server/routes/api/clips-latest.json.get.ts +109 -46
  19. package/corpus/templates/content/CHANGELOG.md +503 -2
  20. package/corpus/templates/crm/CHANGELOG.md +31 -2
  21. package/corpus/templates/design/CHANGELOG.md +870 -2
  22. package/corpus/templates/dispatch/CHANGELOG.md +196 -2
  23. package/corpus/templates/factory/CHANGELOG.md +121 -2
  24. package/corpus/templates/forms/CHANGELOG.md +166 -2
  25. package/corpus/templates/macros/CHANGELOG.md +49 -2
  26. package/corpus/templates/mail/CHANGELOG.md +201 -2
  27. package/corpus/templates/plan/CHANGELOG.md +277 -2
  28. package/corpus/templates/slides/CHANGELOG.md +437 -2
  29. package/corpus/templates/tasks/CHANGELOG.md +32 -2
  30. package/dist/changelog/parse.d.ts +3 -3
  31. package/dist/changelog/parse.js +35 -16
  32. package/dist/client/blocks/library/diagram.js +1 -1
  33. package/dist/collab/routes.d.ts +1 -1
  34. package/dist/collab/struct-routes.d.ts +1 -1
  35. package/dist/deploy/workspace-deploy.js +7 -0
  36. package/dist/mcp/screen-memory-stdio.d.ts +7 -7
  37. package/dist/mcp-client/oauth-routes.d.ts +1 -0
  38. package/dist/mcp-client/oauth-routes.js +15 -2
  39. package/dist/mcp-client/remote-store.js +83 -43
  40. package/dist/notifications/routes.d.ts +6 -6
  41. package/dist/resources/handlers.d.ts +2 -2
  42. package/dist/secrets/routes.d.ts +9 -9
  43. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  44. package/dist/server/google-oauth-credentials.js +14 -1
  45. package/dist/settings/index.d.ts +1 -1
  46. package/dist/settings/index.js +1 -1
  47. package/dist/settings/store.d.ts +7 -1
  48. package/dist/settings/store.js +25 -3
  49. package/dist/settings/user-settings.d.ts +2 -0
  50. package/dist/settings/user-settings.js +65 -2
  51. package/dist/templates/chat/CHANGELOG.md +89 -2
  52. package/docs/content/deployment.mdx +89 -14
  53. package/package.json +1 -1
  54. package/src/templates/chat/CHANGELOG.md +89 -2
@@ -3,8 +3,6 @@
3
3
  All notable user-facing changes to Agent-Native Slides are documented here. Open it any
4
4
  time from the command menu (Cmd+K → "What's new").
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-18
9
7
 
10
8
  ### Improved
@@ -79,3 +77,440 @@ Older updates live in [the changelog folder](./changelog/) and are included in t
79
77
  - Slides shows one compact AI marker and keeps your current slide selected while new slides load as skeletons
80
78
  - Text edits preserve slide layout when no changes are made
81
79
  - Undo and redo now move one visible slide state at a time
80
+
81
+ ## 2026-08-10
82
+
83
+ ### Improved
84
+
85
+ - AI editing status now uses a cleaner combined avatar badge.
86
+ - Imported reference decks now show clear success and stay selected for new deck generation
87
+ - New deck creation now shows progress, opens the editor directly, and remembers your reference choices
88
+ - Slides editing controls are consolidated into one focused menu
89
+
90
+ ### Fixed
91
+
92
+ - Asking the agent for several slide animations at once now keeps all of them instead of only the last.
93
+ - Generated decks keep a clear, human-readable title
94
+ - Pasted Google Slides links import after reconnecting Google Drive when needed.
95
+ - Presentation reveals now follow validated ordered targets, queue rapid navigation, and settle cleanly after transitions.
96
+ - Slides now verify and restyle every imported slide in one pass
97
+ - Slides only suggests a Google connection for relevant requests, and the suggestion can be dismissed.
98
+
99
+ ### Changed
100
+
101
+ - The Google Slides import option is now labeled Slides.
102
+
103
+ ## 2026-08-09
104
+
105
+ ### Added
106
+
107
+ - Highlight text on a slide and the formatting bar now offers "Revise with AI". Describe the change you want — shorter, punchier, on-brand — and the agent rewrites just that text without disturbing the rest of the slide.
108
+
109
+ ### Fixed
110
+
111
+ - Fixed the Delete key doing nothing after selecting an image that sits inside a slide's layout, such as a picture in a card grid. Only images that had been moved freely on the canvas could be deleted before.
112
+ - Fixed direct edits to a PDF/PPTX-imported deck's slide text sometimes failing to save with a generic "Internal server error" — the source-preservation guard meant to stop an agent from silently dropping the original artwork or copy was also blocking ordinary human edits, which have no way to opt out of it.
113
+ - Fixed PDF and custom-size PowerPoint imports rendering with distorted, mispositioned images and text on non-16:9 pages.
114
+ - Fixed images vanishing from exported PDFs and PowerPoint files when they came from a site that blocks direct browser access, such as a blog or a stock photo host. Those images are now fetched through the app and appear in the export.
115
+ - Fixed imported PDF text losing the space between words when a line changes color or weight mid-sentence, which ran headings like "7 Air purifying house plants" together into "7 Airpurifying".
116
+ - Fixed imported PDF/PowerPoint slide text rendering larger than its original box (often overlapping neighboring text) whenever the source page's physical size didn't match the deck canvas's assumed size — font sizes now scale by the same factor as element positions instead of a fixed point-to-pixel conversion.
117
+ - Fixed decks with many slides loading slowly and rendering incorrectly in the editor. Every slide thumbnail measured its full layout on mount, so a long deck forced hundreds of page reflows at once; off-screen thumbnails now wait until they scroll into view, and the browser skips painting them entirely until then. The hover buttons on each thumbnail also no longer blur what is behind them, which was making the rail flicker and leaving dark patches over the editor.
118
+ - Fixed the deck editor staying covered by the mobile slide-rail dimming overlay after the window was narrowed, which washed the whole editor dark with no way to dismiss it.
119
+
120
+ ## 2026-08-08
121
+
122
+ ### Fixed
123
+
124
+ - Google Slides export now tells you why a deck fell back to a .pptx download instead of reporting success.
125
+
126
+ ## 2026-08-07
127
+
128
+ ### Fixed
129
+
130
+ - Deleting a deck no longer freezes the Slides browser
131
+ - Fixed generated slides briefly disappearing while they are being created
132
+ - Slide previews and Present now keep deck colors consistent
133
+ - Slides verify generated images are persisted on the target slide
134
+
135
+ ## 2026-08-06
136
+
137
+ ### Added
138
+
139
+ - Import PDF, Google Slides, and PowerPoint decks directly from the new deck prompt.
140
+
141
+ ### Improved
142
+
143
+ - Deck thumbnails keep a consistent listing frame across aspect ratios.
144
+ - Google Slides exports now show clear import steps when direct Drive export is unavailable.
145
+ - Presentation prompts continue adding rendered slides until the requested outline is complete.
146
+ - Slides offers a direct Connect Google button when a Drive connection is needed.
147
+ - Slides preserve uploaded PDF layouts, accept larger reference files, and explain Google connection failures more clearly.
148
+
149
+ ### Fixed
150
+
151
+ - Clicking the gray canvas around a slide clears its selection
152
+ - Deep-linked decks open directly instead of being interrupted by first-run onboarding.
153
+ - Imported PowerPoint exports keep text and images editable and ignore malformed grid metadata.
154
+ - Public decks now share read-only presentation links by default.
155
+ - Styled words stay part of their text box instead of becoming separate selectable objects
156
+ - Uploaded decks keep their slides and visuals when you improve and export them
157
+
158
+ ## 2026-08-05
159
+
160
+ ### Improved
161
+
162
+ - Deck browsing keeps All and Mine in the header with a tighter grid layout.
163
+ - Decks are now sorted by most recently updated
164
+ - New deck creation now flows through a clean full-screen reference step
165
+ - New presentation prompts now clearly describe presentation generation
166
+ - Website imports now include linked stylesheets for more accurate brand colors and fonts
167
+ - Website URL imports now capture hydrated browser-computed styles for more faithful deck themes.
168
+
169
+ ### Fixed
170
+
171
+ - Failed deck creation and reference uploads now recover cleanly instead of leaving stuck drafts
172
+ - Slides recover completed generation results after a sync hiccup, and the agent prompt stays readable.
173
+
174
+ ## 2026-08-04
175
+
176
+ ### Added
177
+
178
+ - Bullet and numbered list buttons in the slide toolbar convert a text box to a real list
179
+ - Italic and underline are now one click away in the slide toolbar, without entering text edit mode
180
+
181
+ ## 2026-08-03
182
+
183
+ ### Improved
184
+
185
+ - Legacy slide outlines now prefer the lowest-cost Luna model when Builder is connected.
186
+ - Preview slide HTML while it is being generated
187
+
188
+ ### Fixed
189
+
190
+ - Presenting a deck no longer bounces you back to the deck list when the request fails instead of the deck being missing
191
+
192
+ ### Changed
193
+
194
+ - Colour controls in the slide toolbar are now just the swatch, with no hex code
195
+ beside it. Font weight and text alignment collapsed from four buttons each into
196
+ a single control with a dropdown, and alignment uses standard icons instead of
197
+ words. Undo and redo moved out of the toolbar into the overflow menu, since
198
+ Cmd+Z already covers the common case.
199
+
200
+ ## 2026-08-01
201
+
202
+ ### Added
203
+
204
+ - Get an email when someone comments on or replies in your deck, with a new toggle in Settings
205
+
206
+ ### Improved
207
+
208
+ - Slide styling now appears in a contextual toolbar above the canvas, so the slide keeps its full width while you edit.
209
+ - The slide style side panel is retired; all styling now lives in the contextual toolbar above the canvas.
210
+
211
+ ### Changed
212
+
213
+ - Adding a slide now starts from a `+` at the head of the editor toolbar, next to
214
+ the deck title, instead of a header above the slide thumbnails. The rail itself
215
+ drops that header, tucks the drag handle onto the thumbnail on hover, and is
216
+ narrower — so more slides fit on screen and the canvas gets the width back.
217
+ - The contextual slide toolbar now opens with the actions that never change: add
218
+ slide, undo, redo, and the text-box tool. Undo and redo previously worked only
219
+ through Cmd+Z with no visible control; clicking them commits whatever text you
220
+ are editing first, so nothing you just typed is lost.
221
+
222
+ ## 2026-07-31
223
+
224
+ ### Improved
225
+
226
+ - Design system details now show their source and indexing status while they load with a clean placeholder.
227
+ - Design system setup keeps focus rings visible and uses a simpler dialog title.
228
+ - Skip prompt is now available in the new deck prompt header
229
+ - Slides now detect real text and box overflow across the deck and verify bounded repairs.
230
+ - The Agent Native logo stays visible when the sidebar is collapsed and toggles the sidebar when clicked.
231
+
232
+ ### Fixed
233
+
234
+ - Design-system indexing keeps your chosen name when you upload a Figma file, supports unstar, and shares new organization systems with teammates.
235
+
236
+ ## 2026-07-30
237
+
238
+ ### Added
239
+
240
+ - Freeform objects on a slide can be moved as a group, copied and pasted with Cmd+C/V, duplicated with Cmd+D, and reordered with bring to front and send to back.
241
+
242
+ ### Improved
243
+
244
+ - Drawing, text annotations, and pinned agent comments now use the same robust canvas tools as Design.
245
+ - Slide image generation now runs through the Assets app, so decks use your brand library, presets, and generation history.
246
+ - Slide previews keep their aspect ratio, isolate embedded styles, and remain usable at narrow widths
247
+ - Slide text now edits on first click, switches to movable resize handles with Escape, and uses the same compact styling controls as Design.
248
+ - Top toolbar controls now use consistent sizing, with undo and redo kept on keyboard shortcuts.
249
+
250
+ ### Fixed
251
+
252
+ - Decks now show an editor-shaped loading placeholder instead of briefly appearing unavailable while access loads.
253
+ - Duplicating a deck from the deck list now opens the copy immediately instead of showing a "Deck unavailable" error, and edits made right after duplicating are no longer lost.
254
+ - The slide layout overflow warning is now easy to read and can be dismissed.
255
+ - New decks now start with an empty slide list when no slides are provided
256
+ - Slides no longer lose decks while organization access is loading
257
+ - Style panel now scrolls with speaker notes open and shows the slide background when nothing is selected, and view-only users no longer see slide add/duplicate/delete controls or an editable speaker notes box.
258
+
259
+ ## 2026-07-29
260
+
261
+ ### Added
262
+
263
+ - Google Slides exports can connect your Google account directly from the export menu
264
+
265
+ ### Improved
266
+
267
+ - AI editing status is now quieter and only shows slide presence when it adds useful context.
268
+ - Design systems and reference decks are easier to choose together when creating a presentation.
269
+ - New deck setup now stays in the editor, with closable Style and Comments panels that share the same space
270
+ - Selected words and text runs can now be styled independently, with accurate mixed-style controls.
271
+ - Sidebar footers now keep Feedback, Search, and Collapse together without a separate language shortcut.
272
+ - Slide annotation tools are clearer, and Escape now exits annotation mode.
273
+ - Slide editing now opens with the app navigation collapsed for more canvas space
274
+ - Slide editing stays visually clean on hover without a canvas outline or instruction overlay.
275
+ - Slides now appear one by one while AI builds a deck, with steadier editing presence and progress.
276
+ - Text boxes now select, move, duplicate, resize, and style like a native slide editor.
277
+ - Untitled decks now show “This Deck” in the agent prompt chip.
278
+
279
+ ### Fixed
280
+
281
+ - Generated decks now receive a concise, relevant title before the first slide is added.
282
+ - New deck prompts reuse the current chat when it is still completely empty.
283
+
284
+ ## 2026-07-28
285
+
286
+ ### Added
287
+
288
+ - Delete a design system you own from the Design Systems page; decks that used it keep their look and are simply unlinked.
289
+ - Pick an existing deck as a style reference when creating a new one, and star the decks you reuse most.
290
+ - Presenter view: open a second window while presenting to see speaker notes, the next slide, and a timer, with both windows kept in sync.
291
+
292
+ ### Improved
293
+
294
+ - Export to Google Slides now creates the deck directly in your Google Drive when your Google account is connected, instead of only downloading a PPTX to import by hand.
295
+
296
+ ### Fixed
297
+
298
+ - Opening a presentation link directly no longer bounces back to the deck list.
299
+
300
+ ## 2026-07-26
301
+
302
+ ### Fixed
303
+
304
+ - A newly created deck now appears in the deck list right away instead of leaving the "Create your first deck" empty state until a reload.
305
+
306
+ ## 2026-07-25
307
+
308
+ ### Improved
309
+
310
+ - App branding now uses the product name without the Agent-Native prefix.
311
+ - Settings navigation now keeps Manage agent as a dedicated linked destination at the bottom.
312
+
313
+ ### Fixed
314
+
315
+ - AI image generation uses the current Gemini image models.
316
+ - PDF imports keep extracting text when native canvas bindings are unavailable.
317
+
318
+ ## 2026-07-24
319
+
320
+ ### Added
321
+
322
+ - Typing a markdown-style dash-space at the start of a text block now converts it into an editable bullet list
323
+
324
+ ### Improved
325
+
326
+ - Secondary controls and dashboard surfaces now use quieter borderless styling.
327
+ - Sidebar utility controls now follow a consistent footer order.
328
+
329
+ ## 2026-07-23
330
+
331
+ ### Fixed
332
+
333
+ - Full prompts stay visible in chat when creating decks or adding slides.
334
+ - New bullet rows created with Enter now keep the list item's font size instead of shrinking to the base font
335
+ - Opening or refining a deck no longer crashes with a blank error screen when the deck has an unrecognized aspect ratio
336
+ - Pressing Enter in generated checkbox/shape-marker lists now creates a new list item
337
+
338
+ ## 2026-07-22
339
+
340
+ ### Improved
341
+
342
+ - Manage agent navigation now uses the connected-nodes icon.
343
+
344
+ ### Fixed
345
+
346
+ - New deck prompts now open in their own visible chat thread.
347
+ - Slides no longer fail intermittently on fresh server instances.
348
+ - Uploaded screenshots can now be analyzed and recreated as editable slides.
349
+
350
+ ## 2026-07-21
351
+
352
+ ### Fixed
353
+
354
+ - Decks list now refreshes when you switch organizations
355
+
356
+ ## 2026-07-17
357
+
358
+ ### Added
359
+
360
+ - Resources can be added to Creative Context from their action menus.
361
+ - You can add exact, approved artifact versions to governed Creative Contexts for safe reuse.
362
+
363
+ ### Improved
364
+
365
+ - Library now flags published decks with newer versions and lets you submit the update in place.
366
+
367
+ ### Fixed
368
+
369
+ - Duplicated slides now stay in the deck after the editor saves the change.
370
+ - PDF and PowerPoint imports now work reliably in hosted decks
371
+ - The agent chat sidebar stays closed until you open it or start a chat handoff.
372
+
373
+ ## 2026-07-16
374
+
375
+ ### Added
376
+
377
+ - The Agent workspace now includes a Library for reusing verified creative context and choosing when it applies to presentations.
378
+ - Google Slides references can now be cloned as editable slides with their original layout, text, shapes, tables, and images intact.
379
+
380
+ ## 2026-07-15
381
+
382
+ ### Fixed
383
+
384
+ - Image search and generation controls now use the registered Slides actions
385
+ - PDF deck references can be imported for slide inspiration again
386
+ - The slide Style inspector now stays in a stable dock while selecting and editing elements, so the canvas no longer jumps or changes zoom.
387
+
388
+ ## 2026-07-14
389
+
390
+ ### Fixed
391
+
392
+ - PowerPoint template uploads now work in hosted Slides deployments.
393
+
394
+ ## 2026-07-13
395
+
396
+ ### Added
397
+
398
+ - New Agent page: see and manage your agent's context, files, connections, jobs, and external access in one place
399
+
400
+ ## 2026-07-11
401
+
402
+ ### Added
403
+
404
+ - The assistant can now resolve, reopen, and delete slide comments
405
+
406
+ ### Improved
407
+
408
+ - Comment pins now clear with a faster, smoother confirmation after they are sent.
409
+ - Comments now update from live collaboration events without continuous background requests
410
+ - Editor toggles and toolbar menus now animate smoothly
411
+ - Viewing slides no longer loads every deck's full contents in the background
412
+
413
+ ### Fixed
414
+
415
+ - Comment load failures now show a retry action instead of saying there are no comments.
416
+ - Deck and design system load failures now show a retry action instead of an empty collection.
417
+
418
+ ## 2026-07-10
419
+
420
+ ### Improved
421
+
422
+ - Deck lists load much faster and no longer re-download slide content in the background
423
+
424
+ ## 2026-07-09
425
+
426
+ ### Fixed
427
+
428
+ - Fixed the slide rail going permanently stale during a long agent run if the live-update connection dropped, so new slides now show up without needing a page reload
429
+
430
+ ## 2026-07-08
431
+
432
+ ### Improved
433
+
434
+ - Settings are cleaner and searchable, with a consistent navigation that jumps straight to any setting.
435
+
436
+ ### Fixed
437
+
438
+ - Deck generation now follows hydrated Builder design-system guidance before adding slides.
439
+ - Dropping an image onto a slide and sending it to the agent works even when Builder.io storage isn't connected yet
440
+ - Generated slide images now return hosted file-storage URLs instead of inline data URLs.
441
+ - Undo works after the agent edits a slide, so you can reverse chat-driven changes from the toolbar
442
+
443
+ ## 2026-07-06
444
+
445
+ ### Fixed
446
+
447
+ - Mobile layouts no longer stack a desktop header under the navigation bar.
448
+
449
+ ## 2026-07-03
450
+
451
+ ### Added
452
+
453
+ - See the AI working with you: when the agent edits a slide it now shows up as a live collaborator with a presence avatar, an editing indicator, and a highlight on what it just changed
454
+
455
+ ### Improved
456
+
457
+ - Design system setup now indexes Figma, code, and design.md sources through Builder DSI.
458
+ - Slide editing is cleaner and more Figma-like, with direct style controls for selected elements.
459
+ - Slide editing now keeps thumbnails, speaker notes, styling, and the canvas in stable resizable panes with cleaner top controls.
460
+ - Undo/redo is now precise and safe with collaborators: it only reverts your own changes, never a teammate's or the AI's, and unsaved edits flush when you close the tab
461
+
462
+ ## 2026-06-30
463
+
464
+ ### Fixed
465
+
466
+ - Deck thumbnails collapse cleanly to one column when the chat pane narrows the deck list.
467
+ - PowerPoint downloads now keep slide text editable while preserving the rendered layout for Google Slides imports.
468
+ - Unavailable decks open in a cleaner full-height centered state.
469
+
470
+ ## 2026-06-29
471
+
472
+ ### Improved
473
+
474
+ - Design system setup now indexes uploaded design files through Builder.
475
+ - Slide layouts adapt when the agent sidebar is open.
476
+
477
+ ### Fixed
478
+
479
+ - Hosted deck generation and editing chats have a longer background run window, reducing timeouts during complex creative turns.
480
+
481
+ ## 2026-06-28
482
+
483
+ ### Improved
484
+
485
+ - Left sidebar collapse motion and footer controls now feel smoother and use less divider chrome.
486
+
487
+ ## 2026-06-27
488
+
489
+ ### Improved
490
+
491
+ - Improved mobile navigation chrome and sidebar drawer motion.
492
+
493
+ ### Fixed
494
+
495
+ - Traditional Chinese copy now uses Taiwan terminology and clearer technical wording.
496
+
497
+ ## 2026-06-26
498
+
499
+ ### Fixed
500
+
501
+ - Deck links now use the workspace gateway when available so generated workspace URLs open correctly.
502
+
503
+ ## 2026-06-25
504
+
505
+ ### Fixed
506
+
507
+ - Read-only decks no longer show editable hover or image replacement cues.
508
+
509
+ ## 2026-06-24
510
+
511
+ ### Added
512
+
513
+ - A new Settings page gives quick access to language, workspace, and agent preferences.
514
+ - Added a language picker and localized app chrome for supported languages.
515
+
516
+ For the full list of updates, see the [changelog folder](./changelog/).
@@ -2,8 +2,6 @@
2
2
 
3
3
  All notable user-facing changes to this app are documented here.
4
4
 
5
- Older updates live in [the changelog folder](./changelog/) and are included in the in-app "What's new" view.
6
-
7
5
  ## 2026-08-11
8
6
 
9
7
  ### Fixed
@@ -33,3 +31,35 @@ Older updates live in [the changelog folder](./changelog/) and are included in t
33
31
  ### Improved
34
32
 
35
33
  - Secondary controls and dashboard surfaces now use quieter borderless styling.
34
+
35
+ ## 2026-07-23
36
+
37
+ ### Added
38
+
39
+ - Task detail panels can now host installed extension widgets.
40
+
41
+ ## 2026-07-22
42
+
43
+ ### Improved
44
+
45
+ - The sidebar footer now keeps Feedback and the collapse control on one compact row.
46
+
47
+ ## 2026-07-20
48
+
49
+ ### Added
50
+
51
+ - Tasks is now available in 10 additional languages
52
+
53
+ ## 2026-07-18
54
+
55
+ ### Added
56
+
57
+ - Task lists can now appear as interactive widgets inline in chat without leaving the current page.
58
+
59
+ ## 2026-07-17
60
+
61
+ ### Fixed
62
+
63
+ - The agent chat sidebar stays closed until you open it.
64
+
65
+ For the full list of updates, see the [changelog folder](./changelog/).
@@ -34,8 +34,8 @@ export interface PendingChangelogEntry {
34
34
  text: string;
35
35
  }
36
36
  export type ChangelogChangeType = "added" | "improved" | "fixed" | "changed" | "removed" | "security";
37
- export declare const DEFAULT_CHANGELOG_RELEASE_LIMIT = 5;
38
- export declare const CHANGELOG_ARCHIVE_NOTE = "Older updates live in [the changelog folder](./changelog/) and are included in the in-app \"What's new\" view.";
37
+ export declare const DEFAULT_CHANGELOG_RELEASE_LIMIT = 100;
38
+ export declare const CHANGELOG_ARCHIVE_NOTE = "For the full list of updates, see the [changelog folder](./changelog/).";
39
39
  /**
40
40
  * Order changes are grouped under a release heading. Anything not listed here
41
41
  * falls back to the "changed" group, then renders in insertion order.
@@ -78,7 +78,7 @@ export declare function rollupChangelog(existing: string, pending: PendingChange
78
78
  */
79
79
  export declare function mergePendingChangelog(existing: string, pending: PendingChangelogEntry[]): string;
80
80
  /**
81
- * Keep a short, human-readable release window in `CHANGELOG.md` while the
81
+ * Keep a bounded, human-readable release window in `CHANGELOG.md` while the
82
82
  * dated `changelog/*.md` files remain the complete source for app history.
83
83
  * The Vite raw-import path can still expand the full folder-backed history.
84
84
  */
@@ -11,8 +11,9 @@
11
11
  * markdown shape is the conventional "Keep a Changelog" layout — a top-level
12
12
  * `# Changelog` heading followed by one `## <release>` section per release.
13
13
  */
14
- export const DEFAULT_CHANGELOG_RELEASE_LIMIT = 5;
15
- export const CHANGELOG_ARCHIVE_NOTE = 'Older updates live in [the changelog folder](./changelog/) and are included in the in-app "What\'s new" view.';
14
+ export const DEFAULT_CHANGELOG_RELEASE_LIMIT = 100;
15
+ export const CHANGELOG_ARCHIVE_NOTE = "For the full list of updates, see the [changelog folder](./changelog/).";
16
+ const LEGACY_CHANGELOG_ARCHIVE_NOTE = 'Older updates live in [the changelog folder](./changelog/) and are included in the in-app "What\'s new" view.';
16
17
  /**
17
18
  * Order changes are grouped under a release heading. Anything not listed here
18
19
  * falls back to the "changed" group, then renders in insertion order.
@@ -34,6 +35,9 @@ const GROUP_LABELS = {
34
35
  security: "Security",
35
36
  };
36
37
  const ISO_DATE = /(\d{4}-\d{2}-\d{2})/;
38
+ function cleanChangelogBody(value) {
39
+ return value.trim();
40
+ }
37
41
  /** Lowercase, hyphenate, and strip to a URL/id-safe slug. */
38
42
  export function changelogSlug(value) {
39
43
  return value
@@ -154,7 +158,7 @@ export function parsePendingEntry(content, fallbackDate) {
154
158
  export function renderReleaseBody(entries) {
155
159
  const groups = new Map();
156
160
  for (const entry of entries) {
157
- const text = entry.text.trim();
161
+ const text = cleanChangelogBody(entry.text);
158
162
  if (!text)
159
163
  continue;
160
164
  const bullet = text.includes("\n")
@@ -206,6 +210,13 @@ function changelogHeader(markdown) {
206
210
  const header = (firstRelease === -1 ? doc : doc.slice(0, firstRelease)).replace(/\s+$/, "") || CHANGELOG_HEADER.trim();
207
211
  return header;
208
212
  }
213
+ function stripChangelogArchiveNotes(markdown) {
214
+ return markdown
215
+ .replace(CHANGELOG_ARCHIVE_NOTE, "")
216
+ .replace(LEGACY_CHANGELOG_ARCHIVE_NOTE, "")
217
+ .replace(/\n{3,}/g, "\n\n")
218
+ .replace(/\s+$/, "");
219
+ }
209
220
  function pendingSectionTitle(entry) {
210
221
  return entry.date?.match(ISO_DATE)?.[1] ?? "Unreleased";
211
222
  }
@@ -233,7 +244,8 @@ function normalizedChangelogText(value) {
233
244
  * without moving or deleting the conflict-free entry files.
234
245
  */
235
246
  export function mergePendingChangelog(existing, pending) {
236
- const existingEntries = parseChangelog(existing);
247
+ const cleanExisting = stripChangelogArchiveNotes(existing);
248
+ const existingEntries = parseChangelog(cleanExisting);
237
249
  const pendingWithText = pending.filter((entry) => {
238
250
  const text = entry.text.trim();
239
251
  if (!text)
@@ -247,8 +259,12 @@ export function mergePendingChangelog(existing, pending) {
247
259
  return normalizedChangelogText(existingEntry.body).includes(normalizedChangelogText(text));
248
260
  });
249
261
  });
250
- if (pendingWithText.length === 0)
251
- return existing || CHANGELOG_HEADER;
262
+ if (pendingWithText.length === 0) {
263
+ const sections = existingEntries
264
+ .map((entry) => `## ${entry.title}\n\n${cleanChangelogBody(entry.body)}`)
265
+ .join("\n\n");
266
+ return `${changelogHeader(cleanExisting)}${sections ? `\n\n${sections}` : ""}\n\n${CHANGELOG_ARCHIVE_NOTE}\n`;
267
+ }
252
268
  const pendingByTitle = new Map();
253
269
  for (const entry of pendingWithText) {
254
270
  const title = pendingSectionTitle(entry);
@@ -257,7 +273,7 @@ export function mergePendingChangelog(existing, pending) {
257
273
  const sections = existingEntries.map((entry) => ({
258
274
  title: entry.title,
259
275
  date: entry.date,
260
- body: entry.body,
276
+ body: cleanChangelogBody(entry.body),
261
277
  }));
262
278
  for (const title of [...pendingByTitle.keys()].sort(pendingSectionSort)) {
263
279
  const body = renderReleaseBody(pendingByTitle.get(title) ?? []);
@@ -267,7 +283,10 @@ export function mergePendingChangelog(existing, pending) {
267
283
  return entry.date === title || entry.title === title;
268
284
  });
269
285
  if (existingIndex !== -1) {
270
- sections[existingIndex].body = [body, sections[existingIndex].body]
286
+ sections[existingIndex].body = [
287
+ body,
288
+ cleanChangelogBody(sections[existingIndex].body),
289
+ ]
271
290
  .filter(Boolean)
272
291
  .join("\n\n");
273
292
  continue;
@@ -278,26 +297,26 @@ export function mergePendingChangelog(existing, pending) {
278
297
  : 0;
279
298
  sections.splice(insertAt === -1 ? sections.length : insertAt, 0, newSection);
280
299
  }
281
- return `${changelogHeader(existing)}\n\n${sections
282
- .map((entry) => `## ${entry.title}\n\n${entry.body}`)
283
- .join("\n\n")}\n`;
300
+ return `${changelogHeader(cleanExisting)}\n\n${sections
301
+ .map((entry) => `## ${entry.title}\n\n${cleanChangelogBody(entry.body)}`)
302
+ .join("\n\n")}\n\n${CHANGELOG_ARCHIVE_NOTE}\n`;
284
303
  }
285
304
  /**
286
- * Keep a short, human-readable release window in `CHANGELOG.md` while the
305
+ * Keep a bounded, human-readable release window in `CHANGELOG.md` while the
287
306
  * dated `changelog/*.md` files remain the complete source for app history.
288
307
  * The Vite raw-import path can still expand the full folder-backed history.
289
308
  */
290
309
  export function compactChangelog(existing, folderEntries, releaseLimit = DEFAULT_CHANGELOG_RELEASE_LIMIT) {
291
310
  const merged = mergePendingChangelog(existing, folderEntries);
292
- const entries = parseChangelog(merged).slice(0, Math.max(1, releaseLimit));
293
- const header = changelogHeader(merged)
294
- .replace(CHANGELOG_ARCHIVE_NOTE, "")
311
+ const cleanMerged = stripChangelogArchiveNotes(merged);
312
+ const entries = parseChangelog(cleanMerged).slice(0, Math.max(1, releaseLimit));
313
+ const header = changelogHeader(cleanMerged)
295
314
  .replace(/\n{3,}/g, "\n\n")
296
315
  .trim();
297
316
  const sections = entries.map((entry) => `## ${entry.title}\n\n${entry.body}`);
298
317
  if (sections.length === 0) {
299
318
  return `${header || CHANGELOG_HEADER.trim()}\n\n${CHANGELOG_ARCHIVE_NOTE}\n`;
300
319
  }
301
- return `${header || CHANGELOG_HEADER.trim()}\n\n${CHANGELOG_ARCHIVE_NOTE}\n\n${sections.join("\n\n")}\n`;
320
+ return `${header || CHANGELOG_HEADER.trim()}\n\n${sections.join("\n\n")}\n\n${CHANGELOG_ARCHIVE_NOTE}\n`;
302
321
  }
303
322
  export { CHANGELOG_HEADER, GROUP_LABELS };
@@ -63,7 +63,7 @@ function HtmlDiagram({ data, ctx, compact, }) {
63
63
  ? scopeDesignCss(safeCss, `[data-plan-diagram-scope="${scopeId}"]`)
64
64
  : "";
65
65
  }, [data.css, scopeId]);
66
- return (_jsxs("div", { ref: ref, className: cn("plan-diagram-shell", compact && "plan-diagram-compact"), children: [_jsxs("div", { className: "plan-diagram-frame", dir: ctx.textDirection, "data-theme": isDark ? "dark" : "light", "data-style": style, "data-frame": showFrame ? "show" : "hide", "data-text-direction": ctx.textDirection, "data-plan-diagram-scope": scopeId, children: [scopedCss && _jsx("style", { children: scopedCss }), _jsx("div", { className: "plan-diagram-frame-content", dangerouslySetInnerHTML: { __html: safeHtml } })] }), _jsx(RoughOverlay, { scopeRef: ref, enabled: !designMode && style === "sketchy", drawFrame: showFrame, selector: DIAGRAM_ROUGH_SELECTOR }), data.caption && !compact && (_jsx("p", { className: "mt-3 text-sm leading-6 text-muted-foreground", children: data.caption }))] }));
66
+ return (_jsxs("div", { ref: ref, className: cn("plan-diagram-shell", compact && "plan-diagram-compact"), children: [_jsxs("div", { className: "plan-diagram-frame", dir: ctx.textDirection, "data-theme": isDark ? "dark" : "light", "data-style": style, "data-frame": showFrame ? "show" : "hide", "data-text-direction": ctx.textDirection, "data-plan-diagram-scope": scopeId, children: [scopedCss && _jsx("style", { children: scopedCss }), _jsx("div", { className: "plan-diagram-frame-content", "data-theme": isDark ? "dark" : "light", dangerouslySetInnerHTML: { __html: safeHtml } })] }), _jsx(RoughOverlay, { scopeRef: ref, enabled: !designMode && style === "sketchy", drawFrame: showFrame, selector: DIAGRAM_ROUGH_SELECTOR }), data.caption && !compact && (_jsx("p", { className: "mt-3 text-sm leading-6 text-muted-foreground", children: data.caption }))] }));
67
67
  }
68
68
  function resolveVisualFrame(frame, ctx) {
69
69
  const resolved = frame && frame !== "auto" ? frame : (ctx.visualFrame ?? "show");
@@ -26,8 +26,8 @@ export declare const getCollabState: import("h3").EventHandlerWithFetch<import("
26
26
  * Body: { update: string (base64), requestSource?: string }
27
27
  */
28
28
  export declare const postCollabUpdate: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
29
- ok?: undefined;
30
29
  error: string;
30
+ ok?: undefined;
31
31
  } | {
32
32
  error?: undefined;
33
33
  ok: boolean;
@@ -13,8 +13,8 @@
13
13
  * Body: { json: any, fieldName?: string, type?: "map"|"array", requestSource?: string }
14
14
  */
15
15
  export declare const postCollabJson: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
16
- error: string;
17
16
  ok?: undefined;
17
+ error: string;
18
18
  } | {
19
19
  error?: undefined;
20
20
  ok: boolean;