Skip to content

Commit 471bf1e

Browse files
authored
feat: sweep concurrent agent updates (#544)
* feat: sweep concurrent agent updates across core/calendar/clips/calls/design/dispatch/forms/mail/slides - Core: agent-chat adapter, sse-event-processor, command menu, feedback button, usage store, multi-tab chat - Dispatch: usage metrics actions + store - Calendar: dialogs, hooks, booking pages - Mail: gmail filters, automations, compose, list/thread - Slides: editor, deck card, comments - Design/Forms/Calls/Clips: layout polish - Multiple changesets for the above * fix(core): adjust agent engine index export * fix(content+mail): visual editor + app layout polish * feat(core+templates): tighten share-resource registry + content/slides db init * feat: standardize db init across templates + AgentNative icon polish * feat(core+clips): tighten share dialog + AgentPanel + clips library layout * docs(sharing): tighten skill + access spec coverage + calls share dialog polish * feat(core+templates): share-resource notify-links + AGENTS doc updates * docs(sharing): expand sharing.md + AGENTS doc + template db init follow-ups * feat(calendar): centralize google-event-colors + event-form-utils + api shape * feat(calendar+mail): booking-links + events handler + settings polish * feat: cross-template polish — calendar events + content notion + design + forms + mail + slides * feat: extract calendar EventOptionControls + content notion polish + slides AgentWorkIndicator test * feat(calendar+mail): event dialog/popover polish + AGENTS doc tweaks * feat(calendar): add use-meeting-start-notifications hook + popover/view polish * fix(calendar): EventDetailPopover follow-up * feat(calendar): event popover + sidebar + use-events + view polish * fix(calendar): sidebar layout follow-up * feat(core+calendar): notifications bell + app layout + view polish * feat(calendar): quiet notifications skill + agent-chat plugin polish * feat(calendar+clips): event dialog/popover/option-controls + booking-links + clips meetings polish * feat: calendar list-events + sidebar polish + content new page route + design ThemeToggle * feat(core+design): chat thread tracking + design team route + sidebar polish * docs(agents): root AGENTS.md tweak * fix(core): error boundary + ssr handler polish * feat: core agent thread/sse polish + design pending-generation lib + slides pptx export * feat: chat reliability recovery + design pages + mail import-gmail-signature action * feat: chat adapter + calendar list-events + design editor + mail signature/send/settings polish * feat: agent chat spec coverage + calendar layout/notifications + design pending-gen + mail signature * feat: calendar event-options polish + design pending-gen + forms agent-prompt-run hook * fix(forms+mail): typecheck for BuilderContent.promptRun + prettier format
1 parent 033339e commit 471bf1e

160 files changed

Lines changed: 7404 additions & 1444 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agents/skills/sharing/SKILL.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ registerShareableResource({
7878
sharesTable: schema.deckShares,
7979
displayName: "Deck",
8080
titleColumn: "title",
81+
getResourcePath: (deck) => `/deck/${deck.id}`,
8182
getDb,
8283
});
8384
```
@@ -155,7 +156,7 @@ The framework auto-mounts these actions in every template — no per-template bo
155156

156157
| Action | Args | Purpose |
157158
| -------------------------- | ------------------------------------------------------------------------------ | ----------------------------------------- |
158-
| `share-resource` | `resourceType, resourceId, principalType, principalId, role` | Grant a user or org access. |
159+
| `share-resource` | `resourceType, resourceId, principalType, principalId, role, notify?, resourceUrl?` | Grant a user or org access. `notify` defaults to true for individual user shares; `resourceUrl` can provide the direct app link used in the notification email. |
159160
| `unshare-resource` | `resourceType, resourceId, principalType, principalId` | Revoke access. |
160161
| `list-resource-shares` | `resourceType, resourceId` | Current visibility + all share grants. |
161162
| `set-resource-visibility` | `resourceType, resourceId, visibility` | Change to `private` / `org` / `public`. |
@@ -173,6 +174,7 @@ When retrofitting an existing resource table:
173174
5. Update list/read actions to use `accessFilter`.
174175
6. Update update/delete actions to `assertAccess` with the correct role.
175176
7. Add `<ShareButton>` to the resource header.
177+
8. Add `getResourcePath` in the registration so agent-triggered shares can email a direct link even when no UI supplied `resourceUrl`.
176178

177179
## Templates that opt out
178180

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@agent-native/core": patch
3+
---
4+
5+
Treat invalid chat session tokens as auth failures and make empty command-menu AI prompts open chat.

.changeset/builder-credit-usage.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@agent-native/core": patch
3+
"@agent-native/dispatch": patch
4+
---
5+
6+
Show Builder.io LLM usage as agent credit spend when Builder is the active provider.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@agent-native/core": patch
3+
---
4+
5+
Harden agent chat auth and gateway recovery paths.

.changeset/chat-thread-tracking.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@agent-native/core": patch
3+
---
4+
5+
Keep programmatic new-tab chat sends on the requested thread id so UI callers can track run state.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@agent-native/core": patch
3+
---
4+
5+
Allow the feedback popover's first submit click to load the form schema before sending.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@agent-native/core": patch
3+
---
4+
5+
Persist the agent chat model selection across page refreshes.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@agent-native/core": patch
3+
---
4+
5+
Allow notification bells to show clearer empty-state copy.

.changeset/share-notify-links.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@agent-native/core": patch
3+
---
4+
5+
Add optional share notification controls and direct resource links for sharing emails.

AGENTS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ Run `agent-native setup-agents` to create all symlinks (done automatically by `a
119119
- **Always use shadcn/ui components for standard UI** — `app/components/ui/` (templates) or `packages/core/src/client/components/ui/` (framework). Available primitives include `Button`, `Dialog`, `AlertDialog`, `Popover`, `DropdownMenu`, `Tooltip`, `Sheet`, `Tabs`, `Select`, `Collapsible`, `Accordion`, `HoverCard`, `Command`, etc. **Never build a custom dropdown / menu / popover with `position: absolute` + a manual click-outside `useEffect`** — those get clipped by ancestor `overflow-hidden` / stacking contexts (no `z-index` will save them) and lack the keyboard nav, focus trap, and animations users expect. Use `<DropdownMenu>` for action menus (Rename / Delete / "⋯" overflow), `<Popover>` for transient panels (color pickers, share dialogs, filters), `<Dialog>` for modals, `<AlertDialog>` for confirmations. If a needed shadcn primitive is missing in a package, install it via `npx shadcn@latest add <name>` (templates) or copy from another template + add the matching `@radix-ui/react-*` dep (framework packages) — don't roll your own.
120120
- **Tabler Icons** (`@tabler/icons-react`) for all icons. **Never use emojis as icons** — not in buttons, not in avatars, not in labels, not in toasts/notifications, not in outbound messages (Slack, email). No other icon libraries, no inline SVGs. Avoid sparkle and wand icons in first-party UI; they are overused. For chat / agent affordances, use a message-style icon instead. Emojis are fine when they are _user-authored content_ (a document title emoji picker, a reaction the user chose, a user-picked space icon) — the rule is about icons the UI picks, not data the user picks.
121121
- **No browser dialogs** — use shadcn AlertDialog instead of `window.confirm/alert/prompt`.
122+
- **Template UX stays clean, minimal, and intuitive** — this is a high priority across all templates. Treat every important screen as a focused working surface, not a place to accumulate fixes as extra visible controls. When acting on feedback, especially broad prompts like "fix what you agree with," judge each suggestion through visual hierarchy, user intent, and progressive disclosure before changing the UI. Prefer clarifying primary actions, reducing competing elements, tightening layout, and moving secondary or rare actions into menus, sheets, tabs, or advanced sections. Do not solve feedback by adding more buttons, toolbars, badges, panels, helper text, filters, or always-visible options to important screens unless that added surface is genuinely the clearest path for the main workflow. If a fix would make a core screen busier, look for a cleaner interaction model or ask before adding clutter.
122123
- **Progressive disclosure by default** — UIs should reveal complexity gradually, not dump every option on screen at once. Lead with the primary action and most-used info; hide the rest behind reveals. Concrete patterns: shadcn `Collapsible` / `Accordion` for grouped settings, `Popover` for secondary actions (share, filters, color pickers, "more options"), `DropdownMenu` overflow (`⋯`) for tertiary toolbar items, `Sheet` / side drawer for full-detail editing of a row, `HoverCard` or expand-on-click for card details, "Show advanced" toggles for optional form fields, tabs to split a long surface into focused sections. Anti-patterns we keep regressing into: a settings page that dumps 20 fields in one flat column, a form that shows every optional field upfront, a toolbar where every button has equal visual weight, a card that prints every metadata field instead of summary + expandable details, a dialog the size of the screen because the form has 15 fields, an empty state that scaffolds the full UI instead of one clear CTA. Rule of thumb: if a first-time user wouldn't need it in the first 5 seconds, collapse it. When in doubt, default to hiding — it's much cheaper to expose later than to declutter a busy screen.
123124
- **Public template list is a strict allow-list — never widen it without flipping `hidden:false` first.** The single source of truth is `packages/shared-app-config/templates.ts` (entries with `hidden: false`). Today the public set is exactly: **mail, calendar, content, slides, videos, clips, analytics, dispatch, forms, design** — plus `starter` for the CLI only. Hidden templates (calls, meeting-notes, voice, scheduling, issues, recruiting, macros) MUST NOT appear on the homepage, in the docs sidebar, in docs pages, or in the CLI catalog. Surfaces that hardcode their own list — `packages/docs/app/components/TemplateCard.tsx`, `packages/docs/app/components/docsNavItems.ts`, docs pages `packages/core/docs/content/template-*.md`, and the CLI duplicate `packages/core/src/cli/templates-meta.ts` — must only reference allow-listed slugs. To make a hidden template public: flip `hidden: false` in `packages/shared-app-config/templates.ts` AND `packages/core/src/cli/templates-meta.ts`, then add it to the surfaces above. To hide one: flip `hidden: true` in both files; the guard will then point you at every surface that still mentions it. `scripts/guard-template-list.mjs` (CI + `pnpm prep`) enforces this — adding a slug that isn't in the allow-list will fail the build. _This guard exists because agents kept re-adding the hidden templates (calls, meeting-notes, voice, scheduling, issues, recruiting, macros) to the homepage and sidebar during overnight sweeps. Do not disable it._
124125
- **No breaking database changes — ever.** Hosted templates share their prod DB across every deploy context (preview, branch, prod). Any destructive SQL that runs in any build will overwrite live user data. Symptoms we've already hit in production: users losing accounts, dashboards silently emptied, sessions invalidated. Hard rules:

0 commit comments

Comments
 (0)