@agent-native/core 0.117.0 → 0.117.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.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +16 -0
- package/corpus/core/package.json +2 -1
- package/corpus/core/src/cli/context-xray-local.ts +1 -1
- package/corpus/core/src/client/extensions/ExtensionViewer.tsx +4 -4
- package/corpus/core/src/client/extensions/ExtensionsSidebarSection.tsx +11 -11
- package/corpus/core/src/client/extensions/agent-native-extension-runtime.ts +1 -1
- package/corpus/core/src/client/extensions/delete-extension.ts +2 -2
- package/corpus/core/src/client/org/OrgSwitcher.tsx +25 -1
- package/corpus/core/src/client/settings/SettingsPanel.tsx +102 -10
- package/corpus/core/src/client/sharing/ShareButton.tsx +7 -6
- package/corpus/core/src/db/client.ts +13 -10
- package/corpus/core/src/deploy/workspace-deploy.ts +14 -4
- package/corpus/core/src/extensions/actions.ts +13 -5
- package/corpus/core/src/extensions/local.ts +1 -0
- package/corpus/core/src/extensions/routes.ts +10 -5
- package/corpus/core/src/extensions/schema.ts +5 -0
- package/corpus/core/src/extensions/slots/store.ts +14 -4
- package/corpus/core/src/extensions/store.ts +55 -19
- package/corpus/core/src/extensions/theme.ts +1 -1
- package/corpus/core/src/file-upload/registry.ts +9 -0
- package/corpus/core/src/index.browser.ts +5 -0
- package/corpus/core/src/index.ts +1 -0
- package/corpus/core/src/localization/default-messages.ts +23 -6
- package/corpus/core/src/server/action-discovery.ts +8 -0
- package/corpus/core/src/server/better-auth-instance.ts +7 -2
- package/corpus/core/src/server/email-template.ts +18 -0
- package/corpus/core/src/server/email-templates.ts +3 -0
- package/corpus/core/src/server/email.ts +40 -4
- package/corpus/core/src/sharing/actions/share-resource.ts +1 -0
- package/corpus/core/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/core/src/templates/default/app/global.css +1 -1
- package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/de-DE.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/en-US.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/es-ES.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +6 -6
- package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +7 -7
- package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +7 -7
- package/corpus/core/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/core/src/user-profile/actions/get-user-profile.ts +16 -0
- package/corpus/core/src/user-profile/actions/update-user-profile.ts +24 -0
- package/corpus/core/src/user-profile/index.ts +5 -0
- package/corpus/core/src/user-profile/shared.ts +14 -0
- package/corpus/core/src/user-profile/store.ts +50 -0
- package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/assets/app/components/layout/Sidebar.tsx +2 -2
- package/corpus/templates/assets/app/global.css +1 -1
- package/corpus/templates/assets/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/brain/app/global.css +2 -2
- package/corpus/templates/brain/app/lib/brain.ts +2 -2
- package/corpus/templates/brain/app/root.tsx +2 -2
- package/corpus/templates/brain/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +6 -2
- package/corpus/templates/calendar/app/global.css +1 -1
- package/corpus/templates/calendar/app/root.tsx +2 -2
- package/corpus/templates/calendar/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/chat/app/components/layout/Sidebar.tsx +2 -2
- package/corpus/templates/chat/app/global.css +1 -1
- package/corpus/templates/chat/app/root.tsx +2 -2
- package/corpus/templates/chat/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/clips/actions/export-to-brain.ts +1 -1
- package/corpus/templates/clips/actions/invite-member.ts +1 -0
- package/corpus/templates/clips/app/components/library/library-layout.tsx +2 -2
- package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +20 -11
- package/corpus/templates/clips/app/global.css +1 -1
- package/corpus/templates/clips/app/root.tsx +7 -2
- package/corpus/templates/clips/app/routes/record.tsx +2 -88
- package/corpus/templates/clips/changelog/2026-07-22-builder-connected-recordings-start-resumable-upload-sessions.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-clip-thumbnails-now-come-from-the-recording-instead-of-the-p.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-clips-emails-now-render-the-agent-native-logo-in-gmail-and-o.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-dismissed-zoom-and-teams-meeting-note-prompts-now-stay-dismi.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-22-quieter-permissions-and-rewind-controls.md +6 -0
- package/corpus/templates/clips/desktop/src/app.tsx +86 -52
- package/corpus/templates/clips/desktop/src/lib/meeting-notification-dismissal.ts +31 -0
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +4 -167
- package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +10 -1
- package/corpus/templates/clips/desktop/src/styles.css +98 -36
- package/corpus/templates/clips/desktop/src-tauri/src/adhoc_meetings_watcher.rs +67 -4
- package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +1 -1
- package/corpus/templates/clips/desktop/src-tauri/src/meetings_watcher.rs +51 -0
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen/custom_capture.rs +5 -1
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +0 -189
- package/corpus/templates/clips/desktop/src-tauri/src/notifications.rs +62 -0
- package/corpus/templates/clips/server/plugins/db.ts +6 -2
- package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +3 -3
- package/corpus/templates/content/app/global.css +1 -1
- package/corpus/templates/content/app/root.tsx +2 -2
- package/corpus/templates/content/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/crm/app/global.css +1 -1
- package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +19 -1
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +12 -1
- package/corpus/templates/design/app/components/design/EditPanel.tsx +177 -52
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +179 -59
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +74 -27
- package/corpus/templates/design/app/components/design/multi-screen/types.ts +2 -0
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +2 -2
- package/corpus/templates/design/app/global.css +1 -1
- package/corpus/templates/design/app/hooks/use-navigation-state.ts +6 -5
- package/corpus/templates/design/app/root.tsx +2 -2
- package/corpus/templates/design/changelog/2026-07-22-design-owners-can-keep-editing-their-designs-after-switching.md +6 -0
- package/corpus/templates/design/changelog/2026-07-22-inspector-tabs-keep-their-text-labels-at-narrow-widths.md +6 -0
- package/corpus/templates/design/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/design/changelog/2026-07-22-narrow-breakpoint-previews-keep-their-device-labels-readable.md +6 -0
- package/corpus/templates/design/changelog/2026-07-22-removed-the-draft-status-chip-from-the-design-editor.md +6 -0
- package/corpus/templates/design/changelog/2026-07-22-responsive-breakpoint-controls-stay-within-narrow-sidebars.md +6 -0
- package/corpus/templates/design/changelog/2026-07-22-responsive-peers-now-use-a-softer-selection-highlight-withou.md +6 -0
- package/corpus/templates/design/changelog/2026-07-22-rotate-from-context-menu.md +6 -0
- package/corpus/templates/design/changelog/2026-07-22-the-selection-outline-now-stays-attached-while-moving-screen.md +6 -0
- package/corpus/templates/design/changelog/2026-07-22-view-only-designs-now-support-figma-style-layer-inspection-w.md +6 -0
- package/corpus/templates/design/server/db/index.ts +4 -0
- package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/dispatch/app/dispatch-extensions.tsx +2 -2
- package/corpus/templates/dispatch/app/global.css +1 -1
- package/corpus/templates/dispatch/app/root.tsx +2 -2
- package/corpus/templates/dispatch/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/forms/app/components/layout/Layout.tsx +1 -1
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +3 -3
- package/corpus/templates/forms/app/global.css +1 -1
- package/corpus/templates/forms/app/hooks/use-forms.ts +55 -2
- package/corpus/templates/forms/app/i18n/en-US.ts +2 -0
- package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +3 -3
- package/corpus/templates/forms/app/pages/FormsListPage.tsx +23 -6
- package/corpus/templates/forms/app/root.tsx +2 -2
- package/corpus/templates/forms/changelog/2026-07-22-forms-now-archive-with-optimistic-feedback.md +6 -0
- package/corpus/templates/forms/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/forms/server/plugins/agent-chat.ts +1 -1
- package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +2 -2
- package/corpus/templates/macros/app/root.tsx +2 -2
- package/corpus/templates/macros/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +3 -3
- package/corpus/templates/mail/app/components/layout/CommandPalette.tsx +2 -2
- package/corpus/templates/mail/app/global.css +1 -1
- package/corpus/templates/mail/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +2 -2
- package/corpus/templates/plan/app/global.css +1 -1
- package/corpus/templates/plan/app/root.tsx +2 -2
- package/corpus/templates/plan/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/slides/app/components/layout/Sidebar.tsx +2 -2
- package/corpus/templates/slides/app/root.tsx +2 -2
- package/corpus/templates/slides/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-22-slides-no-longer-fail-intermittently-on-fresh-server-instances.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-22-uploaded-screenshots-can-now-be-analyzed-and-recreated-as-ed.md +6 -0
- package/corpus/templates/slides/server/lib/chat-attachments.ts +7 -3
- package/corpus/templates/slides/server/plugins/db.ts +44 -17
- package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/corpus/templates/tasks/app/global.css +1 -1
- package/dist/cli/context-xray-local.js +1 -1
- package/dist/cli/context-xray-local.js.map +1 -1
- package/dist/client/extensions/ExtensionViewer.js +2 -2
- package/dist/client/extensions/ExtensionViewer.js.map +1 -1
- package/dist/client/extensions/ExtensionsSidebarSection.js +11 -11
- package/dist/client/extensions/ExtensionsSidebarSection.js.map +1 -1
- package/dist/client/extensions/agent-native-extension-runtime.js +1 -1
- package/dist/client/extensions/agent-native-extension-runtime.js.map +1 -1
- package/dist/client/extensions/delete-extension.d.ts +1 -1
- package/dist/client/extensions/delete-extension.d.ts.map +1 -1
- package/dist/client/extensions/delete-extension.js +1 -1
- package/dist/client/extensions/delete-extension.js.map +1 -1
- package/dist/client/org/OrgSwitcher.d.ts +3 -1
- package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
- package/dist/client/org/OrgSwitcher.js +12 -4
- package/dist/client/org/OrgSwitcher.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +37 -4
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/sharing/ShareButton.d.ts +3 -4
- package/dist/client/sharing/ShareButton.d.ts.map +1 -1
- package/dist/client/sharing/ShareButton.js +3 -2
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/db/client.d.ts +7 -7
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +13 -10
- package/dist/db/client.js.map +1 -1
- package/dist/deploy/workspace-deploy.js +14 -4
- package/dist/deploy/workspace-deploy.js.map +1 -1
- package/dist/extensions/actions.d.ts.map +1 -1
- package/dist/extensions/actions.js +8 -5
- package/dist/extensions/actions.js.map +1 -1
- package/dist/extensions/local.d.ts.map +1 -1
- package/dist/extensions/local.js +1 -0
- package/dist/extensions/local.js.map +1 -1
- package/dist/extensions/routes.d.ts.map +1 -1
- package/dist/extensions/routes.js +9 -4
- package/dist/extensions/routes.js.map +1 -1
- package/dist/extensions/schema.d.ts +23 -2
- package/dist/extensions/schema.d.ts.map +1 -1
- package/dist/extensions/schema.js +5 -0
- package/dist/extensions/schema.js.map +1 -1
- package/dist/extensions/slots/store.d.ts +1 -1
- package/dist/extensions/slots/store.d.ts.map +1 -1
- package/dist/extensions/slots/store.js +4 -4
- package/dist/extensions/slots/store.js.map +1 -1
- package/dist/extensions/store.d.ts +1 -0
- package/dist/extensions/store.d.ts.map +1 -1
- package/dist/extensions/store.js +38 -21
- package/dist/extensions/store.js.map +1 -1
- package/dist/extensions/theme.js +1 -1
- package/dist/extensions/theme.js.map +1 -1
- package/dist/file-upload/registry.d.ts.map +1 -1
- package/dist/file-upload/registry.js +9 -0
- package/dist/file-upload/registry.js.map +1 -1
- package/dist/index.browser.d.ts +1 -0
- package/dist/index.browser.d.ts.map +1 -1
- package/dist/index.browser.js +1 -0
- package/dist/index.browser.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/localization/default-messages.d.ts +16 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +22 -6
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/routes.d.ts +5 -5
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +7 -7
- package/dist/provider-api/actions/provider-api.d.ts +11 -11
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/secrets/routes.d.ts +6 -6
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +8 -0
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/better-auth-instance.d.ts +7 -2
- package/dist/server/better-auth-instance.d.ts.map +1 -1
- package/dist/server/better-auth-instance.js.map +1 -1
- package/dist/server/email-template.d.ts +3 -0
- package/dist/server/email-template.d.ts.map +1 -1
- package/dist/server/email-template.js +13 -0
- package/dist/server/email-template.js.map +1 -1
- package/dist/server/email-templates.d.ts.map +1 -1
- package/dist/server/email-templates.js +3 -0
- package/dist/server/email-templates.js.map +1 -1
- package/dist/server/email.d.ts.map +1 -1
- package/dist/server/email.js +27 -4
- package/dist/server/email.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/sharing/actions/share-resource.js +1 -0
- package/dist/sharing/actions/share-resource.js.map +1 -1
- package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/dist/templates/chat/app/components/layout/Sidebar.tsx +2 -2
- package/dist/templates/chat/app/global.css +1 -1
- package/dist/templates/chat/app/root.tsx +2 -2
- package/dist/templates/chat/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/dist/templates/default/app/global.css +1 -1
- package/dist/templates/default/app/i18n/ar-SA.ts +6 -6
- package/dist/templates/default/app/i18n/de-DE.ts +6 -6
- package/dist/templates/default/app/i18n/en-US.ts +6 -6
- package/dist/templates/default/app/i18n/es-ES.ts +6 -6
- package/dist/templates/default/app/i18n/fr-FR.ts +6 -6
- package/dist/templates/default/app/i18n/hi-IN.ts +6 -6
- package/dist/templates/default/app/i18n/ja-JP.ts +6 -6
- package/dist/templates/default/app/i18n/ko-KR.ts +6 -6
- package/dist/templates/default/app/i18n/pt-BR.ts +6 -6
- package/dist/templates/default/app/i18n/zh-CN.ts +7 -7
- package/dist/templates/default/app/i18n/zh-TW.ts +7 -7
- package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/dist/user-profile/actions/get-user-profile.d.ts +4 -0
- package/dist/user-profile/actions/get-user-profile.d.ts.map +1 -0
- package/dist/user-profile/actions/get-user-profile.js +14 -0
- package/dist/user-profile/actions/get-user-profile.js.map +1 -0
- package/dist/user-profile/actions/update-user-profile.d.ts +6 -0
- package/dist/user-profile/actions/update-user-profile.d.ts.map +1 -0
- package/dist/user-profile/actions/update-user-profile.js +20 -0
- package/dist/user-profile/actions/update-user-profile.js.map +1 -0
- package/dist/user-profile/index.d.ts +2 -0
- package/dist/user-profile/index.d.ts.map +1 -0
- package/dist/user-profile/index.js +2 -0
- package/dist/user-profile/index.js.map +1 -0
- package/dist/user-profile/shared.d.ts +7 -0
- package/dist/user-profile/shared.d.ts.map +1 -0
- package/dist/user-profile/shared.js +6 -0
- package/dist/user-profile/shared.js.map +1 -0
- package/dist/user-profile/store.d.ts +4 -0
- package/dist/user-profile/store.d.ts.map +1 -0
- package/dist/user-profile/store.js +38 -0
- package/dist/user-profile/store.js.map +1 -0
- package/package.json +2 -1
- package/src/cli/context-xray-local.ts +1 -1
- package/src/client/extensions/ExtensionViewer.tsx +4 -4
- package/src/client/extensions/ExtensionsSidebarSection.tsx +11 -11
- package/src/client/extensions/agent-native-extension-runtime.ts +1 -1
- package/src/client/extensions/delete-extension.ts +2 -2
- package/src/client/org/OrgSwitcher.tsx +25 -1
- package/src/client/settings/SettingsPanel.tsx +102 -10
- package/src/client/sharing/ShareButton.tsx +7 -6
- package/src/db/client.ts +13 -10
- package/src/deploy/workspace-deploy.ts +14 -4
- package/src/extensions/actions.ts +13 -5
- package/src/extensions/local.ts +1 -0
- package/src/extensions/routes.ts +10 -5
- package/src/extensions/schema.ts +5 -0
- package/src/extensions/slots/store.ts +14 -4
- package/src/extensions/store.ts +55 -19
- package/src/extensions/theme.ts +1 -1
- package/src/file-upload/registry.ts +9 -0
- package/src/index.browser.ts +5 -0
- package/src/index.ts +1 -0
- package/src/localization/default-messages.ts +23 -6
- package/src/server/action-discovery.ts +8 -0
- package/src/server/better-auth-instance.ts +7 -2
- package/src/server/email-template.ts +18 -0
- package/src/server/email-templates.ts +3 -0
- package/src/server/email.ts +40 -4
- package/src/sharing/actions/share-resource.ts +1 -0
- package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/src/templates/chat/app/components/layout/Sidebar.tsx +2 -2
- package/src/templates/chat/app/global.css +1 -1
- package/src/templates/chat/app/root.tsx +2 -2
- package/src/templates/chat/changelog/2026-07-22-manage-agent-navigation-now-uses-the-connected-nodes-icon.md +6 -0
- package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/src/templates/default/app/global.css +1 -1
- package/src/templates/default/app/i18n/ar-SA.ts +6 -6
- package/src/templates/default/app/i18n/de-DE.ts +6 -6
- package/src/templates/default/app/i18n/en-US.ts +6 -6
- package/src/templates/default/app/i18n/es-ES.ts +6 -6
- package/src/templates/default/app/i18n/fr-FR.ts +6 -6
- package/src/templates/default/app/i18n/hi-IN.ts +6 -6
- package/src/templates/default/app/i18n/ja-JP.ts +6 -6
- package/src/templates/default/app/i18n/ko-KR.ts +6 -6
- package/src/templates/default/app/i18n/pt-BR.ts +6 -6
- package/src/templates/default/app/i18n/zh-CN.ts +7 -7
- package/src/templates/default/app/i18n/zh-TW.ts +7 -7
- package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +6 -0
- package/src/user-profile/actions/get-user-profile.ts +16 -0
- package/src/user-profile/actions/update-user-profile.ts +24 -0
- package/src/user-profile/index.ts +5 -0
- package/src/user-profile/shared.ts +14 -0
- package/src/user-profile/store.ts +50 -0
|
@@ -69,6 +69,15 @@ export async function getActiveFileUploadProviderForRequest(): Promise<FileUploa
|
|
|
69
69
|
if (builderFileUploadProvider.isConfigured()) {
|
|
70
70
|
return builderFileUploadProvider;
|
|
71
71
|
}
|
|
72
|
+
try {
|
|
73
|
+
const { resolveHasBuilderPrivateKey } =
|
|
74
|
+
await import("../server/credential-provider.js");
|
|
75
|
+
if (await resolveHasBuilderPrivateKey()) {
|
|
76
|
+
return builderFileUploadProvider;
|
|
77
|
+
}
|
|
78
|
+
} catch {
|
|
79
|
+
// Treat failed scoped credential lookups as unavailable.
|
|
80
|
+
}
|
|
72
81
|
return null;
|
|
73
82
|
}
|
|
74
83
|
|
package/src/index.browser.ts
CHANGED
|
@@ -100,6 +100,11 @@ export {
|
|
|
100
100
|
type ActionMcpAppResourceConfig,
|
|
101
101
|
type ActionMcpAppResourceMeta,
|
|
102
102
|
} from "./action.js";
|
|
103
|
+
export {
|
|
104
|
+
normalizeUserProfileName,
|
|
105
|
+
USER_PROFILE_SETTING_KEY,
|
|
106
|
+
type UserProfile,
|
|
107
|
+
} from "./user-profile/index.js";
|
|
103
108
|
export {
|
|
104
109
|
ACTION_CHAT_UI_DATA_CHART_RENDERER,
|
|
105
110
|
ACTION_CHAT_UI_DATA_INSIGHTS_RENDERER,
|
package/src/index.ts
CHANGED
|
@@ -32,6 +32,23 @@ const messages = {
|
|
|
32
32
|
openTeamSettings: "Open team settings",
|
|
33
33
|
openResourceSettings: "Open resource settings",
|
|
34
34
|
backHome: "Back to home",
|
|
35
|
+
profileTitle: "Account",
|
|
36
|
+
profileDescription: "Your name, profile photo, and signed-in identity.",
|
|
37
|
+
profileLoading: "Loading...",
|
|
38
|
+
profileSignedOut: "Signed out",
|
|
39
|
+
profilePhotoUpdated: "Photo updated",
|
|
40
|
+
profilePhotoError: "Could not update photo",
|
|
41
|
+
profileUploading: "Uploading...",
|
|
42
|
+
profileChangePhoto: "Change photo",
|
|
43
|
+
profileNameLabel: "Name",
|
|
44
|
+
profileNamePlaceholder: "Your name",
|
|
45
|
+
profileNameDescription:
|
|
46
|
+
"This name is used when referring to you across Agent-Native apps.",
|
|
47
|
+
profileSave: "Save changes",
|
|
48
|
+
profileSaving: "Saving...",
|
|
49
|
+
profileSaved: "Profile updated",
|
|
50
|
+
profileSaveError: "Could not update profile",
|
|
51
|
+
profileMenuItem: "Profile",
|
|
35
52
|
},
|
|
36
53
|
agentResources: {
|
|
37
54
|
openDocs: "Open {{section}} documentation",
|
|
@@ -634,23 +651,23 @@ const messages = {
|
|
|
634
651
|
hideEveryone: "Hide from everyone",
|
|
635
652
|
localFileDescription:
|
|
636
653
|
"This extension is backed by {{entryPath}}. Edit or remove it from the workspace.",
|
|
637
|
-
deleteQuestion: "
|
|
654
|
+
deleteQuestion: "Archive {{name}}?",
|
|
638
655
|
removeQuestion: "Remove {{name}}?",
|
|
639
656
|
hideForYouDescription:
|
|
640
657
|
"This hides it from your Extensions list without deleting it for anyone else.",
|
|
641
|
-
removeEverywhereDescription: "This
|
|
658
|
+
removeEverywhereDescription: "This archives it everywhere it is shared.",
|
|
642
659
|
cancel: "Cancel",
|
|
643
660
|
remove: "Remove",
|
|
644
661
|
removing: "Removing...",
|
|
645
|
-
delete: "
|
|
646
|
-
deleting: "
|
|
662
|
+
delete: "Archive",
|
|
663
|
+
deleting: "Archiving...",
|
|
647
664
|
openFullView: "Open full view",
|
|
648
665
|
removeFromWidgetArea: "Remove from this widget area",
|
|
649
|
-
deleteExtensionEllipsis: "
|
|
666
|
+
deleteExtensionEllipsis: "Archive extension...",
|
|
650
667
|
removeFromMyListEllipsis: "Remove from my list...",
|
|
651
668
|
removeFromWidgetAreaForMe: "Remove from this widget area (for me)",
|
|
652
669
|
deleteEverywhereConfirmation:
|
|
653
|
-
"This
|
|
670
|
+
"This archives the extension everywhere, for everyone it's shared with.",
|
|
654
671
|
addWidget: "Add widget",
|
|
655
672
|
loading: "Loading...",
|
|
656
673
|
noWidgetsAvailable: "No widgets available for this slot yet.",
|
|
@@ -658,6 +658,14 @@ export async function mergeCoreSharingActions(
|
|
|
658
658
|
"set-localization-preference",
|
|
659
659
|
() => import("../localization/actions/set-localization-preference.js"),
|
|
660
660
|
],
|
|
661
|
+
[
|
|
662
|
+
"get-user-profile",
|
|
663
|
+
() => import("../user-profile/actions/get-user-profile.js"),
|
|
664
|
+
],
|
|
665
|
+
[
|
|
666
|
+
"update-user-profile",
|
|
667
|
+
() => import("../user-profile/actions/update-user-profile.js"),
|
|
668
|
+
],
|
|
661
669
|
[
|
|
662
670
|
"change-appearance",
|
|
663
671
|
() => import("../appearance/actions/change-appearance.js"),
|
|
@@ -740,8 +740,8 @@ export function getBetterAuthSync(): BetterAuthInstance | undefined {
|
|
|
740
740
|
* The subset of Better Auth's internal adapter we use for federated-SSO
|
|
741
741
|
* JIT account linking. Better Auth owns these writes (id + timestamp +
|
|
742
742
|
* schema handling), so callers never hand-roll SQL against `user`/`account`.
|
|
743
|
-
* Read-only lookups
|
|
744
|
-
*
|
|
743
|
+
* Read-only lookups plus account-linking and profile-update operations used by
|
|
744
|
+
* shared Core surfaces. Better Auth owns the actual identity writes.
|
|
745
745
|
*/
|
|
746
746
|
export interface BetterAuthInternalAdapter {
|
|
747
747
|
findUserByEmail: (
|
|
@@ -761,6 +761,11 @@ export interface BetterAuthInternalAdapter {
|
|
|
761
761
|
name: string;
|
|
762
762
|
emailVerified?: boolean;
|
|
763
763
|
}) => Promise<{ id: string }>;
|
|
764
|
+
/** Optional because older/custom adapter shapes may not expose mutations. */
|
|
765
|
+
updateUser?: (
|
|
766
|
+
userId: string,
|
|
767
|
+
data: { name?: string; image?: string | null },
|
|
768
|
+
) => Promise<unknown>;
|
|
764
769
|
}
|
|
765
770
|
|
|
766
771
|
/**
|
|
@@ -18,6 +18,10 @@
|
|
|
18
18
|
* });
|
|
19
19
|
*/
|
|
20
20
|
|
|
21
|
+
import { getAppName } from "./app-name.js";
|
|
22
|
+
|
|
23
|
+
export const AGENT_NATIVE_EMAIL_LOGO_CONTENT_ID = "agent-native-logo";
|
|
24
|
+
|
|
21
25
|
export interface EmailCta {
|
|
22
26
|
label: string;
|
|
23
27
|
url: string;
|
|
@@ -34,6 +38,8 @@ export interface RenderEmailArgs {
|
|
|
34
38
|
cta?: EmailCta;
|
|
35
39
|
/** Small muted text under the CTA (e.g. expiry note). */
|
|
36
40
|
footer?: string;
|
|
41
|
+
/** Optional app name shown beside the framework logo. */
|
|
42
|
+
brandName?: string;
|
|
37
43
|
/**
|
|
38
44
|
* Optional brand hex color for the CTA button and inline links. Defaults to
|
|
39
45
|
* a monochrome near-white button with dark text.
|
|
@@ -71,6 +77,7 @@ function sanitizeHexColor(input: string | undefined): string | undefined {
|
|
|
71
77
|
export function renderEmail(args: RenderEmailArgs): RenderedEmail {
|
|
72
78
|
const preheader = args.preheader || "";
|
|
73
79
|
const brand = sanitizeHexColor(args.brandColor);
|
|
80
|
+
const brandName = args.brandName?.trim() || getAppName() || "Agent Native";
|
|
74
81
|
|
|
75
82
|
// Monochrome default: near-white button with dark text. Brand override:
|
|
76
83
|
// colored button with white text.
|
|
@@ -104,6 +111,16 @@ export function renderEmail(args: RenderEmailArgs): RenderedEmail {
|
|
|
104
111
|
? `<p style="margin:28px 0 0 0; font-size:13px; line-height:1.5; color:#71717a;">${escapeHtml(args.footer)}</p>`
|
|
105
112
|
: "";
|
|
106
113
|
|
|
114
|
+
const brandHeaderHtml = `
|
|
115
|
+
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" style="margin:0 0 28px 0; padding:0 0 24px 0; border-bottom:1px solid #27272a;">
|
|
116
|
+
<tr>
|
|
117
|
+
<td align="center">
|
|
118
|
+
<img src="cid:${AGENT_NATIVE_EMAIL_LOGO_CONTENT_ID}" alt="${escapeAttr(brandName)}" width="28" height="28" style="display:inline-block; vertical-align:middle; width:28px; height:28px; margin:0 8px 0 0; border:0;" />
|
|
119
|
+
<span style="font-size:18px; line-height:28px; font-weight:600; color:#fafafa; vertical-align:middle;">${escapeHtml(brandName)}</span>
|
|
120
|
+
</td>
|
|
121
|
+
</tr>
|
|
122
|
+
</table>`;
|
|
123
|
+
|
|
107
124
|
const html = `<!DOCTYPE html>
|
|
108
125
|
<html lang="en">
|
|
109
126
|
<head>
|
|
@@ -129,6 +146,7 @@ export function renderEmail(args: RenderEmailArgs): RenderedEmail {
|
|
|
129
146
|
<table role="presentation" cellpadding="0" cellspacing="0" border="0" width="100%" style="max-width:560px;">
|
|
130
147
|
<tr>
|
|
131
148
|
<td style="background-color:#141417; border:1px solid #27272a; border-radius:16px; padding:36px 36px 32px 36px;">
|
|
149
|
+
${brandHeaderHtml}
|
|
132
150
|
<h1 style="margin:0 0 20px 0; font-size:24px; line-height:1.3; font-weight:600; color:#fafafa; letter-spacing:-0.02em;">
|
|
133
151
|
${escapeHtml(args.heading)}
|
|
134
152
|
</h1>
|
|
@@ -58,6 +58,7 @@ export function renderInviteEmail(
|
|
|
58
58
|
const onApp = appName ? ` on ${appName}` : "";
|
|
59
59
|
|
|
60
60
|
const { html, text } = renderEmail({
|
|
61
|
+
brandName: appName,
|
|
61
62
|
preheader: `${inviter} invited you to join ${orgName}${onApp}.`,
|
|
62
63
|
heading: `You're invited to join ${orgName}`,
|
|
63
64
|
paragraphs: [
|
|
@@ -95,6 +96,7 @@ export function renderVerifySignupEmail(
|
|
|
95
96
|
const appName = resolveAppName();
|
|
96
97
|
|
|
97
98
|
const { html, text } = renderEmail({
|
|
99
|
+
brandName: appName,
|
|
98
100
|
preheader: `Confirm ${email} to finish setting up your ${appName} account.`,
|
|
99
101
|
heading: `Verify your email for ${appName}`,
|
|
100
102
|
paragraphs: [
|
|
@@ -130,6 +132,7 @@ export function renderResetPasswordEmail(
|
|
|
130
132
|
const appName = resolveAppName();
|
|
131
133
|
|
|
132
134
|
const { html, text } = renderEmail({
|
|
135
|
+
brandName: appName,
|
|
133
136
|
preheader: `Reset the password for ${email}. This link expires in 1 hour.`,
|
|
134
137
|
heading: `Reset your ${appName} password`,
|
|
135
138
|
paragraphs: [
|
package/src/server/email.ts
CHANGED
|
@@ -10,7 +10,10 @@
|
|
|
10
10
|
* so the reset-password flow still works end-to-end for local development.
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
+
import { readFileSync } from "node:fs";
|
|
14
|
+
|
|
13
15
|
import { resolveSecret } from "./credential-provider.js";
|
|
16
|
+
import { AGENT_NATIVE_EMAIL_LOGO_CONTENT_ID } from "./email-template.js";
|
|
14
17
|
|
|
15
18
|
export type EmailProvider = "resend" | "sendgrid" | "dev";
|
|
16
19
|
|
|
@@ -35,6 +38,38 @@ export interface SendEmailArgs {
|
|
|
35
38
|
attachments?: EmailAttachment[];
|
|
36
39
|
}
|
|
37
40
|
|
|
41
|
+
let cachedAgentNativeLogo: Buffer | undefined;
|
|
42
|
+
|
|
43
|
+
function getAgentNativeLogoAttachment(): EmailAttachment {
|
|
44
|
+
cachedAgentNativeLogo ??= readFileSync(
|
|
45
|
+
new URL("../../src/assets/branding/favicon.png", import.meta.url),
|
|
46
|
+
);
|
|
47
|
+
return {
|
|
48
|
+
filename: "agent-native-logo.png",
|
|
49
|
+
content: cachedAgentNativeLogo,
|
|
50
|
+
contentType: "image/png",
|
|
51
|
+
contentId: AGENT_NATIVE_EMAIL_LOGO_CONTENT_ID,
|
|
52
|
+
disposition: "inline",
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
function resolveAttachments(
|
|
57
|
+
args: SendEmailArgs,
|
|
58
|
+
): EmailAttachment[] | undefined {
|
|
59
|
+
if (!args.html.includes(`cid:${AGENT_NATIVE_EMAIL_LOGO_CONTENT_ID}`)) {
|
|
60
|
+
return args.attachments;
|
|
61
|
+
}
|
|
62
|
+
if (
|
|
63
|
+
args.attachments?.some(
|
|
64
|
+
(attachment) =>
|
|
65
|
+
attachment.contentId === AGENT_NATIVE_EMAIL_LOGO_CONTENT_ID,
|
|
66
|
+
)
|
|
67
|
+
) {
|
|
68
|
+
return args.attachments;
|
|
69
|
+
}
|
|
70
|
+
return [...(args.attachments ?? []), getAgentNativeLogoAttachment()];
|
|
71
|
+
}
|
|
72
|
+
|
|
38
73
|
interface EmailTransportConfig {
|
|
39
74
|
provider: EmailProvider;
|
|
40
75
|
resendApiKey?: string;
|
|
@@ -94,6 +129,7 @@ export async function sendEmail(args: SendEmailArgs): Promise<void> {
|
|
|
94
129
|
const config = await resolveEmailTransport();
|
|
95
130
|
const provider = config.provider;
|
|
96
131
|
const from = getFromAddress(config, args.from);
|
|
132
|
+
const attachments = resolveAttachments(args);
|
|
97
133
|
|
|
98
134
|
if (provider === "resend") {
|
|
99
135
|
const payload: Record<string, unknown> = {
|
|
@@ -105,8 +141,8 @@ export async function sendEmail(args: SendEmailArgs): Promise<void> {
|
|
|
105
141
|
};
|
|
106
142
|
if (args.cc) payload.cc = Array.isArray(args.cc) ? args.cc : [args.cc];
|
|
107
143
|
if (args.replyTo) payload.reply_to = args.replyTo;
|
|
108
|
-
if (
|
|
109
|
-
payload.attachments =
|
|
144
|
+
if (attachments?.length) {
|
|
145
|
+
payload.attachments = attachments.map((a) => ({
|
|
110
146
|
filename: a.filename,
|
|
111
147
|
content:
|
|
112
148
|
typeof a.content === "string"
|
|
@@ -159,8 +195,8 @@ export async function sendEmail(args: SendEmailArgs): Promise<void> {
|
|
|
159
195
|
if (args.inReplyTo) sgHeaders["In-Reply-To"] = args.inReplyTo;
|
|
160
196
|
if (args.references) sgHeaders["References"] = args.references;
|
|
161
197
|
if (Object.keys(sgHeaders).length) sgPayload.headers = sgHeaders;
|
|
162
|
-
if (
|
|
163
|
-
sgPayload.attachments =
|
|
198
|
+
if (attachments?.length) {
|
|
199
|
+
sgPayload.attachments = attachments.map((a) => ({
|
|
164
200
|
filename: a.filename,
|
|
165
201
|
content:
|
|
166
202
|
typeof a.content === "string"
|
|
@@ -299,6 +299,7 @@ export default defineAction({
|
|
|
299
299
|
process.env.APP_NAME || process.env.VITE_APP_NAME || "Agent Native";
|
|
300
300
|
const subject = `${actor} shared "${resourceTitle}" with you on ${appName}`;
|
|
301
301
|
const { html, text } = renderEmail({
|
|
302
|
+
brandName: appName,
|
|
302
303
|
preheader: subject,
|
|
303
304
|
heading: "You've been given access",
|
|
304
305
|
paragraphs: [
|
|
@@ -59,6 +59,12 @@ quick controls and deep links such as:
|
|
|
59
59
|
- `/settings/usage`
|
|
60
60
|
- `/settings/apps/:appId`
|
|
61
61
|
|
|
62
|
+
The shared Account section is the canonical profile surface at
|
|
63
|
+
`/settings#account`. It owns the editable display name and existing avatar
|
|
64
|
+
control through the authenticated `get-user-profile` and `update-user-profile`
|
|
65
|
+
actions. Shared workspace chrome such as `OrgSwitcher` should link to this
|
|
66
|
+
surface rather than creating an app-local profile page.
|
|
67
|
+
|
|
62
68
|
When adding a new API key, OAuth grant, provider connection, model selector, app
|
|
63
69
|
preference, notification preference, or usage/billing surface, register it as a
|
|
64
70
|
settings tab or app settings panel first. Only add sidebar UI when it is needed
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
type ChatHistoryItem,
|
|
14
14
|
} from "@agent-native/toolkit/chat-history";
|
|
15
15
|
import {
|
|
16
|
-
|
|
16
|
+
IconHierarchy2,
|
|
17
17
|
IconLayoutSidebarLeftCollapse,
|
|
18
18
|
IconLayoutSidebarLeftExpand,
|
|
19
19
|
IconMessageCircle,
|
|
@@ -39,7 +39,7 @@ const navItems = [
|
|
|
39
39
|
view: "chat",
|
|
40
40
|
},
|
|
41
41
|
{
|
|
42
|
-
icon:
|
|
42
|
+
icon: IconHierarchy2,
|
|
43
43
|
labelKey: "settings.agentTitle",
|
|
44
44
|
href: "/agent",
|
|
45
45
|
view: "agent",
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
useCommandMenuShortcut,
|
|
12
12
|
} from "@agent-native/core/client/navigation";
|
|
13
13
|
import { getThemeInitScript } from "@agent-native/core/client/ui";
|
|
14
|
-
import {
|
|
14
|
+
import { IconHierarchy2, IconSun, IconMoon } from "@tabler/icons-react";
|
|
15
15
|
import { useQueryClient } from "@tanstack/react-query";
|
|
16
16
|
import { useTheme } from "next-themes";
|
|
17
17
|
import { useCallback, useState } from "react";
|
|
@@ -143,7 +143,7 @@ function AppContent() {
|
|
|
143
143
|
"access",
|
|
144
144
|
]}
|
|
145
145
|
>
|
|
146
|
-
<
|
|
146
|
+
<IconHierarchy2 size={16} />
|
|
147
147
|
{t("settings.openAgentSettings")}
|
|
148
148
|
</CommandMenu.Item>
|
|
149
149
|
</CommandMenu.Group>
|
|
@@ -59,6 +59,12 @@ quick controls and deep links such as:
|
|
|
59
59
|
- `/settings/usage`
|
|
60
60
|
- `/settings/apps/:appId`
|
|
61
61
|
|
|
62
|
+
The shared Account section is the canonical profile surface at
|
|
63
|
+
`/settings#account`. It owns the editable display name and existing avatar
|
|
64
|
+
control through the authenticated `get-user-profile` and `update-user-profile`
|
|
65
|
+
actions. Shared workspace chrome such as `OrgSwitcher` should link to this
|
|
66
|
+
surface rather than creating an app-local profile page.
|
|
67
|
+
|
|
62
68
|
When adding a new API key, OAuth grant, provider connection, model selector, app
|
|
63
69
|
preference, notification preference, or usage/billing surface, register it as a
|
|
64
70
|
settings tab or app settings panel first. Only add sidebar UI when it is needed
|
|
@@ -359,24 +359,24 @@ const messages = {
|
|
|
359
359
|
hideEveryone: "إخفاء من الجميع",
|
|
360
360
|
localFileDescription:
|
|
361
361
|
"This extension is backed by {{entryPath}}. Edit or remove it from the workspace.",
|
|
362
|
-
deleteQuestion: "
|
|
362
|
+
deleteQuestion: "هل تريد أرشفة {{name}}؟",
|
|
363
363
|
removeQuestion: "Remove {{name}}?",
|
|
364
364
|
hideForYouDescription:
|
|
365
365
|
"يؤدي هذا إلى إخفائه من قائمة الإضافات الخاصة بك دون حذفه لأي شخص آخر.",
|
|
366
366
|
removeEverywhereDescription:
|
|
367
|
-
"يؤدي هذا إلى
|
|
367
|
+
"يؤدي هذا إلى أرشفته في كل مكان تتم مشاركته فيه.",
|
|
368
368
|
cancel: "إلغاء",
|
|
369
369
|
remove: "إزالة",
|
|
370
370
|
removing: "جارٍ الإزالة...",
|
|
371
|
-
delete: "
|
|
372
|
-
deleting: "
|
|
371
|
+
delete: "أرشفة",
|
|
372
|
+
deleting: "جارٍ الأرشفة...",
|
|
373
373
|
openFullView: "فتح عرض كامل",
|
|
374
374
|
removeFromWidgetArea: "إزالة من منطقة القطعة هذه",
|
|
375
|
-
deleteExtensionEllipsis: "
|
|
375
|
+
deleteExtensionEllipsis: "أرشفة الامتداد...",
|
|
376
376
|
removeFromMyListEllipsis: "إزالة من قائمتي...",
|
|
377
377
|
removeFromWidgetAreaForMe: "Remove from this widget area (for me)",
|
|
378
378
|
deleteEverywhereConfirmation:
|
|
379
|
-
"يؤدي هذا إلى
|
|
379
|
+
"يؤدي هذا إلى أرشفة الامتداد في كل مكان، لكل شخص تمت مشاركته معه.",
|
|
380
380
|
addWidget: "إضافة القطعة",
|
|
381
381
|
loading: "جار التحميل...",
|
|
382
382
|
noWidgetsAvailable: "لا توجد أدوات متاحة لهذه الفتحة حتى الآن.",
|
|
@@ -352,24 +352,24 @@ const messages = {
|
|
|
352
352
|
hideEveryone: "Versteck dich vor allen",
|
|
353
353
|
localFileDescription:
|
|
354
354
|
"This extension is backed by {{entryPath}}. Edit or remove it from the workspace.",
|
|
355
|
-
deleteQuestion: "
|
|
355
|
+
deleteQuestion: "{{name}} archivieren?",
|
|
356
356
|
removeQuestion: "Remove {{name}}?",
|
|
357
357
|
hideForYouDescription:
|
|
358
358
|
"Dadurch wird es aus Ihrer Erweiterungsliste ausgeblendet, ohne dass es für andere gelöscht wird.",
|
|
359
359
|
removeEverywhereDescription:
|
|
360
|
-
"Dadurch wird es überall dort
|
|
360
|
+
"Dadurch wird es überall dort archiviert, wo es geteilt wird.",
|
|
361
361
|
cancel: "Abbrechen",
|
|
362
362
|
remove: "Entfernen",
|
|
363
363
|
removing: "Entfernen...",
|
|
364
|
-
delete: "
|
|
365
|
-
deleting: "Wird
|
|
364
|
+
delete: "Archivieren",
|
|
365
|
+
deleting: "Wird archiviert...",
|
|
366
366
|
openFullView: "Vollansicht öffnen",
|
|
367
367
|
removeFromWidgetArea: "Aus diesem Widget-Bereich entfernen",
|
|
368
|
-
deleteExtensionEllipsis: "Erweiterung
|
|
368
|
+
deleteExtensionEllipsis: "Erweiterung archivieren...",
|
|
369
369
|
removeFromMyListEllipsis: "Von meiner Liste entfernen...",
|
|
370
370
|
removeFromWidgetAreaForMe: "Remove from this widget area (for me)",
|
|
371
371
|
deleteEverywhereConfirmation:
|
|
372
|
-
"Dadurch wird die Erweiterung überall und für alle
|
|
372
|
+
"Dadurch wird die Erweiterung überall und für alle archiviert, mit denen sie geteilt wird.",
|
|
373
373
|
addWidget: "Widget hinzufügen",
|
|
374
374
|
loading: "Wird geladen...",
|
|
375
375
|
noWidgetsAvailable: "Für diesen Slot sind noch keine Widgets verfügbar.",
|
|
@@ -344,23 +344,23 @@ const messages = {
|
|
|
344
344
|
hideEveryone: "Hide from everyone",
|
|
345
345
|
localFileDescription:
|
|
346
346
|
"This extension is backed by {{entryPath}}. Edit or remove it from the workspace.",
|
|
347
|
-
deleteQuestion: "
|
|
347
|
+
deleteQuestion: "Archive {{name}}?",
|
|
348
348
|
removeQuestion: "Remove {{name}}?",
|
|
349
349
|
hideForYouDescription:
|
|
350
350
|
"This hides it from your Extensions list without deleting it for anyone else.",
|
|
351
|
-
removeEverywhereDescription: "This
|
|
351
|
+
removeEverywhereDescription: "This archives it everywhere it is shared.",
|
|
352
352
|
cancel: "Cancel",
|
|
353
353
|
remove: "Remove",
|
|
354
354
|
removing: "Removing...",
|
|
355
|
-
delete: "
|
|
356
|
-
deleting: "
|
|
355
|
+
delete: "Archive",
|
|
356
|
+
deleting: "Archiving...",
|
|
357
357
|
openFullView: "Open full view",
|
|
358
358
|
removeFromWidgetArea: "Remove from this widget area",
|
|
359
|
-
deleteExtensionEllipsis: "
|
|
359
|
+
deleteExtensionEllipsis: "Archive extension...",
|
|
360
360
|
removeFromMyListEllipsis: "Remove from my list...",
|
|
361
361
|
removeFromWidgetAreaForMe: "Remove from this widget area (for me)",
|
|
362
362
|
deleteEverywhereConfirmation:
|
|
363
|
-
"This
|
|
363
|
+
"This archives the extension everywhere, for everyone it's shared with.",
|
|
364
364
|
addWidget: "Add widget",
|
|
365
365
|
loading: "Loading...",
|
|
366
366
|
noWidgetsAvailable: "No widgets available for this slot yet.",
|
|
@@ -355,24 +355,24 @@ const messages = {
|
|
|
355
355
|
hideEveryone: "esconderse de todos",
|
|
356
356
|
localFileDescription:
|
|
357
357
|
"This extension is backed by {{entryPath}}. Edit or remove it from the workspace.",
|
|
358
|
-
deleteQuestion: "
|
|
358
|
+
deleteQuestion: "¿Archivar {{name}}?",
|
|
359
359
|
removeQuestion: "Remove {{name}}?",
|
|
360
360
|
hideForYouDescription:
|
|
361
361
|
"Esto lo oculta de su lista de Extensiones sin eliminarlo para nadie más.",
|
|
362
362
|
removeEverywhereDescription:
|
|
363
|
-
"Esto lo
|
|
363
|
+
"Esto lo archiva en todos los lugares donde se comparte.",
|
|
364
364
|
cancel: "Cancelar",
|
|
365
365
|
remove: "Eliminar",
|
|
366
366
|
removing: "Eliminando...",
|
|
367
|
-
delete: "
|
|
368
|
-
deleting: "
|
|
367
|
+
delete: "Archivar",
|
|
368
|
+
deleting: "Archivando...",
|
|
369
369
|
openFullView: "Abrir vista completa",
|
|
370
370
|
removeFromWidgetArea: "Eliminar de esta área de widgets",
|
|
371
|
-
deleteExtensionEllipsis: "
|
|
371
|
+
deleteExtensionEllipsis: "Archivar extensión...",
|
|
372
372
|
removeFromMyListEllipsis: "Quitar de mi lista...",
|
|
373
373
|
removeFromWidgetAreaForMe: "Remove from this widget area (for me)",
|
|
374
374
|
deleteEverywhereConfirmation:
|
|
375
|
-
"Esto
|
|
375
|
+
"Esto archiva la extensión en todas partes, para todas las personas con las que se comparte.",
|
|
376
376
|
addWidget: "Agregar widget",
|
|
377
377
|
loading: "Cargando...",
|
|
378
378
|
noWidgetsAvailable:
|
|
@@ -355,23 +355,23 @@ const messages = {
|
|
|
355
355
|
hideEveryone: "Cacher de tout le monde",
|
|
356
356
|
localFileDescription:
|
|
357
357
|
"This extension is backed by {{entryPath}}. Edit or remove it from the workspace.",
|
|
358
|
-
deleteQuestion: "
|
|
358
|
+
deleteQuestion: "Archiver {{name}} ?",
|
|
359
359
|
removeQuestion: "Remove {{name}}?",
|
|
360
360
|
hideForYouDescription:
|
|
361
361
|
"Cela le masque de votre liste d'extensions sans le supprimer pour quelqu'un d'autre.",
|
|
362
|
-
removeEverywhereDescription: "Cela
|
|
362
|
+
removeEverywhereDescription: "Cela l’archive partout où il est partagé.",
|
|
363
363
|
cancel: "Annuler",
|
|
364
364
|
remove: "Retirer",
|
|
365
365
|
removing: "Suppression...",
|
|
366
|
-
delete: "
|
|
367
|
-
deleting: "
|
|
366
|
+
delete: "Archiver",
|
|
367
|
+
deleting: "Archivage...",
|
|
368
368
|
openFullView: "Ouvrir la vue complète",
|
|
369
369
|
removeFromWidgetArea: "Supprimer de cette zone de widget",
|
|
370
|
-
deleteExtensionEllipsis: "
|
|
370
|
+
deleteExtensionEllipsis: "Archiver l'extension...",
|
|
371
371
|
removeFromMyListEllipsis: "Supprimer de ma liste...",
|
|
372
372
|
removeFromWidgetAreaForMe: "Remove from this widget area (for me)",
|
|
373
373
|
deleteEverywhereConfirmation:
|
|
374
|
-
"Cela
|
|
374
|
+
"Cela archive l'extension partout, pour toutes les personnes avec lesquelles elle est partagée.",
|
|
375
375
|
addWidget: "Ajouter un widget",
|
|
376
376
|
loading: "Chargement...",
|
|
377
377
|
noWidgetsAvailable:
|
|
@@ -338,24 +338,24 @@ const messages = {
|
|
|
338
338
|
hideEveryone: "सबसे छुपाओ",
|
|
339
339
|
localFileDescription:
|
|
340
340
|
"This extension is backed by {{entryPath}}. Edit or remove it from the workspace.",
|
|
341
|
-
deleteQuestion: "
|
|
341
|
+
deleteQuestion: "{{name}} को संग्रहित करें?",
|
|
342
342
|
removeQuestion: "Remove {{name}}?",
|
|
343
343
|
hideForYouDescription:
|
|
344
344
|
"यह इसे किसी अन्य के लिए हटाए बिना आपकी एक्सटेंशन सूची से छिपा देता है।",
|
|
345
345
|
removeEverywhereDescription:
|
|
346
|
-
"यह इसे
|
|
346
|
+
"यह इसे साझा किए गए हर स्थान पर संग्रहित कर देता है।",
|
|
347
347
|
cancel: "रद्द करें",
|
|
348
348
|
remove: "हटाएं",
|
|
349
349
|
removing: "हटाया जा रहा है...",
|
|
350
|
-
delete: "
|
|
351
|
-
deleting: "
|
|
350
|
+
delete: "संग्रहित करें",
|
|
351
|
+
deleting: "संग्रहित किया जा रहा है...",
|
|
352
352
|
openFullView: "पूरा दृश्य खोलें",
|
|
353
353
|
removeFromWidgetArea: "इस विजेट क्षेत्र से हटाएँ",
|
|
354
|
-
deleteExtensionEllipsis: "एक्सटेंशन
|
|
354
|
+
deleteExtensionEllipsis: "एक्सटेंशन संग्रहित करें...",
|
|
355
355
|
removeFromMyListEllipsis: "मेरी सूची से हटाएं...",
|
|
356
356
|
removeFromWidgetAreaForMe: "Remove from this widget area (for me)",
|
|
357
357
|
deleteEverywhereConfirmation:
|
|
358
|
-
"यह एक्सटेंशन को
|
|
358
|
+
"यह एक्सटेंशन को साझा किए गए हर स्थान पर, सभी लोगों के लिए संग्रहित कर देता है।",
|
|
359
359
|
addWidget: "विजेट जोड़ें",
|
|
360
360
|
loading: "लोड हो रहा है...",
|
|
361
361
|
noWidgetsAvailable: "इस स्लॉट के लिए अभी तक कोई विजेट उपलब्ध नहीं है।",
|
|
@@ -344,24 +344,24 @@ const messages = {
|
|
|
344
344
|
hideEveryone: "みんなから隠れて",
|
|
345
345
|
localFileDescription:
|
|
346
346
|
"This extension is backed by {{entryPath}}. Edit or remove it from the workspace.",
|
|
347
|
-
deleteQuestion: "
|
|
347
|
+
deleteQuestion: "{{name}}をアーカイブしますか?",
|
|
348
348
|
removeQuestion: "Remove {{name}}?",
|
|
349
349
|
hideForYouDescription:
|
|
350
350
|
"これにより、他のユーザーが削除することなく、拡張機能リストから非表示になります。",
|
|
351
351
|
removeEverywhereDescription:
|
|
352
|
-
"
|
|
352
|
+
"これにより、共有されているすべての場所でアーカイブされます。",
|
|
353
353
|
cancel: "キャンセル",
|
|
354
354
|
remove: "削除",
|
|
355
355
|
removing: "削除中...",
|
|
356
|
-
delete: "
|
|
357
|
-
deleting: "
|
|
356
|
+
delete: "アーカイブ",
|
|
357
|
+
deleting: "アーカイブ中...",
|
|
358
358
|
openFullView: "フルビューを開く",
|
|
359
359
|
removeFromWidgetArea: "このウィジェット領域から削除する",
|
|
360
|
-
deleteExtensionEllipsis: "
|
|
360
|
+
deleteExtensionEllipsis: "拡張機能をアーカイブ...",
|
|
361
361
|
removeFromMyListEllipsis: "リストから削除...",
|
|
362
362
|
removeFromWidgetAreaForMe: "Remove from this widget area (for me)",
|
|
363
363
|
deleteEverywhereConfirmation:
|
|
364
|
-
"
|
|
364
|
+
"これにより、共有されているすべてのユーザーの拡張機能がどこからでもアーカイブされます。",
|
|
365
365
|
addWidget: "ウィジェットを追加する",
|
|
366
366
|
loading: "読み込み中...",
|
|
367
367
|
noWidgetsAvailable:
|