@agent-native/core-corpus 0.222.2-nightly-20261029182928 → 0.222.2

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 (27) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/templates/clips/CHANGELOG.md +7 -10
  3. package/corpus/templates/content/CHANGELOG.md +4 -0
  4. package/corpus/templates/content/app/components/ContentErrorBoundary.tsx +50 -0
  5. package/corpus/templates/content/app/root.tsx +1 -50
  6. package/corpus/templates/content/app/routes/p.$id.tsx +29 -4
  7. package/corpus/templates/content/changelog/2026-10-27-edits-to-a-public-page-reach-its-readers-within-a-minute-and.md +6 -0
  8. package/corpus/templates/design/CHANGELOG.md +1 -0
  9. package/corpus/templates/slides/CHANGELOG.md +6 -0
  10. package/package.json +1 -1
  11. package/corpus/templates/analytics/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  12. package/corpus/templates/assets/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  13. package/corpus/templates/brain/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  14. package/corpus/templates/calendar/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  15. package/corpus/templates/chat/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  16. package/corpus/templates/clips/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  17. package/corpus/templates/content/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  18. package/corpus/templates/crm/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  19. package/corpus/templates/design/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  20. package/corpus/templates/design/.generated/bridge/native-builtin-metadata.generated.ts +0 -326
  21. package/corpus/templates/design/.generated/bridge/native-worker-source.generated.ts +0 -6
  22. package/corpus/templates/dispatch/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  23. package/corpus/templates/forms/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  24. package/corpus/templates/mail/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  25. package/corpus/templates/plan/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  26. package/corpus/templates/slides/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
  27. package/corpus/templates/slides-2/.deploy-tmp/agent-native-provided-plugins.mjs +0 -10
package/corpus/README.md CHANGED
@@ -32,4 +32,4 @@ rg -n "defineAction|useActionQuery" node_modules/@agent-native/core-corpus/corpu
32
32
 
33
33
  ## Generated Counts
34
34
 
35
- - template files: 15141
35
+ - template files: 15090
@@ -3,6 +3,12 @@
3
3
  All notable user-facing changes to Clips 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-10-29
7
+
8
+ ### Changed
9
+
10
+ - Screenshots are available when enabled in Labs.
11
+
6
12
  ## 2026-10-28
7
13
 
8
14
  ### Improved
@@ -13,6 +19,7 @@ from the command menu (Cmd+K → "What's new") or from Settings.
13
19
 
14
20
  ### Fixed
15
21
 
22
+ - Fixed the Share → Advanced popover so the Save buttons fit and the password toggle matches other switches
16
23
  - Clips desktop preserves your server choice across updates and reconnects after temporary sign-in outages.
17
24
  - Recording chapters remain reachable when the list extends below the player.
18
25
  - The Chrome extension recorder has more room and a clearer feedback link.
@@ -1600,14 +1607,4 @@ from the command menu (Cmd+K → "What's new") or from Settings.
1600
1607
 
1601
1608
  - Mobile recording pages keep videos in a 16:9 player with activity below.
1602
1609
 
1603
- ## 2026-07-02
1604
-
1605
- ### Added
1606
-
1607
- - Private recordings can be shared with agents through temporary links without making them public.
1608
-
1609
- ### Fixed
1610
-
1611
- - Recordings now wait for uploaded media to play from storage before finishing, and playback falls back when a compressed storage copy is temporarily broken.
1612
-
1613
1610
  For the full list of updates, see the [changelog folder](./changelog/).
@@ -18,10 +18,13 @@ time from the command menu (Cmd+K → "What's new").
18
18
 
19
19
  ### Improved
20
20
 
21
+ - A public page's link opens a read-only copy for people who aren't signed in, instead of asking them to sign in
21
22
  - An AI suggestion in a comment thread uses the same group as suggested changes in the margin: its summary, edit count, Accept all and Reject all come first, and opening it shows each edit with the usual check and X.
22
23
 
23
24
  ### Fixed
24
25
 
26
+ - Edits to a public page reach its readers within a minute, and making it private or moving it to Trash takes it down just as fast
27
+ - Two collections connected to the same Builder model can no longer push over each other's changes to the same entry at the same moment.
25
28
  - Restoring page history preserves text without exposing unauthorized private callout images
26
29
  - An agent's Accept on words someone is still typing in returns the suggestion to pending instead of failing with a server error
27
30
  - Opening a page you can't access goes straight to the no-access screen without a brief error first, including when you come back to it
@@ -97,6 +100,7 @@ time from the command menu (Cmd+K → "What's new").
97
100
 
98
101
  ### Improved
99
102
 
103
+ - Shareable local-file copies open inline with document editing and sharing controls in compatible agent hosts.
100
104
  - Approval links from a connected agent, such as Claude Code, now open the review inside the app, in its own theme.
101
105
  - Tables get Header row, Header column and Fit to width in their block menu, colours for rows and columns, and menus that close the moment you press Escape.
102
106
  - The block menu turns a block into another kind, colours it and comments on it, filters as you type, and shows each action’s shortcut. It says why a locked block can’t be duplicated or deleted, and a click beside the page lets go of a selected block.
@@ -0,0 +1,50 @@
1
+ import { appPath } from "@agent-native/core/client/api-path";
2
+ import { ErrorReportActions } from "@agent-native/toolkit/app/feedback";
3
+ import { isRouteErrorResponse, useRouteError } from "react-router";
4
+
5
+ export function ContentErrorBoundaryBody() {
6
+ const error = useRouteError();
7
+ let title = "Something went wrong";
8
+ let details = "An unexpected error occurred.";
9
+
10
+ if (isRouteErrorResponse(error)) {
11
+ if (error.status === 404) {
12
+ title = "Page not found";
13
+ details = "We couldn't find this page.";
14
+ } else {
15
+ title = `${error.status} Error`;
16
+ details = error.statusText || details;
17
+ }
18
+ } else if (error instanceof Error && error.message) {
19
+ details = error.message;
20
+ } else if (typeof error === "string" && error) {
21
+ details = error;
22
+ }
23
+
24
+ if (typeof console !== "undefined" && error) {
25
+ console.error("[ContentErrorBoundary]", error);
26
+ }
27
+
28
+ return (
29
+ <main className="flex min-h-screen items-center justify-center bg-background p-4 text-foreground">
30
+ <div className="flex max-w-md flex-col items-center text-center">
31
+ <h1 className="text-2xl font-semibold">{title}</h1>
32
+ <p className="mt-2 text-sm text-muted-foreground">{details}</p>
33
+ <a
34
+ href={appPath("/page")}
35
+ className="mt-6 inline-flex cursor-pointer items-center gap-1.5 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm hover:bg-primary/90"
36
+ >
37
+ Go to page list
38
+ </a>
39
+ <ErrorReportActions
40
+ appName="Content"
41
+ title={title}
42
+ details={details}
43
+ issueTitle={`Content error: ${title}`}
44
+ className="mt-4"
45
+ align="center"
46
+ />
47
+ </div>
48
+ </main>
49
+ );
50
+ }
@@ -11,7 +11,6 @@ import {
11
11
  } from "@agent-native/core/client/i18n";
12
12
  import { getThemeInitScript } from "@agent-native/core/client/ui";
13
13
  import { resolveLocaleFromRequest } from "@agent-native/core/server";
14
- import { ErrorReportActions } from "@agent-native/toolkit/app/feedback";
15
14
  import { AppProviders } from "@agent-native/toolkit/app/providers";
16
15
  import { useCommandMenuShortcut } from "@agent-native/toolkit/app/shared";
17
16
  import { CommandMenu } from "@agent-native/toolkit/app/shared";
@@ -38,12 +37,10 @@ import {
38
37
  Outlet,
39
38
  Scripts,
40
39
  ScrollRestoration,
41
- isRouteErrorResponse,
42
40
  useLoaderData,
43
41
  useLocation,
44
42
  useNavigate,
45
43
  useRouteLoaderData,
46
- useRouteError,
47
44
  } from "react-router";
48
45
  import type {
49
46
  LinksFunction,
@@ -57,6 +54,7 @@ import { AppToolkitProvider } from "@/components/ui/toolkit-provider";
57
54
 
58
55
  import changelog from "../CHANGELOG.md?raw";
59
56
  import { ContentCommandSearchResults } from "./components/ContentCommandSearch";
57
+ import { ContentErrorBoundaryBody } from "./components/ContentErrorBoundary";
60
58
  import { CONTENT_STARTUP_SIDEBAR_SCRIPT } from "./components/layout/content-layout";
61
59
  import { ContentStartupShell } from "./components/layout/ContentStartupShell";
62
60
  import { LocalFolderLiveSync } from "./components/LocalFolderLiveSync";
@@ -546,53 +544,6 @@ export default function Root() {
546
544
  );
547
545
  }
548
546
 
549
- function ContentErrorBoundaryBody() {
550
- const error = useRouteError();
551
- let title = "Something went wrong";
552
- let details = "An unexpected error occurred.";
553
-
554
- if (isRouteErrorResponse(error)) {
555
- if (error.status === 404) {
556
- title = "Page not found";
557
- details = "We couldn't find this page.";
558
- } else {
559
- title = `${error.status} Error`;
560
- details = error.statusText || details;
561
- }
562
- } else if (error instanceof Error && error.message) {
563
- details = error.message;
564
- } else if (typeof error === "string" && error) {
565
- details = error;
566
- }
567
-
568
- if (typeof console !== "undefined" && error) {
569
- console.error("[ContentErrorBoundary]", error);
570
- }
571
-
572
- return (
573
- <main className="flex min-h-screen items-center justify-center bg-background p-4 text-foreground">
574
- <div className="flex max-w-md flex-col items-center text-center">
575
- <h1 className="text-2xl font-semibold">{title}</h1>
576
- <p className="mt-2 text-sm text-muted-foreground">{details}</p>
577
- <a
578
- href={appPath("/page")}
579
- className="mt-6 inline-flex cursor-pointer items-center gap-1.5 rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground shadow-sm hover:bg-primary/90"
580
- >
581
- Go to page list
582
- </a>
583
- <ErrorReportActions
584
- appName="Content"
585
- title={title}
586
- details={details}
587
- issueTitle={`Content error: ${title}`}
588
- className="mt-4"
589
- align="center"
590
- />
591
- </div>
592
- </main>
593
- );
594
- }
595
-
596
547
  export function ErrorBoundary() {
597
548
  return <ContentErrorBoundaryBody />;
598
549
  }
@@ -11,6 +11,7 @@ import {
11
11
  } from "@agent-native/core/server";
12
12
  import {
13
13
  AGENT_READABLE_RESOURCE_SCRIPT_TYPE,
14
+ SSR_MAX_AGE_HEADER,
14
15
  SSR_QUERY_CACHE_KEY_HEADER,
15
16
  buildResourceSocialMeta,
16
17
  safeJsonForHtml,
@@ -35,6 +36,7 @@ import type {
35
36
  import { data, redirect, useLoaderData } from "react-router";
36
37
 
37
38
  import { publicContentBlockRegistry } from "@/blocks/publicBlockRegistry";
39
+ import { ContentErrorBoundaryBody } from "@/components/ContentErrorBoundary";
38
40
  import { clipShareUrl } from "@/components/editor/clip-embed/use-clips-links";
39
41
  import { VisualEditor } from "@/components/editor/VisualEditor";
40
42
  import {
@@ -77,24 +79,47 @@ type PublicDocumentLoaderData =
77
79
  unavailable: { reason: "private"; id: string; basePath: string };
78
80
  };
79
81
 
82
+ // A public page can be edited, made private or moved to Trash at any moment,
83
+ // and every answer here is cached for all visitors, so none is kept longer
84
+ // than this. Readers see a change within twice this, well under a minute.
85
+ export const PUBLIC_DOCUMENT_CACHE_SECONDS = 20;
86
+
87
+ const PUBLIC_DOCUMENT_HEADERS = {
88
+ [SSR_MAX_AGE_HEADER]: String(PUBLIC_DOCUMENT_CACHE_SECONDS),
89
+ };
90
+
80
91
  const PRIVATE_AGENT_DOCUMENT_HEADERS = {
81
92
  "Cache-Control": "private, max-age=0, no-store",
82
93
  "Referrer-Policy": "no-referrer",
83
94
  [SSR_QUERY_CACHE_KEY_HEADER]: "query",
95
+ [SSR_MAX_AGE_HEADER]: "0",
84
96
  };
85
97
 
86
98
  function publicDocumentLoaderData(
87
99
  payload: PublicDocumentLoaderData,
88
100
  privateAgentAccess = false,
89
101
  ) {
90
- if (!privateAgentAccess) return payload;
91
102
  return data(payload, {
92
- headers: PRIVATE_AGENT_DOCUMENT_HEADERS,
103
+ headers: privateAgentAccess
104
+ ? PRIVATE_AGENT_DOCUMENT_HEADERS
105
+ : PUBLIC_DOCUMENT_HEADERS,
93
106
  });
94
107
  }
95
108
 
96
- export function headers({ loaderHeaders }: HeadersArgs) {
97
- return loaderHeaders;
109
+ // Every answer keeps the short window, including a thrown not-found, which
110
+ // arrives here as errorHeaders; an answer that asked for less keeps its own.
111
+ export function headers({ loaderHeaders, errorHeaders }: HeadersArgs) {
112
+ const answer = new Headers(errorHeaders ?? loaderHeaders);
113
+ if (!answer.has(SSR_MAX_AGE_HEADER)) {
114
+ answer.set(SSR_MAX_AGE_HEADER, String(PUBLIC_DOCUMENT_CACHE_SECONDS));
115
+ }
116
+ return answer;
117
+ }
118
+
119
+ // React Router calls only the catching route's headers for a thrown answer,
120
+ // so this route catches its own not-found to keep the short cache window.
121
+ export function ErrorBoundary() {
122
+ return <ContentErrorBoundaryBody />;
98
123
  }
99
124
 
100
125
  export async function loader({ params, request }: LoaderFunctionArgs) {
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-10-27
4
+ ---
5
+
6
+ Edits to a public page reach its readers within a minute, and making it private or moving it to Trash takes it down just as fast
@@ -133,6 +133,7 @@ from the command menu (Cmd+K → "What's new") or from Settings.
133
133
 
134
134
  ### Improved
135
135
 
136
+ - Generation sessions and coding handoffs open the design inline in compatible agent hosts.
136
137
  - Approval links from a connected agent, such as Claude Code, now open the review inside the app, in its own theme.
137
138
  - A selected line or arrow shows a handle at each end; drag one to move just that end, with Shift to snap to 45 degrees
138
139
  - Independent content and mobile layout reviews are available on request for HubSpot emails.
@@ -3,6 +3,12 @@
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
+ ## 2026-10-29
7
+
8
+ ### Fixed
9
+
10
+ - Deck change notifications are now only sent to people who can open the deck, so private decks no longer reveal their ids, slide ids, or editing activity to other users.
11
+
6
12
  ## 2026-10-28
7
13
 
8
14
  ### Fixed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-native/core-corpus",
3
- "version": "0.222.2-nightly-20261029182928",
3
+ "version": "0.222.2",
4
4
  "description": "Opt-in source corpus for Agent-Native Core source-search.",
5
5
  "homepage": "https://github.com/BuilderIO/agent-native#readme",
6
6
  "bugs": {
@@ -1,10 +0,0 @@
1
- // AUTO-GENERATED by @agent-native/core deploy build
2
- import { markDefaultPluginProvided } from "@agent-native/core/server/edge";
3
-
4
- const pluginStems = ["agent-chat","analytics-alert-jobs","analytics-rollup-backfill-jobs","auth","collab","config","content-metrics-collection-jobs","core-routes","creative-context","dashboard-report-jobs","db","feature-flags","labs","onboarding","otel","session-replay-retention-jobs","transactional-emails","uptime-monitor-jobs"];
5
-
6
- export default function markBuildDiscoveredPlugins(nitroApp) {
7
- for (const stem of pluginStems) {
8
- markDefaultPluginProvided(nitroApp, stem);
9
- }
10
- }
@@ -1,10 +0,0 @@
1
- // AUTO-GENERATED by @agent-native/core deploy build
2
- import { markDefaultPluginProvided } from "@agent-native/core/server/edge";
3
-
4
- const pluginStems = ["agent-chat","auth","creative-context","db","labs","onboarding","otel"];
5
-
6
- export default function markBuildDiscoveredPlugins(nitroApp) {
7
- for (const stem of pluginStems) {
8
- markDefaultPluginProvided(nitroApp, stem);
9
- }
10
- }
@@ -1,10 +0,0 @@
1
- // AUTO-GENERATED by @agent-native/core deploy build
2
- import { markDefaultPluginProvided } from "@agent-native/core/server/edge";
3
-
4
- const pluginStems = ["agent-chat","auth","brain-jobs","core-routes","db","otel"];
5
-
6
- export default function markBuildDiscoveredPlugins(nitroApp) {
7
- for (const stem of pluginStems) {
8
- markDefaultPluginProvided(nitroApp, stem);
9
- }
10
- }
@@ -1,10 +0,0 @@
1
- // AUTO-GENERATED by @agent-native/core deploy build
2
- import { markDefaultPluginProvided } from "@agent-native/core/server/edge";
3
-
4
- const pluginStems = ["agent-chat","auth","core-routes","db","event-rules","oauth-refresh","otel","transactional-emails"];
5
-
6
- export default function markBuildDiscoveredPlugins(nitroApp) {
7
- for (const stem of pluginStems) {
8
- markDefaultPluginProvided(nitroApp, stem);
9
- }
10
- }
@@ -1,10 +0,0 @@
1
- // AUTO-GENERATED by @agent-native/core deploy build
2
- import { markDefaultPluginProvided } from "@agent-native/core/server/edge";
3
-
4
- const pluginStems = ["agent-chat","auth","otel"];
5
-
6
- export default function markBuildDiscoveredPlugins(nitroApp) {
7
- for (const stem of pluginStems) {
8
- markDefaultPluginProvided(nitroApp, stem);
9
- }
10
- }
@@ -1,10 +0,0 @@
1
- // AUTO-GENERATED by @agent-native/core deploy build
2
- import { markDefaultPluginProvided } from "@agent-native/core/server/edge";
3
-
4
- const pluginStems = ["agent-chat","auth","calendar-jobs","config","core-routes","db","feature-flags","labs","onboarding","onboarding-calendar","otel","transactional-email-catalog"];
5
-
6
- export default function markBuildDiscoveredPlugins(nitroApp) {
7
- for (const stem of pluginStems) {
8
- markDefaultPluginProvided(nitroApp, stem);
9
- }
10
- }
@@ -1,10 +0,0 @@
1
- // AUTO-GENERATED by @agent-native/core deploy build
2
- import { markDefaultPluginProvided } from "@agent-native/core/server/edge";
3
-
4
- const pluginStems = ["agent-chat","auth","builder-private-payload-cleanup","collab","content-webhooks","core-routes","creative-context","db","feature-flags","github-source-sync","labs","live-body-backfill","onboarding","otel","suggested-edits","transactional-emails"];
5
-
6
- export default function markBuildDiscoveredPlugins(nitroApp) {
7
- for (const stem of pluginStems) {
8
- markDefaultPluginProvided(nitroApp, stem);
9
- }
10
- }
@@ -1,10 +0,0 @@
1
- // AUTO-GENERATED by @agent-native/core deploy build
2
- import { markDefaultPluginProvided } from "@agent-native/core/server/edge";
3
-
4
- const pluginStems = ["agent-chat","auth","core-routes","db","otel"];
5
-
6
- export default function markBuildDiscoveredPlugins(nitroApp) {
7
- for (const stem of pluginStems) {
8
- markDefaultPluginProvided(nitroApp, stem);
9
- }
10
- }
@@ -1,10 +0,0 @@
1
- // AUTO-GENERATED by @agent-native/core deploy build
2
- import { markDefaultPluginProvided } from "@agent-native/core/server/edge";
3
-
4
- const pluginStems = ["agent-chat","assets-mcp","auth","builder-host-embed-headers","collab","config","core-routes","creative-context","db","e2e-attachment-storage","feature-flags","getting-started","journey-canvas-stage-cleanup","labs","local-import-asset-upload","otel","review"];
5
-
6
- export default function markBuildDiscoveredPlugins(nitroApp) {
7
- for (const stem of pluginStems) {
8
- markDefaultPluginProvided(nitroApp, stem);
9
- }
10
- }