@agent-native/core 0.121.2 → 0.122.1
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/README.md +4 -12
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +148 -0
- package/corpus/core/docs/content/actions.mdx +2 -2
- package/corpus/core/docs/content/agent-surfaces.mdx +1 -1
- package/corpus/core/docs/content/authentication.mdx +2 -0
- package/corpus/core/docs/content/deployment.mdx +36 -0
- package/corpus/core/docs/content/http-api.mdx +266 -0
- package/corpus/core/docs/content/syncing-template-changes.mdx +159 -0
- package/corpus/core/package.json +2 -1
- package/corpus/core/src/a2a/activity.ts +38 -27
- package/corpus/core/src/a2a/client.ts +57 -4
- package/corpus/core/src/agent/engine/builder-engine.ts +35 -4
- package/corpus/core/src/agent/run-manager.ts +20 -1
- package/corpus/core/src/agent/run-store.ts +4 -1
- package/corpus/core/src/agent/types.ts +28 -8
- package/corpus/core/src/chat-threads/store.ts +45 -0
- package/corpus/core/src/checkpoints/index.ts +2 -0
- package/corpus/core/src/checkpoints/route-match.ts +13 -0
- package/corpus/core/src/cli/create.ts +105 -17
- package/corpus/core/src/cli/index.ts +20 -0
- package/corpus/core/src/cli/template-baseline.ts +410 -0
- package/corpus/core/src/cli/template-sync.ts +1004 -0
- package/corpus/core/src/cli/templates-meta.ts +1 -0
- package/corpus/core/src/client/AssistantChat.tsx +38 -12
- package/corpus/core/src/client/NewWorkspaceAppFlow.tsx +75 -10
- package/corpus/core/src/client/chat/message-components.tsx +127 -66
- package/corpus/core/src/client/chat/tool-call-display.tsx +29 -5
- package/corpus/core/src/client/error-format.ts +18 -0
- package/corpus/core/src/client/org/OrgSwitcher.tsx +30 -8
- package/corpus/core/src/client/org/TeamPage.tsx +7 -6
- package/corpus/core/src/client/settings/SettingsPanel.tsx +9 -9
- package/corpus/core/src/client/settings/SettingsTabsPage.tsx +12 -2
- package/corpus/core/src/client/sse-event-processor.ts +3 -0
- package/corpus/core/src/data-widgets/index.ts +41 -0
- package/corpus/core/src/deploy/build.ts +11 -9
- package/corpus/core/src/extensions/url-safety.ts +67 -4
- package/corpus/core/src/integrations/webhook-handler.ts +63 -9
- package/corpus/core/src/org/auto-join-domain.ts +4 -3
- package/corpus/core/src/org/context.ts +108 -39
- package/corpus/core/src/org/index.ts +5 -0
- package/corpus/core/src/org/service-identity.ts +60 -0
- package/corpus/core/src/provider-api/index.ts +22 -1
- package/corpus/core/src/scripts/docs/search.ts +12 -1
- package/corpus/core/src/server/agent-chat/context-tools.ts +9 -4
- package/corpus/core/src/server/agent-chat/framework-prompts.ts +38 -66
- package/corpus/core/src/server/agent-chat-plugin.ts +17 -10
- package/corpus/core/src/server/agents-bundle.ts +84 -5
- package/corpus/core/src/server/auth.ts +4 -3
- package/corpus/core/src/server/builder-browser.ts +47 -19
- package/corpus/core/src/server/core-routes-plugin.ts +2 -2
- package/corpus/core/src/server/credential-provider.ts +209 -68
- package/corpus/core/src/server/index.ts +3 -0
- package/corpus/core/src/server/prompts/framework-core-compact.ts +6 -13
- package/corpus/core/src/server/prompts/framework-core.ts +9 -21
- package/corpus/core/src/server/prompts/index.ts +0 -1
- package/corpus/core/src/server/prompts/shared-rules.ts +19 -11
- package/corpus/core/src/server/ssr-handler.ts +13 -2
- package/corpus/core/src/settings/user-settings.ts +13 -1
- package/corpus/core/src/shared/cache-control.ts +141 -0
- package/corpus/core/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/core/src/templates/chat/_gitignore +1 -0
- package/corpus/core/src/templates/chat/app/components/layout/Sidebar.tsx +0 -7
- package/corpus/core/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/core/src/templates/default/app/root.tsx +1 -1
- package/corpus/core/src/templates/default/public/manifest.json +2 -2
- package/corpus/core/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/core/src/templates/workspace-core/.agents/skills/performance/SKILL.md +19 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/core/src/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +1 -0
- package/corpus/core/src/vite/agents-bundle-plugin.ts +7 -6
- package/corpus/core/src/vite/client.ts +69 -3
- package/corpus/templates/analytics/.agents/skills/adhoc-analysis/SKILL.md +4 -5
- package/corpus/templates/analytics/.agents/skills/admin-surfaces/SKILL.md +55 -0
- package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +10 -0
- package/corpus/templates/analytics/.agents/skills/dashboard-management/references/template-catalog-and-demo.md +62 -0
- package/corpus/templates/analytics/.agents/skills/dashboard-ops/SKILL.md +85 -0
- package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +27 -2
- package/corpus/templates/analytics/.agents/skills/data-querying/references/inline-chart-embeds.md +139 -0
- package/corpus/templates/analytics/.agents/skills/monitoring/SKILL.md +77 -0
- package/corpus/templates/analytics/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/templates/analytics/AGENTS.md +91 -563
- package/corpus/templates/analytics/_gitignore +1 -0
- package/corpus/templates/analytics/actions/bigquery.ts +12 -4
- package/corpus/templates/analytics/actions/generate-chart.ts +5 -5
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +30 -1
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +1 -23
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/DashboardFilterBar.tsx +3 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +1 -1
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +1 -0
- package/corpus/templates/analytics/app/routes/_index.tsx +1 -1
- package/corpus/templates/analytics/changelog/2026-07-24-analytics-finds-saved-dashboards-and-queries-far-more-reliab.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-24-notion-access-errors-now-explain-that-a-page-needs-sharing-w.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-25-app-branding-now-uses-the-product-name-without-the-agent-nat.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
- package/corpus/templates/analytics/package.json +1 -1
- package/corpus/templates/analytics/public/manifest.json +1 -1
- package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +7 -0
- package/corpus/templates/analytics/server/lib/analytics-query-catalog.ts +191 -30
- package/corpus/templates/analytics/server/lib/bigquery.ts +11 -1
- package/corpus/templates/analytics/server/lib/notion.ts +15 -4
- package/corpus/templates/analytics/server/plugins/agent-chat.ts +10 -0
- package/corpus/templates/analytics/server/plugins/auth.ts +1 -1
- package/corpus/templates/assets/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/templates/assets/app/components/layout/Sidebar.tsx +0 -2
- package/corpus/templates/assets/app/routes/_index.tsx +1 -1
- package/corpus/templates/assets/changelog/2026-07-25-app-branding-now-uses-the-product-name-without-the-agent-nat.md +6 -0
- package/corpus/templates/assets/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
- package/corpus/templates/assets/server/plugins/auth.ts +1 -1
- package/corpus/templates/brain/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/templates/brain/_gitignore +1 -0
- package/corpus/templates/brain/app/lib/brain.ts +0 -7
- package/corpus/templates/brain/app/routes/_index.tsx +1 -2
- package/corpus/templates/brain/changelog/2026-07-25-app-branding-now-uses-the-product-name-without-the-agent-nat.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
- package/corpus/templates/brain/package.json +1 -1
- package/corpus/templates/brain/public/manifest.json +1 -1
- package/corpus/templates/brain/server/plugins/auth.ts +1 -1
- package/corpus/templates/calendar/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/templates/calendar/_gitignore +1 -0
- package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +0 -6
- package/corpus/templates/calendar/app/routes/_app._index.tsx +1 -1
- package/corpus/templates/calendar/changelog/2026-07-25-app-branding-now-uses-the-product-name-without-the-agent-nat.md +6 -0
- package/corpus/templates/calendar/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
- package/corpus/templates/calendar/package.json +1 -1
- package/corpus/templates/calendar/public/manifest.json +1 -1
- package/corpus/templates/calendar/server/plugins/auth.ts +1 -1
- package/corpus/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/templates/chat/_gitignore +1 -0
- package/corpus/templates/chat/app/components/layout/Sidebar.tsx +0 -7
- package/corpus/templates/chat/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
- package/corpus/templates/clips/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/templates/clips/.agents/skills/video-sharing/SKILL.md +34 -0
- package/corpus/templates/clips/AGENTS.md +5 -4
- package/corpus/templates/clips/_gitignore +1 -0
- package/corpus/templates/clips/actions/cleanup-transcript.ts +5 -0
- package/corpus/templates/clips/actions/get-recording-insights.ts +44 -8
- package/corpus/templates/clips/actions/get-recording-player-data.ts +39 -70
- package/corpus/templates/clips/actions/import-loom-recording.ts +53 -98
- package/corpus/templates/clips/actions/lib/loom-import-job.ts +260 -0
- package/corpus/templates/clips/actions/list-clip-views.ts +2 -4
- package/corpus/templates/clips/actions/list-recordings.ts +69 -19
- package/corpus/templates/clips/actions/list-viewers.ts +5 -2
- package/corpus/templates/clips/actions/regenerate-summary.ts +5 -1
- package/corpus/templates/clips/actions/request-transcript.ts +28 -1
- package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +21 -1
- package/corpus/templates/clips/app/components/library/library-layout.tsx +0 -7
- package/corpus/templates/clips/app/components/meetings/quick-ask-sidebar.tsx +14 -1
- package/corpus/templates/clips/app/components/player/insights-panel.tsx +8 -20
- package/corpus/templates/clips/app/components/player/recording-views-badge.tsx +335 -0
- package/corpus/templates/clips/app/components/player/video-player.tsx +13 -8
- package/corpus/templates/clips/app/components/sharing/share-ui.tsx +2 -1
- package/corpus/templates/clips/app/i18n/en-US.ts +13 -2
- package/corpus/templates/clips/app/lib/capture-permissions.ts +110 -0
- package/corpus/templates/clips/app/lib/recording-link.ts +32 -0
- package/corpus/templates/clips/app/routes/_app.library._index.tsx +1 -1
- package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +27 -0
- package/corpus/templates/clips/app/routes/_index.tsx +1 -1
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +52 -15
- package/corpus/templates/clips/app/routes/record.tsx +82 -31
- package/corpus/templates/clips/app/routes/share.$shareId.tsx +42 -31
- package/corpus/templates/clips/changelog/2026-07-24-clip-pages-now-show-a-view-count-with-viewer-avatars-next-to.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-24-clip-summaries-read-like-a-description-you-d-write-yourself-.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-24-clip-view-counts-now-separate-human-views-from-agent-views-s.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-24-clips-actions-can-now-be-called-by-org-service-tokens-so-ext.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-24-clips-no-longer-briefly-shows-a-dock-icon-while-launching.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-24-fixed-owner-and-editor-share-links-redirecting-to-the-record.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-24-meeting-and-note-recordings-now-start-as-a-compact-pill-on-t.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-24-new-clips-now-copy-a-shareable-link-instead-of-the-owner-onl.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-24-opening-a-share-link-as-the-clip-s-owner-now-goes-straight-t.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-24-permissions-and-rewind-controls-now-use-compact-consistent-h.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-24-quitting-the-desktop-app-no-longer-shows-a-false-macos-crash.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-24-screen-recording-permission-errors-now-name-the-exact-app-to.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-24-the-desktop-app-now-copies-a-new-clip-s-share-link-to-your-c.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-24-the-recording-toolbar-now-stays-above-other-apps-including-o.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-24-transcript-captions-now-use-real-speech-timings-instead-of-a.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-24-video-playback-no-longer-stutters-and-replays-the-last-momen.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-25-app-branding-now-uses-the-product-name-without-the-agent-nat.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
- package/corpus/templates/clips/chrome-extension/src/background.ts +17 -1
- package/corpus/templates/clips/desktop/package.json +2 -0
- package/corpus/templates/clips/desktop/src/app.tsx +89 -0
- package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +9 -3
- package/corpus/templates/clips/desktop/src/lib/audio-meter.ts +51 -0
- package/corpus/templates/clips/desktop/src/lib/native-notification.ts +44 -0
- package/corpus/templates/clips/desktop/src/lib/recording-link.ts +67 -0
- package/corpus/templates/clips/desktop/src/overlays/live-audio-bars.tsx +35 -35
- package/corpus/templates/clips/desktop/src/overlays/live-transcript.tsx +3 -2
- package/corpus/templates/clips/desktop/src/overlays/recording-pill.tsx +47 -46
- package/corpus/templates/clips/desktop/src/styles.css +127 -78
- package/corpus/templates/clips/desktop/src-tauri/Cargo.toml +7 -0
- package/corpus/templates/clips/desktop/src-tauri/Info.plist +6 -0
- package/corpus/templates/clips/desktop/src-tauri/capabilities/default.json +1 -0
- package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +7 -3
- package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +4 -1
- package/corpus/templates/clips/desktop/src-tauri/src/main.rs +8 -0
- package/corpus/templates/clips/desktop/src-tauri/src/recording_indicator.rs +21 -10
- package/corpus/templates/clips/desktop/src-tauri/src/util.rs +40 -0
- package/corpus/templates/clips/server/db/schema.ts +27 -0
- package/corpus/templates/clips/server/lib/agent-views.ts +145 -0
- package/corpus/templates/clips/server/lib/post-finalize-dispatch.ts +2 -1
- package/corpus/templates/clips/server/lib/public-agent-context.ts +7 -0
- package/corpus/templates/clips/server/lib/recording-share-grant.ts +79 -0
- package/corpus/templates/clips/server/lib/recordings.ts +51 -3
- package/corpus/templates/clips/server/plugins/auth.ts +1 -1
- package/corpus/templates/clips/server/plugins/db.ts +31 -0
- package/corpus/templates/clips/server/routes/api/_agent-native-background/post-finalize-worker.post.ts +56 -3
- package/corpus/templates/clips/server/routes/api/public-recording.get.ts +49 -17
- package/corpus/templates/clips/shared/recording-link.ts +43 -0
- package/corpus/templates/clips/shared/share-attribution.ts +4 -0
- package/corpus/templates/clips/shared/share-dashboard-redirect.ts +42 -0
- package/corpus/templates/clips/shared/view-analytics.ts +26 -0
- package/corpus/templates/content/.agents/skills/content/SKILL.md +5 -0
- package/corpus/templates/content/.agents/skills/content/references/local-file-mode.md +135 -0
- package/corpus/templates/content/.agents/skills/document-editing/SKILL.md +12 -0
- package/corpus/templates/content/.agents/skills/document-editing/references/databases.md +238 -0
- package/corpus/templates/content/.agents/skills/document-editing/references/document-behavior.md +91 -0
- package/corpus/templates/content/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/templates/content/AGENTS.md +62 -583
- package/corpus/templates/content/_gitignore +1 -0
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +1 -39
- package/corpus/templates/content/app/routes/_app._index.tsx +1 -2
- package/corpus/templates/content/changelog/2026-07-25-app-branding-now-uses-the-product-name-without-the-agent-nat.md +6 -0
- package/corpus/templates/content/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
- package/corpus/templates/content/package.json +1 -1
- package/corpus/templates/content/public/manifest.json +1 -1
- package/corpus/templates/content/server/plugins/auth.ts +1 -1
- package/corpus/templates/design/.agents/skills/creative-context/SKILL.md +11 -0
- package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +50 -8
- package/corpus/templates/design/.agents/skills/design-generation/references/code-layers.md +81 -0
- package/corpus/templates/design/.agents/skills/design-generation/references/code-workspace.md +42 -0
- package/corpus/templates/design/.agents/skills/design-generation/references/editor-extensions.md +34 -0
- package/corpus/templates/design/.agents/skills/responsive-breakpoints/SKILL.md +4 -1
- package/corpus/templates/design/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/templates/design/.agents/skills/visual-edit/SKILL.md +17 -0
- package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +8196 -0
- package/corpus/templates/design/.generated/bridge/embedded-wheel.generated.ts +265 -0
- package/corpus/templates/design/.generated/bridge/hit-test.generated.ts +642 -0
- package/corpus/templates/design/.generated/bridge/motion-preview.generated.ts +571 -0
- package/corpus/templates/design/.generated/bridge/nav.generated.ts +91 -0
- package/corpus/templates/design/.generated/bridge/sample.generated.ts +23 -0
- package/corpus/templates/design/.generated/bridge/shader-fill-preview.generated.ts +263 -0
- package/corpus/templates/design/.generated/bridge/shader-runtime.generated.ts +518 -0
- package/corpus/templates/design/.generated/bridge/tweak.generated.ts +20 -0
- package/corpus/templates/design/.generated/bridge/zoom.generated.ts +32 -0
- package/corpus/templates/design/AGENTS.md +88 -503
- package/corpus/templates/design/_gitignore +1 -0
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +0 -2
- package/corpus/templates/design/app/routes/_index.tsx +1 -1
- package/corpus/templates/design/changelog/2026-07-25-app-branding-now-uses-the-product-name-without-the-agent-nat.md +6 -0
- package/corpus/templates/design/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
- package/corpus/templates/design/server/plugins/auth.ts +1 -1
- package/corpus/templates/dispatch/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/templates/dispatch/_gitignore +1 -0
- package/corpus/templates/dispatch/app/dispatch-extensions.tsx +1 -10
- package/corpus/templates/dispatch/app/routes/overview.tsx +1 -1
- package/corpus/templates/dispatch/changelog/2026-07-24-signing-in-now-puts-you-in-your-companys-workspace.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-07-25-app-branding-now-uses-the-product-name-without-the-agent-nat.md +6 -0
- package/corpus/templates/dispatch/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
- package/corpus/templates/dispatch/package.json +1 -1
- package/corpus/templates/dispatch/public/manifest.json +1 -1
- package/corpus/templates/forms/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/templates/forms/_gitignore +1 -0
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +0 -35
- package/corpus/templates/forms/changelog/2026-07-25-app-branding-now-uses-the-product-name-without-the-agent-nat.md +6 -0
- package/corpus/templates/forms/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
- package/corpus/templates/forms/package.json +1 -1
- package/corpus/templates/forms/public/manifest.json +1 -1
- package/corpus/templates/forms/server/lib/public-form-ssr.ts +2 -2
- package/corpus/templates/forms/server/plugins/auth.ts +1 -1
- package/corpus/templates/macros/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/templates/macros/_gitignore +1 -0
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +0 -2
- package/corpus/templates/macros/changelog/2026-07-25-app-branding-now-uses-the-product-name-without-the-agent-nat.md +6 -0
- package/corpus/templates/macros/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
- package/corpus/templates/macros/package.json +1 -1
- package/corpus/templates/macros/server/plugins/auth.ts +2 -2
- package/corpus/templates/mail/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/templates/mail/_gitignore +1 -0
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +0 -39
- package/corpus/templates/mail/app/routes/$view.$threadId.tsx +1 -1
- package/corpus/templates/mail/app/routes/$view.tsx +1 -1
- package/corpus/templates/mail/app/routes/_index.tsx +1 -1
- package/corpus/templates/mail/changelog/2026-07-25-app-branding-now-uses-the-product-name-without-the-agent-nat.md +6 -0
- package/corpus/templates/mail/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
- package/corpus/templates/mail/package.json +1 -1
- package/corpus/templates/mail/public/manifest.json +1 -1
- package/corpus/templates/mail/server/plugins/auth.ts +1 -1
- package/corpus/templates/plan/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/templates/plan/_gitignore +1 -0
- package/corpus/templates/plan/agent-native.app-skill.json +1 -1
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +4 -9
- package/corpus/templates/plan/app/lib/app-config.ts +1 -1
- package/corpus/templates/plan/changelog/2026-07-25-app-branding-now-uses-the-product-name-without-the-agent-nat.md +6 -0
- package/corpus/templates/plan/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
- package/corpus/templates/plan/package.json +1 -1
- package/corpus/templates/plan/public/manifest.json +1 -1
- package/corpus/templates/plan/server/plugins/auth.ts +1 -1
- package/corpus/templates/slides/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/templates/slides/_gitignore +1 -0
- package/corpus/templates/slides/app/components/layout/Sidebar.tsx +0 -2
- package/corpus/templates/slides/app/routes/_index.tsx +1 -1
- package/corpus/templates/slides/changelog/2026-07-25-app-branding-now-uses-the-product-name-without-the-agent-nat.md +6 -0
- package/corpus/templates/slides/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
- package/corpus/templates/slides/package.json +1 -1
- package/corpus/templates/slides/public/manifest.json +1 -1
- package/corpus/templates/slides/server/plugins/auth.ts +1 -1
- package/corpus/templates/slides/server/plugins/db.ts +4 -0
- package/corpus/templates/tasks/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/corpus/templates/tasks/AGENTS.md +1 -1
- package/corpus/templates/tasks/_gitignore +1 -0
- package/dist/a2a/activity.d.ts +4 -1
- package/dist/a2a/activity.d.ts.map +1 -1
- package/dist/a2a/activity.js +27 -16
- package/dist/a2a/activity.js.map +1 -1
- package/dist/a2a/client.d.ts.map +1 -1
- package/dist/a2a/client.js +58 -4
- package/dist/a2a/client.js.map +1 -1
- package/dist/agent/engine/builder-engine.d.ts +1 -0
- package/dist/agent/engine/builder-engine.d.ts.map +1 -1
- package/dist/agent/engine/builder-engine.js +31 -4
- package/dist/agent/engine/builder-engine.js.map +1 -1
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +18 -1
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/run-store.d.ts +1 -0
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +2 -1
- package/dist/agent/run-store.js.map +1 -1
- package/dist/agent/types.d.ts +12 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js +21 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/chat-threads/store.d.ts +10 -0
- package/dist/chat-threads/store.d.ts.map +1 -1
- package/dist/chat-threads/store.js +41 -0
- package/dist/chat-threads/store.js.map +1 -1
- package/dist/checkpoints/index.d.ts +1 -0
- package/dist/checkpoints/index.d.ts.map +1 -1
- package/dist/checkpoints/index.js +1 -0
- package/dist/checkpoints/index.js.map +1 -1
- package/dist/checkpoints/route-match.d.ts +8 -0
- package/dist/checkpoints/route-match.d.ts.map +1 -0
- package/dist/checkpoints/route-match.js +13 -0
- package/dist/checkpoints/route-match.js.map +1 -0
- package/dist/cli/create.d.ts +35 -4
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +69 -19
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/index.js +19 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/template-baseline.d.ts +54 -0
- package/dist/cli/template-baseline.d.ts.map +1 -0
- package/dist/cli/template-baseline.js +334 -0
- package/dist/cli/template-baseline.js.map +1 -0
- package/dist/cli/template-sync.d.ts +57 -0
- package/dist/cli/template-sync.d.ts.map +1 -0
- package/dist/cli/template-sync.js +787 -0
- package/dist/cli/template-sync.js.map +1 -0
- package/dist/cli/templates-meta.d.ts.map +1 -1
- package/dist/cli/templates-meta.js +1 -0
- package/dist/cli/templates-meta.js.map +1 -1
- package/dist/client/AssistantChat.d.ts +2 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +38 -10
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/NewWorkspaceAppFlow.d.ts.map +1 -1
- package/dist/client/NewWorkspaceAppFlow.js +32 -2
- package/dist/client/NewWorkspaceAppFlow.js.map +1 -1
- package/dist/client/chat/message-components.d.ts +20 -0
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +81 -46
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/chat/tool-call-display.d.ts.map +1 -1
- package/dist/client/chat/tool-call-display.js +14 -6
- package/dist/client/chat/tool-call-display.js.map +1 -1
- package/dist/client/error-format.d.ts.map +1 -1
- package/dist/client/error-format.js +13 -0
- package/dist/client/error-format.js.map +1 -1
- package/dist/client/org/OrgSwitcher.d.ts +8 -1
- package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
- package/dist/client/org/OrgSwitcher.js +3 -2
- package/dist/client/org/OrgSwitcher.js.map +1 -1
- package/dist/client/org/TeamPage.d.ts.map +1 -1
- package/dist/client/org/TeamPage.js +1 -1
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/settings/SettingsPanel.js +9 -9
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
- package/dist/client/settings/SettingsTabsPage.js +7 -4
- package/dist/client/settings/SettingsTabsPage.js.map +1 -1
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +3 -0
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/data-widgets/index.d.ts +3 -0
- package/dist/data-widgets/index.d.ts.map +1 -1
- package/dist/data-widgets/index.js +33 -0
- package/dist/data-widgets/index.js.map +1 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +11 -7
- package/dist/deploy/build.js.map +1 -1
- package/dist/eject/provider-api-definitions.d.ts +1 -0
- package/dist/eject/provider-api-definitions.d.ts.map +1 -1
- package/dist/extensions/url-safety.d.ts +9 -16
- package/dist/extensions/url-safety.d.ts.map +1 -1
- package/dist/extensions/url-safety.js +48 -4
- package/dist/extensions/url-safety.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/integrations/webhook-handler.d.ts.map +1 -1
- package/dist/integrations/webhook-handler.js +46 -9
- package/dist/integrations/webhook-handler.js.map +1 -1
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/routes.d.ts +3 -3
- package/dist/org/auto-join-domain.d.ts +3 -2
- package/dist/org/auto-join-domain.d.ts.map +1 -1
- package/dist/org/auto-join-domain.js +1 -1
- package/dist/org/auto-join-domain.js.map +1 -1
- package/dist/org/context.d.ts.map +1 -1
- package/dist/org/context.js +84 -28
- package/dist/org/context.js.map +1 -1
- package/dist/org/index.d.ts +1 -0
- package/dist/org/index.d.ts.map +1 -1
- package/dist/org/index.js +1 -0
- package/dist/org/index.js.map +1 -1
- package/dist/org/service-identity.d.ts +43 -0
- package/dist/org/service-identity.d.ts.map +1 -0
- package/dist/org/service-identity.js +34 -0
- package/dist/org/service-identity.js.map +1 -0
- package/dist/provider-api/actions/custom-provider-registration.d.ts +14 -14
- package/dist/provider-api/actions/provider-api.d.ts +13 -11
- package/dist/provider-api/actions/provider-api.d.ts.map +1 -1
- package/dist/provider-api/index.d.ts +4 -0
- package/dist/provider-api/index.d.ts.map +1 -1
- package/dist/provider-api/index.js +17 -1
- package/dist/provider-api/index.js.map +1 -1
- package/dist/scripts/docs/search.d.ts.map +1 -1
- package/dist/scripts/docs/search.js +12 -1
- package/dist/scripts/docs/search.js.map +1 -1
- package/dist/server/agent-chat/context-tools.d.ts.map +1 -1
- package/dist/server/agent-chat/context-tools.js +3 -3
- package/dist/server/agent-chat/context-tools.js.map +1 -1
- package/dist/server/agent-chat/framework-prompts.d.ts +8 -3
- package/dist/server/agent-chat/framework-prompts.d.ts.map +1 -1
- package/dist/server/agent-chat/framework-prompts.js +33 -62
- package/dist/server/agent-chat/framework-prompts.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +16 -10
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/agents-bundle.d.ts +18 -0
- package/dist/server/agents-bundle.d.ts.map +1 -1
- package/dist/server/agents-bundle.js +70 -4
- package/dist/server/agents-bundle.js.map +1 -1
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +4 -3
- package/dist/server/auth.js.map +1 -1
- package/dist/server/builder-browser.d.ts.map +1 -1
- package/dist/server/builder-browser.js +43 -19
- package/dist/server/builder-browser.js.map +1 -1
- package/dist/server/core-routes-plugin.js +2 -2
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/credential-provider.d.ts +38 -2
- package/dist/server/credential-provider.d.ts.map +1 -1
- package/dist/server/credential-provider.js +142 -64
- package/dist/server/credential-provider.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/prompts/framework-core-compact.d.ts +1 -1
- package/dist/server/prompts/framework-core-compact.d.ts.map +1 -1
- package/dist/server/prompts/framework-core-compact.js +7 -13
- package/dist/server/prompts/framework-core-compact.js.map +1 -1
- package/dist/server/prompts/framework-core.d.ts +1 -1
- package/dist/server/prompts/framework-core.d.ts.map +1 -1
- package/dist/server/prompts/framework-core.js +10 -21
- package/dist/server/prompts/framework-core.js.map +1 -1
- package/dist/server/prompts/index.d.ts +1 -1
- package/dist/server/prompts/index.d.ts.map +1 -1
- package/dist/server/prompts/index.js +1 -1
- package/dist/server/prompts/index.js.map +1 -1
- package/dist/server/prompts/shared-rules.d.ts +16 -10
- package/dist/server/prompts/shared-rules.d.ts.map +1 -1
- package/dist/server/prompts/shared-rules.js +19 -10
- package/dist/server/prompts/shared-rules.js.map +1 -1
- package/dist/server/ssr-handler.d.ts +1 -1
- package/dist/server/ssr-handler.d.ts.map +1 -1
- package/dist/server/ssr-handler.js +10 -3
- package/dist/server/ssr-handler.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/settings/user-settings.d.ts.map +1 -1
- package/dist/settings/user-settings.js +13 -1
- package/dist/settings/user-settings.js.map +1 -1
- package/dist/shared/cache-control.d.ts +52 -0
- package/dist/shared/cache-control.d.ts.map +1 -1
- package/dist/shared/cache-control.js +107 -0
- package/dist/shared/cache-control.js.map +1 -1
- package/dist/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/dist/templates/chat/_gitignore +1 -0
- package/dist/templates/chat/app/components/layout/Sidebar.tsx +0 -7
- package/dist/templates/chat/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
- package/dist/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/dist/templates/default/app/root.tsx +1 -1
- package/dist/templates/default/public/manifest.json +2 -2
- package/dist/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +19 -0
- package/dist/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/dist/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +1 -0
- package/dist/vite/agents-bundle-plugin.d.ts.map +1 -1
- package/dist/vite/agents-bundle-plugin.js +8 -7
- package/dist/vite/agents-bundle-plugin.js.map +1 -1
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +66 -1
- package/dist/vite/client.js.map +1 -1
- package/docs/content/actions.mdx +2 -2
- package/docs/content/agent-surfaces.mdx +1 -1
- package/docs/content/authentication.mdx +2 -0
- package/docs/content/deployment.mdx +36 -0
- package/docs/content/http-api.mdx +266 -0
- package/docs/content/syncing-template-changes.mdx +159 -0
- package/package.json +4 -3
- package/src/a2a/activity.ts +38 -27
- package/src/a2a/client.ts +57 -4
- package/src/agent/engine/builder-engine.ts +35 -4
- package/src/agent/run-manager.ts +20 -1
- package/src/agent/run-store.ts +4 -1
- package/src/agent/types.ts +28 -8
- package/src/chat-threads/store.ts +45 -0
- package/src/checkpoints/index.ts +2 -0
- package/src/checkpoints/route-match.ts +13 -0
- package/src/cli/create.ts +105 -17
- package/src/cli/index.ts +20 -0
- package/src/cli/template-baseline.ts +410 -0
- package/src/cli/template-sync.ts +1004 -0
- package/src/cli/templates-meta.ts +1 -0
- package/src/client/AssistantChat.tsx +38 -12
- package/src/client/NewWorkspaceAppFlow.tsx +75 -10
- package/src/client/chat/message-components.tsx +127 -66
- package/src/client/chat/tool-call-display.tsx +29 -5
- package/src/client/error-format.ts +18 -0
- package/src/client/org/OrgSwitcher.tsx +30 -8
- package/src/client/org/TeamPage.tsx +7 -6
- package/src/client/settings/SettingsPanel.tsx +9 -9
- package/src/client/settings/SettingsTabsPage.tsx +12 -2
- package/src/client/sse-event-processor.ts +3 -0
- package/src/data-widgets/index.ts +41 -0
- package/src/deploy/build.ts +11 -9
- package/src/extensions/url-safety.ts +67 -4
- package/src/integrations/webhook-handler.ts +63 -9
- package/src/org/auto-join-domain.ts +4 -3
- package/src/org/context.ts +108 -39
- package/src/org/index.ts +5 -0
- package/src/org/service-identity.ts +60 -0
- package/src/provider-api/index.ts +22 -1
- package/src/scripts/docs/search.ts +12 -1
- package/src/server/__snapshots__/agent-chat-plugin.surface.spec.ts.snap +25 -36
- package/src/server/agent-chat/context-tools.ts +9 -4
- package/src/server/agent-chat/framework-prompts.ts +38 -66
- package/src/server/agent-chat-plugin.ts +17 -10
- package/src/server/agents-bundle.ts +84 -5
- package/src/server/auth.ts +4 -3
- package/src/server/builder-browser.ts +47 -19
- package/src/server/core-routes-plugin.ts +2 -2
- package/src/server/credential-provider.ts +209 -68
- package/src/server/index.ts +3 -0
- package/src/server/prompts/framework-core-compact.ts +6 -13
- package/src/server/prompts/framework-core.ts +9 -21
- package/src/server/prompts/index.ts +0 -1
- package/src/server/prompts/shared-rules.ts +19 -11
- package/src/server/ssr-handler.ts +13 -2
- package/src/settings/user-settings.ts +13 -1
- package/src/shared/cache-control.ts +141 -0
- package/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/src/templates/chat/_gitignore +1 -0
- package/src/templates/chat/app/components/layout/Sidebar.tsx +0 -7
- package/src/templates/chat/changelog/2026-07-25-settings-navigation-now-keeps-manage-agent-as-a-dedicated-li.md +6 -0
- package/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/src/templates/default/app/root.tsx +1 -1
- package/src/templates/default/public/manifest.json +2 -2
- package/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +19 -0
- package/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +24 -2
- package/src/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +1 -0
- package/src/vite/agents-bundle-plugin.ts +7 -6
- package/src/vite/client.ts +69 -3
|
@@ -823,19 +823,19 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
823
823
|
}
|
|
824
824
|
|
|
825
825
|
.live-audio-bars-compact {
|
|
826
|
-
width:
|
|
826
|
+
width: 24px;
|
|
827
827
|
height: 22px;
|
|
828
828
|
gap: 3px;
|
|
829
829
|
}
|
|
830
830
|
|
|
831
831
|
.live-audio-bar {
|
|
832
832
|
display: block;
|
|
833
|
-
width:
|
|
834
|
-
min-height:
|
|
833
|
+
width: 2.5px;
|
|
834
|
+
min-height: 2.5px;
|
|
835
835
|
border-radius: 999px;
|
|
836
836
|
background: rgba(132, 204, 22, 0.98);
|
|
837
837
|
box-shadow: 0 0 5px rgba(132, 204, 22, 0.35);
|
|
838
|
-
transition: height
|
|
838
|
+
transition: height 90ms ease-out;
|
|
839
839
|
}
|
|
840
840
|
|
|
841
841
|
@media (prefers-reduced-motion: reduce) {
|
|
@@ -945,19 +945,20 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
945
945
|
align-items: center;
|
|
946
946
|
gap: 8px;
|
|
947
947
|
width: 100%;
|
|
948
|
-
min-height:
|
|
948
|
+
min-height: 36px;
|
|
949
949
|
border: none;
|
|
950
950
|
background: transparent;
|
|
951
951
|
border-radius: var(--radius-sm);
|
|
952
|
-
color: var(--fg);
|
|
952
|
+
color: var(--fg-muted);
|
|
953
953
|
cursor: pointer;
|
|
954
|
-
padding:
|
|
954
|
+
padding: 7px 12px;
|
|
955
955
|
text-align: left;
|
|
956
|
-
transition:
|
|
956
|
+
transition: color 120ms;
|
|
957
957
|
}
|
|
958
958
|
|
|
959
|
-
.readiness-summary:hover
|
|
960
|
-
|
|
959
|
+
.readiness-summary:hover,
|
|
960
|
+
.readiness-summary:focus-visible {
|
|
961
|
+
color: var(--fg);
|
|
961
962
|
}
|
|
962
963
|
|
|
963
964
|
.readiness-summary:focus-visible {
|
|
@@ -966,28 +967,28 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
966
967
|
}
|
|
967
968
|
|
|
968
969
|
.readiness-open .readiness-summary {
|
|
969
|
-
min-height:
|
|
970
|
+
min-height: 36px;
|
|
970
971
|
border-radius: var(--radius-sm);
|
|
971
|
-
padding:
|
|
972
|
+
padding: 7px 12px;
|
|
972
973
|
background: transparent;
|
|
973
974
|
}
|
|
974
975
|
|
|
975
976
|
.readiness-title {
|
|
976
|
-
color:
|
|
977
|
+
color: inherit;
|
|
977
978
|
font-size: 13px;
|
|
978
979
|
font-weight: 500;
|
|
979
980
|
line-height: 1;
|
|
980
981
|
}
|
|
981
982
|
|
|
982
983
|
.readiness-open .readiness-title {
|
|
983
|
-
color:
|
|
984
|
+
color: inherit;
|
|
984
985
|
}
|
|
985
986
|
|
|
986
987
|
.readiness-action {
|
|
987
988
|
display: flex;
|
|
988
989
|
align-items: center;
|
|
989
990
|
gap: 3px;
|
|
990
|
-
color:
|
|
991
|
+
color: inherit;
|
|
991
992
|
font-size: 11px;
|
|
992
993
|
font-weight: 600;
|
|
993
994
|
line-height: 1;
|
|
@@ -1000,7 +1001,7 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
1000
1001
|
}
|
|
1001
1002
|
|
|
1002
1003
|
.readiness-open .readiness-action {
|
|
1003
|
-
color:
|
|
1004
|
+
color: inherit;
|
|
1004
1005
|
}
|
|
1005
1006
|
|
|
1006
1007
|
.readiness-list {
|
|
@@ -1385,19 +1386,20 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
1385
1386
|
align-items: center;
|
|
1386
1387
|
gap: 8px;
|
|
1387
1388
|
width: 100%;
|
|
1388
|
-
min-height:
|
|
1389
|
-
padding:
|
|
1389
|
+
min-height: 36px;
|
|
1390
|
+
padding: 7px 12px;
|
|
1390
1391
|
border: none;
|
|
1391
1392
|
border-radius: var(--radius-sm);
|
|
1392
1393
|
background: transparent;
|
|
1393
|
-
color: var(--fg);
|
|
1394
|
+
color: var(--fg-muted);
|
|
1394
1395
|
cursor: pointer;
|
|
1395
1396
|
text-align: left;
|
|
1396
1397
|
transition: color 120ms;
|
|
1397
1398
|
}
|
|
1398
1399
|
|
|
1399
|
-
.rewind-home-summary:hover
|
|
1400
|
-
|
|
1400
|
+
.rewind-home-summary:hover,
|
|
1401
|
+
.rewind-home-summary:focus-visible {
|
|
1402
|
+
color: var(--fg);
|
|
1401
1403
|
}
|
|
1402
1404
|
|
|
1403
1405
|
.rewind-home-summary:focus-visible {
|
|
@@ -1415,7 +1417,7 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
1415
1417
|
display: inline-flex;
|
|
1416
1418
|
align-items: center;
|
|
1417
1419
|
gap: 4px;
|
|
1418
|
-
color:
|
|
1420
|
+
color: inherit;
|
|
1419
1421
|
font-size: 11px;
|
|
1420
1422
|
font-weight: 600;
|
|
1421
1423
|
line-height: 1;
|
|
@@ -3033,7 +3035,8 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
3033
3035
|
}
|
|
3034
3036
|
|
|
3035
3037
|
.local-recording-banner,
|
|
3036
|
-
.local-save-banner
|
|
3038
|
+
.local-save-banner,
|
|
3039
|
+
.share-link-banner {
|
|
3037
3040
|
display: flex;
|
|
3038
3041
|
align-items: center;
|
|
3039
3042
|
gap: 9px;
|
|
@@ -3052,7 +3055,8 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
3052
3055
|
color: var(--fg-muted);
|
|
3053
3056
|
}
|
|
3054
3057
|
|
|
3055
|
-
.local-save-banner
|
|
3058
|
+
.local-save-banner,
|
|
3059
|
+
.share-link-banner {
|
|
3056
3060
|
display: grid;
|
|
3057
3061
|
grid-template-columns: minmax(0, 1fr) auto auto;
|
|
3058
3062
|
}
|
|
@@ -3075,7 +3079,8 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
3075
3079
|
white-space: nowrap;
|
|
3076
3080
|
}
|
|
3077
3081
|
|
|
3078
|
-
.local-save-banner button
|
|
3082
|
+
.local-save-banner button,
|
|
3083
|
+
.share-link-banner button {
|
|
3079
3084
|
height: 28px;
|
|
3080
3085
|
border: 1px solid var(--border-strong);
|
|
3081
3086
|
border-radius: var(--radius-sm);
|
|
@@ -3090,17 +3095,20 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
3090
3095
|
border-color 120ms;
|
|
3091
3096
|
}
|
|
3092
3097
|
|
|
3093
|
-
.local-save-banner button:hover
|
|
3098
|
+
.local-save-banner button:hover,
|
|
3099
|
+
.share-link-banner button:hover {
|
|
3094
3100
|
background: var(--brand-hover);
|
|
3095
3101
|
border-color: transparent;
|
|
3096
3102
|
}
|
|
3097
3103
|
|
|
3098
|
-
.local-save-banner .local-save-dismiss
|
|
3104
|
+
.local-save-banner .local-save-dismiss,
|
|
3105
|
+
.share-link-banner .local-save-dismiss {
|
|
3099
3106
|
background: transparent;
|
|
3100
3107
|
color: var(--fg-muted);
|
|
3101
3108
|
}
|
|
3102
3109
|
|
|
3103
|
-
.local-save-banner .local-save-dismiss:hover
|
|
3110
|
+
.local-save-banner .local-save-dismiss:hover,
|
|
3111
|
+
.share-link-banner .local-save-dismiss:hover {
|
|
3104
3112
|
background: var(--surface-hover);
|
|
3105
3113
|
border-color: var(--border-strong);
|
|
3106
3114
|
color: var(--fg);
|
|
@@ -5440,12 +5448,16 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
5440
5448
|
/* Overlay: recording pill */
|
|
5441
5449
|
/* ------------------------------------------------------------------------- */
|
|
5442
5450
|
|
|
5451
|
+
/* Fills the window minus the shadow gutter `#root` already pads out. The
|
|
5452
|
+
collapsed capsule centers here rather than hugging a corner: hover is polled
|
|
5453
|
+
against the window frame, so slack between frame and capsule would light the
|
|
5454
|
+
pill up while the cursor is nowhere near it. */
|
|
5443
5455
|
.pill-outer {
|
|
5444
5456
|
display: flex;
|
|
5445
5457
|
height: 100%;
|
|
5446
5458
|
width: 100%;
|
|
5447
5459
|
align-items: center;
|
|
5448
|
-
justify-content:
|
|
5460
|
+
justify-content: center;
|
|
5449
5461
|
}
|
|
5450
5462
|
|
|
5451
5463
|
.pill-inner {
|
|
@@ -5482,13 +5494,24 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
5482
5494
|
}
|
|
5483
5495
|
}
|
|
5484
5496
|
|
|
5485
|
-
/* Collapsed (not expanded). Shrinks to logo + waveform;
|
|
5486
|
-
|
|
5497
|
+
/* Collapsed (not expanded). Shrinks to logo + waveform; the whole capsule is
|
|
5498
|
+
the click-to-expand target and the whole capsule is what highlights. */
|
|
5487
5499
|
.pill-inner-compact {
|
|
5488
5500
|
width: fit-content;
|
|
5489
5501
|
height: fit-content;
|
|
5490
|
-
align-self: flex-start;
|
|
5491
5502
|
border-radius: 18px;
|
|
5503
|
+
cursor: pointer;
|
|
5504
|
+
transition:
|
|
5505
|
+
background 120ms ease,
|
|
5506
|
+
box-shadow 120ms ease;
|
|
5507
|
+
}
|
|
5508
|
+
|
|
5509
|
+
/* CSS :hover covers the focused case; .pill-hovered is the Rust-polled
|
|
5510
|
+
fallback for when another app is focused (see clips:pill-hover). */
|
|
5511
|
+
.pill-inner-compact:hover,
|
|
5512
|
+
.pill-inner-compact.pill-hovered {
|
|
5513
|
+
background: rgba(42, 42, 42, 0.97);
|
|
5514
|
+
box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.2);
|
|
5492
5515
|
}
|
|
5493
5516
|
|
|
5494
5517
|
.pill-controls {
|
|
@@ -5505,11 +5528,10 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
5505
5528
|
opacity 120ms ease;
|
|
5506
5529
|
}
|
|
5507
5530
|
|
|
5508
|
-
/*
|
|
5509
|
-
|
|
5510
|
-
.pill-inner:hover .pill-controls,
|
|
5511
|
-
.pill-inner.pill-hovered .pill-controls,
|
|
5512
|
-
/* Always visible when expanded. */
|
|
5531
|
+
/* Revealed on hover in the compact/detached bar, always visible when expanded.
|
|
5532
|
+
The vertical capsule hides them outright — it expands on click instead. */
|
|
5533
|
+
.pill-inner-compact:hover .pill-controls,
|
|
5534
|
+
.pill-inner-compact.pill-hovered .pill-controls,
|
|
5513
5535
|
.pill-inner:not(.pill-inner-compact) .pill-controls {
|
|
5514
5536
|
max-width: 160px;
|
|
5515
5537
|
opacity: 1;
|
|
@@ -5549,15 +5571,15 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
5549
5571
|
/* Collapsed = vertical capsule: logo on top, waveform below. */
|
|
5550
5572
|
.pill-inner-compact .pill-header.pill-vertical {
|
|
5551
5573
|
flex-direction: column;
|
|
5552
|
-
gap:
|
|
5574
|
+
gap: 6px;
|
|
5553
5575
|
height: auto;
|
|
5554
5576
|
width: auto;
|
|
5555
|
-
padding:
|
|
5577
|
+
padding: 12px 10px 10px;
|
|
5556
5578
|
cursor: pointer;
|
|
5557
5579
|
}
|
|
5558
5580
|
|
|
5559
5581
|
.pill-vertical .pill-logo {
|
|
5560
|
-
height:
|
|
5582
|
+
height: 12px;
|
|
5561
5583
|
}
|
|
5562
5584
|
|
|
5563
5585
|
/* Controls (timer / pause / stop / chevron) live in the expanded view — the
|
|
@@ -5568,7 +5590,7 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
5568
5590
|
|
|
5569
5591
|
.pill-vertical .pill-wave-meter {
|
|
5570
5592
|
height: 22px;
|
|
5571
|
-
width:
|
|
5593
|
+
width: 24px;
|
|
5572
5594
|
}
|
|
5573
5595
|
|
|
5574
5596
|
/* Wrapper around logo + waveform. */
|
|
@@ -5580,19 +5602,7 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
5580
5602
|
display: flex;
|
|
5581
5603
|
flex-direction: column;
|
|
5582
5604
|
align-items: center;
|
|
5583
|
-
align-self: stretch;
|
|
5584
5605
|
gap: 5px;
|
|
5585
|
-
/* The compact media area is the click-to-expand target. */
|
|
5586
|
-
padding: 11px 7px 4px;
|
|
5587
|
-
margin: -11px -7px 0;
|
|
5588
|
-
border-radius: 18px 18px 0 0;
|
|
5589
|
-
cursor: pointer;
|
|
5590
|
-
transition: background 120ms ease;
|
|
5591
|
-
}
|
|
5592
|
-
|
|
5593
|
-
.pill-vertical .pill-media:hover,
|
|
5594
|
-
.pill-hovered .pill-vertical .pill-media {
|
|
5595
|
-
background: rgba(255, 255, 255, 0.08);
|
|
5596
5606
|
}
|
|
5597
5607
|
|
|
5598
5608
|
.pill-timer {
|
|
@@ -5601,11 +5611,12 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
5601
5611
|
font-variant-numeric: tabular-nums;
|
|
5602
5612
|
}
|
|
5603
5613
|
|
|
5614
|
+
/* Layout only. `display` must stay flex here — a `block` override collapses
|
|
5615
|
+
the meter's bars into a single stacked column instead of a waveform. */
|
|
5604
5616
|
.pill-wave-meter {
|
|
5605
5617
|
height: 26px;
|
|
5606
5618
|
width: 48px;
|
|
5607
5619
|
flex-shrink: 0;
|
|
5608
|
-
display: block;
|
|
5609
5620
|
}
|
|
5610
5621
|
|
|
5611
5622
|
.pill-stop-btn {
|
|
@@ -5849,6 +5860,7 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
5849
5860
|
min-height: 0;
|
|
5850
5861
|
flex: 1;
|
|
5851
5862
|
display: flex;
|
|
5863
|
+
flex-direction: column;
|
|
5852
5864
|
overflow: hidden;
|
|
5853
5865
|
}
|
|
5854
5866
|
|
|
@@ -5894,41 +5906,78 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
5894
5906
|
cursor: default;
|
|
5895
5907
|
}
|
|
5896
5908
|
|
|
5897
|
-
.pill-
|
|
5909
|
+
.pill-ask-bar {
|
|
5898
5910
|
flex-shrink: 0;
|
|
5899
5911
|
display: flex;
|
|
5900
|
-
justify-content: space-between;
|
|
5901
5912
|
align-items: center;
|
|
5902
|
-
gap:
|
|
5903
|
-
|
|
5904
|
-
padding: 2px 12px 8px;
|
|
5905
|
-
font-size: 10px;
|
|
5906
|
-
font-variant-numeric: tabular-nums;
|
|
5907
|
-
color: rgba(245, 245, 245, 0.4);
|
|
5913
|
+
gap: 4px;
|
|
5914
|
+
padding: 6px 10px 10px;
|
|
5908
5915
|
}
|
|
5909
5916
|
|
|
5910
|
-
.pill-
|
|
5911
|
-
|
|
5917
|
+
.pill-ask-input {
|
|
5918
|
+
flex: 1;
|
|
5919
|
+
min-width: 0;
|
|
5920
|
+
height: 32px;
|
|
5921
|
+
padding: 0 12px;
|
|
5922
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
|
5923
|
+
border-radius: 999px;
|
|
5924
|
+
background: rgba(255, 255, 255, 0.05);
|
|
5925
|
+
color: #f5f5f5;
|
|
5926
|
+
font: inherit;
|
|
5927
|
+
font-size: 12px;
|
|
5928
|
+
outline: none;
|
|
5929
|
+
transition:
|
|
5930
|
+
background 120ms,
|
|
5931
|
+
border-color 120ms;
|
|
5912
5932
|
}
|
|
5913
5933
|
|
|
5914
|
-
.pill-
|
|
5934
|
+
.pill-ask-input::placeholder {
|
|
5935
|
+
color: rgba(245, 245, 245, 0.35);
|
|
5936
|
+
}
|
|
5937
|
+
|
|
5938
|
+
.pill-ask-input:focus {
|
|
5939
|
+
background: rgba(255, 255, 255, 0.08);
|
|
5940
|
+
border-color: rgba(255, 255, 255, 0.22);
|
|
5941
|
+
}
|
|
5942
|
+
|
|
5943
|
+
.pill-ask-input:disabled {
|
|
5944
|
+
opacity: 0.5;
|
|
5945
|
+
}
|
|
5946
|
+
|
|
5947
|
+
.pill-ask-send,
|
|
5948
|
+
.pill-ask-open {
|
|
5915
5949
|
display: inline-flex;
|
|
5950
|
+
height: 28px;
|
|
5951
|
+
width: 28px;
|
|
5952
|
+
flex-shrink: 0;
|
|
5916
5953
|
align-items: center;
|
|
5917
|
-
|
|
5918
|
-
padding: 2px 6px;
|
|
5954
|
+
justify-content: center;
|
|
5919
5955
|
border: none;
|
|
5920
|
-
border-radius:
|
|
5956
|
+
border-radius: 50%;
|
|
5921
5957
|
background: transparent;
|
|
5922
5958
|
color: rgba(245, 245, 245, 0.6);
|
|
5923
|
-
font-size: 10px;
|
|
5924
|
-
font-weight: 500;
|
|
5925
5959
|
cursor: pointer;
|
|
5926
5960
|
transition:
|
|
5927
5961
|
background 120ms,
|
|
5928
|
-
color 120ms
|
|
5962
|
+
color 120ms,
|
|
5963
|
+
opacity 120ms;
|
|
5964
|
+
}
|
|
5965
|
+
|
|
5966
|
+
.pill-ask-send:not(:disabled) {
|
|
5967
|
+
background: rgba(255, 255, 255, 0.12);
|
|
5968
|
+
color: #f5f5f5;
|
|
5929
5969
|
}
|
|
5930
5970
|
|
|
5931
|
-
.pill-
|
|
5971
|
+
.pill-ask-send:hover:not(:disabled) {
|
|
5972
|
+
background: rgba(255, 255, 255, 0.22);
|
|
5973
|
+
}
|
|
5974
|
+
|
|
5975
|
+
.pill-ask-send:disabled {
|
|
5976
|
+
opacity: 0.35;
|
|
5977
|
+
cursor: default;
|
|
5978
|
+
}
|
|
5979
|
+
|
|
5980
|
+
.pill-ask-open:hover {
|
|
5932
5981
|
background: rgba(255, 255, 255, 0.1);
|
|
5933
5982
|
color: #f5f5f5;
|
|
5934
5983
|
}
|
|
@@ -5987,11 +6036,11 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
5987
6036
|
}
|
|
5988
6037
|
|
|
5989
6038
|
.lt-row-you .lt-label {
|
|
5990
|
-
color: rgba(
|
|
6039
|
+
color: rgba(245, 245, 245, 0.5);
|
|
5991
6040
|
}
|
|
5992
6041
|
|
|
5993
6042
|
.lt-row-them .lt-label {
|
|
5994
|
-
color: rgba(
|
|
6043
|
+
color: rgba(245, 245, 245, 0.38);
|
|
5995
6044
|
}
|
|
5996
6045
|
|
|
5997
6046
|
.lt-bubble {
|
|
@@ -6002,14 +6051,14 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
6002
6051
|
}
|
|
6003
6052
|
|
|
6004
6053
|
.lt-row-you .lt-bubble {
|
|
6005
|
-
background: rgba(
|
|
6006
|
-
color: #
|
|
6054
|
+
background: rgba(255, 255, 255, 0.13);
|
|
6055
|
+
color: #fafafa;
|
|
6007
6056
|
border-bottom-right-radius: 4px;
|
|
6008
6057
|
}
|
|
6009
6058
|
|
|
6010
6059
|
.lt-row-them .lt-bubble {
|
|
6011
|
-
background: rgba(
|
|
6012
|
-
color: #
|
|
6060
|
+
background: rgba(255, 255, 255, 0.06);
|
|
6061
|
+
color: #e5e5e5;
|
|
6013
6062
|
border-bottom-left-radius: 4px;
|
|
6014
6063
|
}
|
|
6015
6064
|
|
|
@@ -48,6 +48,13 @@ tauri-plugin-fs = "2.5.1"
|
|
|
48
48
|
# tauri-plugin-notification`). Powers the Granola-style "Meeting starting
|
|
49
49
|
# in N min — Join + Record" banners.
|
|
50
50
|
tauri-plugin-notification = "2"
|
|
51
|
+
# System clipboard writes from Rust (arboard). The share link is copied when a
|
|
52
|
+
# recording finishes, at which point the popover webview is usually unfocused —
|
|
53
|
+
# `navigator.clipboard.writeText` rejects with `NotAllowedError: Document is not
|
|
54
|
+
# focused` in exactly that case, so the write has to happen native-side. v2.3.2
|
|
55
|
+
# is the current latest (verified via `cargo info
|
|
56
|
+
# tauri-plugin-clipboard-manager`).
|
|
57
|
+
tauri-plugin-clipboard-manager = "2.3.2"
|
|
51
58
|
serde = { version = "1", features = ["derive"] }
|
|
52
59
|
serde_json = "1"
|
|
53
60
|
sentry = "0.48.3"
|
|
@@ -14,5 +14,11 @@
|
|
|
14
14
|
<string>Clips uses Accessibility to learn your preferred spellings from edits you make right after dictating, so future dictations get them right.</string>
|
|
15
15
|
<key>CFBundleIconName</key>
|
|
16
16
|
<string>agent-native</string>
|
|
17
|
+
<!-- Menu-bar-only. Without this the bundle launches as a regular app, so
|
|
18
|
+
macOS creates a Dock tile and only removes it once the deferred
|
|
19
|
+
Accessory activation policy lands after setup() — a Dock icon that
|
|
20
|
+
appears and vanishes on a timing that varies with launch speed. -->
|
|
21
|
+
<key>LSUIElement</key>
|
|
22
|
+
<true/>
|
|
17
23
|
</dict>
|
|
18
24
|
</plist>
|
|
@@ -21,7 +21,7 @@ use crate::state::{
|
|
|
21
21
|
};
|
|
22
22
|
use crate::util::{
|
|
23
23
|
build_overlay_url, configure_overlay_behavior, hide_voice_wake_popover, is_recording_active,
|
|
24
|
-
mark_popover_shown, present_interactive_window, set_capture_excluded,
|
|
24
|
+
mark_popover_shown, present_interactive_window, raise_to_status_level, set_capture_excluded,
|
|
25
25
|
set_capture_excluded_always, set_capture_included, tray_monitor_physical_rect,
|
|
26
26
|
};
|
|
27
27
|
|
|
@@ -887,8 +887,10 @@ pub async fn show_toolbar(app: AppHandle) -> Result<(), String> {
|
|
|
887
887
|
if let Some(existing) = app.get_webview_window(TOOLBAR_LABEL) {
|
|
888
888
|
let _ = existing.set_size(tauri::Size::Physical(PhysicalSize::new(w, h)));
|
|
889
889
|
let _ = existing.set_position(PhysicalPosition::new(x, y));
|
|
890
|
-
|
|
891
|
-
|
|
890
|
+
set_capture_excluded(&existing);
|
|
891
|
+
configure_overlay_behavior(&existing);
|
|
892
|
+
raise_to_status_level(&existing);
|
|
893
|
+
crate::util::show_without_activation(&existing);
|
|
892
894
|
return Ok(());
|
|
893
895
|
}
|
|
894
896
|
#[allow(unused_mut)]
|
|
@@ -924,6 +926,7 @@ pub async fn show_toolbar(app: AppHandle) -> Result<(), String> {
|
|
|
924
926
|
let _ = win.set_position(PhysicalPosition::new(x, y));
|
|
925
927
|
set_capture_excluded(&win);
|
|
926
928
|
configure_overlay_behavior(&win);
|
|
929
|
+
raise_to_status_level(&win);
|
|
927
930
|
let _ = win.show();
|
|
928
931
|
dlog!("[clips-tray] toolbar shown");
|
|
929
932
|
|
|
@@ -1524,6 +1527,7 @@ pub async fn show_flow_bar(app: AppHandle) -> Result<(), String> {
|
|
|
1524
1527
|
let _ = existing.set_size(tauri::Size::Physical(PhysicalSize::new(w, h)));
|
|
1525
1528
|
let _ = existing.set_position(PhysicalPosition::new(x, y));
|
|
1526
1529
|
let _ = existing.set_ignore_cursor_events(false);
|
|
1530
|
+
configure_overlay_behavior(&existing);
|
|
1527
1531
|
crate::util::show_without_activation(&existing);
|
|
1528
1532
|
return Ok(());
|
|
1529
1533
|
}
|
|
@@ -256,6 +256,7 @@ pub fn run() {
|
|
|
256
256
|
)
|
|
257
257
|
.plugin(tauri_plugin_updater::Builder::new().build())
|
|
258
258
|
.plugin(tauri_plugin_notification::init())
|
|
259
|
+
.plugin(tauri_plugin_clipboard_manager::init())
|
|
259
260
|
.plugin(shortcuts::build_shortcut_plugin().build())
|
|
260
261
|
.manage(TrayAnchor::default())
|
|
261
262
|
.manage(TrayMeetings::default())
|
|
@@ -284,7 +285,9 @@ pub fn run() {
|
|
|
284
285
|
logfile::init(app.handle());
|
|
285
286
|
|
|
286
287
|
// Keeps the app from yanking the user out of fullscreen when the
|
|
287
|
-
// popover appears.
|
|
288
|
+
// popover appears. Bundles set LSUIElement=1 so macOS never creates
|
|
289
|
+
// a Dock tile in the first place; this call still matters for
|
|
290
|
+
// `tauri dev`, which runs the bare executable with no bundle plist.
|
|
288
291
|
#[cfg(target_os = "macos")]
|
|
289
292
|
{
|
|
290
293
|
app.set_activation_policy(tauri::ActivationPolicy::Accessory);
|
|
@@ -2,5 +2,13 @@
|
|
|
2
2
|
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
|
3
3
|
|
|
4
4
|
fn main() {
|
|
5
|
+
// ggml-metal registers a __cxa_atexit destructor that asserts every Metal
|
|
6
|
+
// residency-set resource was freed first. The Whisper context lives in a
|
|
7
|
+
// process-wide static that std::process::exit never drops, so that assert
|
|
8
|
+
// aborts during exit() and macOS reports a false crash on every quit.
|
|
9
|
+
// Opting out of residency sets keeps the destructor a no-op.
|
|
10
|
+
#[cfg(target_os = "macos")]
|
|
11
|
+
std::env::set_var("GGML_METAL_NO_RESIDENCY", "1");
|
|
12
|
+
|
|
5
13
|
clips_tray_lib::run();
|
|
6
14
|
}
|
|
@@ -66,12 +66,15 @@ static PILL_HOVER_TRACKING: AtomicBool = AtomicBool::new(false);
|
|
|
66
66
|
/// Collapsed dimensions (logical px). The collapsed pill is a vertical capsule
|
|
67
67
|
/// — clips logo on top, waveform below — so it is taller than it is wide. The
|
|
68
68
|
/// expanded form stretches horizontally to fit the live-transcript area.
|
|
69
|
-
const PILL_W_LOGICAL: u32 =
|
|
69
|
+
const PILL_W_LOGICAL: u32 = 44;
|
|
70
70
|
const PILL_W_EXPANDED_LOGICAL: u32 = 480;
|
|
71
71
|
/// Meeting mode uses the same focused transcript width as other recordings;
|
|
72
72
|
/// live notes are intentionally kept out of this compact overlay.
|
|
73
73
|
const PILL_W_EXPANDED_MEETING_LOGICAL: u32 = 480;
|
|
74
|
-
|
|
74
|
+
/// Keep this close to the rendered capsule's height. The window frame is what
|
|
75
|
+
/// hover is polled against, so slack here makes the pill light up while the
|
|
76
|
+
/// cursor is still nowhere near it.
|
|
77
|
+
const PILL_H_LOGICAL: u32 = 64;
|
|
75
78
|
const PILL_H_EXPANDED_LOGICAL: u32 = 340;
|
|
76
79
|
/// Bottom margin from the screen edge, logical px. Granola uses ~24.
|
|
77
80
|
const PILL_BOTTOM_MARGIN_LOGICAL: u32 = 24;
|
|
@@ -232,14 +235,18 @@ fn default_bottom_center(app: &AppHandle, w: u32, h: u32) -> (i32, i32) {
|
|
|
232
235
|
(x, y)
|
|
233
236
|
}
|
|
234
237
|
|
|
235
|
-
fn default_center_right(app: &AppHandle, w: u32,
|
|
238
|
+
fn default_center_right(app: &AppHandle, w: u32, h: u32) -> (i32, i32) {
|
|
236
239
|
let scale = scale_factor(app);
|
|
237
240
|
let right_margin = (PILL_RIGHT_MARGIN_LOGICAL as f64 * scale) as i32;
|
|
238
241
|
let (mx, my, mw, mh) = tray_monitor_physical_rect(app);
|
|
239
242
|
let x = (mx + mw as i32 - w as i32 - right_margin).max(mx);
|
|
240
|
-
//
|
|
243
|
+
// Center whatever is actually on screen — meetings now open collapsed, so
|
|
244
|
+
// reserving the expanded height here would strand the capsule high up.
|
|
245
|
+
// Expanding pins this top edge and grows downward (see `anchored_rect`),
|
|
246
|
+
// clamped below so a tall panel still fits.
|
|
241
247
|
let (_, h_exp) = pill_size_physical(app, true);
|
|
242
|
-
let
|
|
248
|
+
let max_y_exp = (my + mh as i32 - h_exp as i32).max(my);
|
|
249
|
+
let y = (my + (mh as i32 - h as i32) / 2).clamp(my, max_y_exp);
|
|
243
250
|
(x, y)
|
|
244
251
|
}
|
|
245
252
|
|
|
@@ -458,7 +465,9 @@ pub async fn recording_pill_show(
|
|
|
458
465
|
|
|
459
466
|
/// True when the global cursor sits inside the pill window's frame. Cursor and
|
|
460
467
|
/// frame both come from Tauri (physical px, desktop top-left origin), so the
|
|
461
|
-
/// test is a plain point-in-rect with no AppKit hop.
|
|
468
|
+
/// test is a plain point-in-rect with no AppKit hop. The frame is inset by the
|
|
469
|
+
/// transparent shadow gutter the renderer pads out, so the polled hover state
|
|
470
|
+
/// matches the capsule the user actually sees.
|
|
462
471
|
fn cursor_inside_pill_frame(window: &WebviewWindow) -> bool {
|
|
463
472
|
let (Ok(c), Ok(p), Ok(s)) = (
|
|
464
473
|
window.cursor_position(),
|
|
@@ -467,10 +476,12 @@ fn cursor_inside_pill_frame(window: &WebviewWindow) -> bool {
|
|
|
467
476
|
) else {
|
|
468
477
|
return false;
|
|
469
478
|
};
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
479
|
+
let gutter = overlay_shadow_gutter_physical(window.app_handle()) as i32;
|
|
480
|
+
let left = p.x + gutter;
|
|
481
|
+
let top = p.y + gutter;
|
|
482
|
+
let right = p.x + s.width as i32 - gutter;
|
|
483
|
+
let bottom = p.y + s.height as i32 - gutter;
|
|
484
|
+
c.x >= left as f64 && c.x <= right as f64 && c.y >= top as f64 && c.y <= bottom as f64
|
|
474
485
|
}
|
|
475
486
|
|
|
476
487
|
/// Start polling the cursor against the pill frame and emitting
|
|
@@ -162,6 +162,46 @@ pub fn configure_overlay_behavior(_window: &WebviewWindow) {
|
|
|
162
162
|
// No-op on non-macOS platforms. Spaces are a macOS concept.
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
+
/// Raise a window to NSStatusWindowLevel (25).
|
|
166
|
+
///
|
|
167
|
+
/// Tauri's `always_on_top` maps to NSFloatingWindowLevel (3). Within a level
|
|
168
|
+
/// macOS still orders the *active* app's windows ahead of a background app's,
|
|
169
|
+
/// and the recording overlays are deliberately never key — so another app's
|
|
170
|
+
/// floating chrome (call controls, launchers) covers them. Level 25 clears
|
|
171
|
+
/// that whole class while staying below NSPopUpMenuWindowLevel (101) so
|
|
172
|
+
/// context menus still draw on top.
|
|
173
|
+
#[cfg(target_os = "macos")]
|
|
174
|
+
pub fn raise_to_status_level(window: &WebviewWindow) {
|
|
175
|
+
let win = window.clone();
|
|
176
|
+
if let Err(err) = win.clone().run_on_main_thread(move || {
|
|
177
|
+
let label = win.label().to_string();
|
|
178
|
+
let ns_window_ptr = match win.ns_window() {
|
|
179
|
+
Ok(p) => p,
|
|
180
|
+
Err(err) => {
|
|
181
|
+
eprintln!("[clips-tray] raise_to_status_level({label}): ns_window() failed: {err}");
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
if ns_window_ptr.is_null() {
|
|
186
|
+
eprintln!("[clips-tray] raise_to_status_level({label}): ns_window is null");
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
// SAFETY: ns_window() returns a live NSWindow*; called on main thread.
|
|
190
|
+
unsafe {
|
|
191
|
+
let obj = ns_window_ptr as *mut objc2::runtime::AnyObject;
|
|
192
|
+
let _: () = objc2::msg_send![&*obj, setLevel: 25isize];
|
|
193
|
+
}
|
|
194
|
+
dlog!("[clips-tray] raise_to_status_level({label}): NSStatusWindowLevel");
|
|
195
|
+
}) {
|
|
196
|
+
eprintln!("[clips-tray] raise_to_status_level: run_on_main_thread failed: {err}");
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
#[cfg(not(target_os = "macos"))]
|
|
201
|
+
pub fn raise_to_status_level(_window: &WebviewWindow) {
|
|
202
|
+
// No-op on non-macOS platforms. Window levels are an AppKit concept.
|
|
203
|
+
}
|
|
204
|
+
|
|
165
205
|
#[cfg(not(target_os = "macos"))]
|
|
166
206
|
pub fn set_capture_excluded(_window: &WebviewWindow) {
|
|
167
207
|
// No-op on non-macOS platforms. Screen-capture exclusion isn't a public
|