@agent-native/core 0.165.3 → 0.167.0
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 +1 -1
- package/corpus/templates/analytics/.agents/skills/secrets/SKILL.md +5 -1
- package/corpus/templates/analytics/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/corpus/templates/analytics/CHANGELOG.md +740 -2
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +93 -56
- package/corpus/templates/analytics/app/i18n-data.ts +23 -20
- package/corpus/templates/analytics/app/pages/Settings.tsx +0 -1
- package/corpus/templates/analytics/app/pages/adhoc/explorer/index.tsx +0 -1
- package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +1 -1
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +2 -1
- package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +0 -1
- package/corpus/templates/analytics/server/lib/first-party-analytics-backend.ts +0 -32
- package/corpus/templates/analytics/server/lib/session-replay.ts +1 -5
- package/corpus/templates/assets/.agents/skills/secrets/SKILL.md +5 -1
- package/corpus/templates/assets/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/corpus/templates/assets/CHANGELOG.md +204 -2
- package/corpus/templates/assets/actions/navigate.ts +2 -2
- package/corpus/templates/assets/actions/save-generated-image.ts +0 -5
- package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +2 -262
- package/corpus/templates/assets/app/routes/library.tsx +1 -1
- package/corpus/templates/assets/app/routes/settings.tsx +0 -3
- package/corpus/templates/brain/.agents/skills/secrets/SKILL.md +5 -1
- package/corpus/templates/brain/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/corpus/templates/brain/CHANGELOG.md +145 -2
- package/corpus/templates/brain/actions/ask-brain.ts +0 -1
- package/corpus/templates/brain/actions/navigate.ts +2 -2
- package/corpus/templates/brain/app/routes/sources.tsx +0 -4
- package/corpus/templates/brain/server/lib/capture-sanitization.ts +0 -11
- package/corpus/templates/calendar/.agents/skills/secrets/SKILL.md +5 -1
- package/corpus/templates/calendar/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/corpus/templates/calendar/CHANGELOG.md +272 -2
- package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +0 -20
- package/corpus/templates/calendar/app/pages/CalendarView.tsx +0 -1
- package/corpus/templates/chat/.agents/skills/secrets/SKILL.md +5 -1
- package/corpus/templates/chat/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/corpus/templates/chat/CHANGELOG.md +89 -2
- package/corpus/templates/chat/actions/navigate.ts +2 -2
- package/corpus/templates/clips/.agents/skills/secrets/SKILL.md +5 -1
- package/corpus/templates/clips/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/corpus/templates/clips/CHANGELOG.md +865 -2
- package/corpus/templates/clips/actions/import-loom-recording.ts +16 -4
- package/corpus/templates/clips/actions/navigate.ts +2 -2
- package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +0 -1
- package/corpus/templates/clips/app/components/library/space-dialogs.tsx +0 -1
- package/corpus/templates/clips/app/components/meetings/share-meeting-dialog.tsx +0 -1
- package/corpus/templates/clips/app/components/player/clips-share-trigger.tsx +17 -0
- package/corpus/templates/clips/app/components/player/delete-recording-menu.tsx +3 -3
- package/corpus/templates/clips/app/components/player/video-player.tsx +2 -2
- package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +0 -1
- package/corpus/templates/clips/app/components/settings/ai-setup-section.tsx +0 -1
- package/corpus/templates/clips/app/global.css +31 -0
- package/corpus/templates/clips/app/hooks/use-playback-position.ts +0 -2
- package/corpus/templates/clips/app/lib/download-release-channel.ts +10 -0
- package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +1 -3
- package/corpus/templates/clips/app/routes/download.tsx +67 -44
- package/corpus/templates/clips/app/routes/r.$recordingId.tsx +7 -12
- package/corpus/templates/clips/app/routes/record.tsx +6 -6
- package/corpus/templates/clips/app/routes/share.$shareId.tsx +26 -29
- package/corpus/templates/clips/changelog/2026-08-20-clip-viewer-share-actions.md +6 -0
- package/corpus/templates/clips/changelog/2026-08-20-preparing-recording-countdown-overlay.md +6 -0
- package/corpus/templates/clips/chrome-extension/src/background.ts +0 -13
- package/corpus/templates/clips/chrome-extension/src/overlay.ts +0 -1
- package/corpus/templates/clips/chrome-extension/src/popup.ts +0 -20
- package/corpus/templates/clips/desktop/src/app.tsx +6 -18
- package/corpus/templates/clips/desktop/src/hooks/useMediaDevices.ts +0 -1
- package/corpus/templates/clips/desktop/src/lib/recorder.ts +0 -8
- package/corpus/templates/clips/desktop/src/overlays/preparing.tsx +4 -6
- package/corpus/templates/clips/desktop/src/styles.css +18 -20
- package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +9 -17
- package/corpus/templates/content/.agents/skills/secrets/SKILL.md +5 -1
- package/corpus/templates/content/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/corpus/templates/content/CHANGELOG.md +503 -2
- package/corpus/templates/content/actions/_database-source-utils.ts +0 -3
- package/corpus/templates/content/actions/attach-content-database-source.ts +1 -4
- package/corpus/templates/content/actions/navigate.ts +2 -2
- package/corpus/templates/content/actions/prepare-builder-source-execution.ts +1 -1
- package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +0 -6
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +0 -580
- package/corpus/templates/content/app/components/editor/database/FormView.tsx +2 -2
- package/corpus/templates/content/app/components/editor/database/filter-sort.ts +1 -1
- package/corpus/templates/content/app/components/editor/database/settings.tsx +0 -23
- package/corpus/templates/content/app/components/editor/database/sidebar.tsx +0 -1
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +8 -304
- package/corpus/templates/content/app/hooks/use-documents.ts +0 -1
- package/corpus/templates/content/shared/api.ts +0 -1
- package/corpus/templates/content/shared/builder-mdx.ts +0 -1
- package/corpus/templates/content/shared/nfm.ts +1 -7
- package/corpus/templates/crm/.agents/skills/secrets/SKILL.md +5 -1
- package/corpus/templates/crm/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/corpus/templates/crm/CHANGELOG.md +31 -2
- package/corpus/templates/crm/actions/merge-crm-records.ts +0 -4
- package/corpus/templates/crm/app/components/crm/record/RecordLists.tsx +0 -1
- package/corpus/templates/crm/server/crm/hubspot-adapter.ts +0 -1
- package/corpus/templates/crm/server/crm/salesforce-adapter.ts +0 -1
- package/corpus/templates/crm/server/db/crm-store.ts +1 -1
- package/corpus/templates/design/.agents/skills/secrets/SKILL.md +5 -1
- package/corpus/templates/design/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +1 -14
- package/corpus/templates/design/AGENTS.md +2 -1
- package/corpus/templates/design/CHANGELOG.md +870 -2
- package/corpus/templates/design/actions/apply-component-prop-edit.ts +1 -5
- package/corpus/templates/design/actions/generate-design.ts +0 -1
- package/corpus/templates/design/actions/generate-screens.ts +5 -2
- package/corpus/templates/design/actions/go-to-main-component.ts +2 -2
- package/corpus/templates/design/actions/list-design-systems.ts +10 -0
- package/corpus/templates/design/actions/navigate.ts +2 -2
- package/corpus/templates/design/actions/open-component-source.ts +4 -4
- package/corpus/templates/design/actions/present-design-variants.ts +1 -2
- package/corpus/templates/design/actions/run-design-audit.ts +0 -22
- package/corpus/templates/design/actions/show-design-questions.ts +5 -2
- package/corpus/templates/design/app/components/design/DesignCanvas.tsx +19 -8
- package/corpus/templates/design/app/components/design/EditPanel.tsx +11 -183
- package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +21 -4
- package/corpus/templates/design/app/components/design/QuestionFlow.tsx +1 -5
- package/corpus/templates/design/app/components/design/bridge/codegen.ts +1 -1
- package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +10 -19
- package/corpus/templates/design/app/components/design/edit-panel/appearance-properties.tsx +1 -1
- package/corpus/templates/design/app/components/design/edit-panel/layout-properties.tsx +13 -3
- package/corpus/templates/design/app/components/design/edit-panel/panel-primitives.tsx +38 -32
- package/corpus/templates/design/app/components/design/edit-panel/position-layout-properties.tsx +1 -4
- package/corpus/templates/design/app/components/design/inspector/AlignmentMatrix.tsx +0 -4
- package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +15 -6
- package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +2 -2
- package/corpus/templates/design/app/components/visual-editor/NodeRewriteProposal.tsx +0 -1
- package/corpus/templates/design/app/components/visual-editor/ReviewCanvasPins.tsx +1 -1
- package/corpus/templates/design/app/i18n-data.ts +122 -0
- package/corpus/templates/design/app/lib/clipboard-content-lineage.ts +11 -1
- package/corpus/templates/design/app/pages/DesignEditor.tsx +50 -254
- package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +163 -8
- package/corpus/templates/design/app/pages/Index.tsx +17 -0
- package/corpus/templates/design/app/pages/design-editor/canvas-primitive-insert.ts +44 -32
- package/corpus/templates/design/app/pages/design-editor/canvas-primitives.ts +10 -0
- package/corpus/templates/design/app/pages/design-editor/clone-and-pen-edit.ts +49 -3
- package/corpus/templates/design/app/pages/design-editor/clone-idrefs.ts +31 -0
- package/corpus/templates/design/app/pages/design-editor/code-layer-state.ts +28 -0
- package/corpus/templates/design/app/pages/design-editor/commands/add-auto-layout.ts +3 -3
- package/corpus/templates/design/app/pages/design-editor/commands/align-selection.ts +44 -14
- package/corpus/templates/design/app/pages/design-editor/commands/apply-local-content-update.ts +16 -5
- package/corpus/templates/design/app/pages/design-editor/commands/change-selected-z-index.ts +1 -1
- package/corpus/templates/design/app/pages/design-editor/commands/frame-selection.ts +1 -1
- package/corpus/templates/design/app/pages/design-editor/commands/group-selection.ts +1 -1
- package/corpus/templates/design/app/pages/design-editor/commands/nudge-selection.ts +1 -1
- package/corpus/templates/design/app/pages/design-editor/commands/paste-selection.ts +142 -17
- package/corpus/templates/design/app/pages/design-editor/commands/screen-visual-duplicate-change.ts +1 -0
- package/corpus/templates/design/app/pages/design-editor/commands/ungroup-selection.ts +1 -1
- package/corpus/templates/design/app/pages/design-editor/commands/visual-duplicate-change.ts +1 -0
- package/corpus/templates/design/app/pages/design-editor/cross-screen-text-color.ts +25 -9
- package/corpus/templates/design/app/pages/design-editor/editor-state.ts +1 -0
- package/corpus/templates/design/app/pages/design-editor/measure-child-rects.ts +83 -0
- package/corpus/templates/design/app/pages/design-editor/paste-placement.ts +66 -0
- package/corpus/templates/design/server/routes/[...page].get.ts +0 -1
- package/corpus/templates/design/shared/code-layer.ts +120 -70
- package/corpus/templates/design/shared/design-surface-index.ts +0 -1
- package/corpus/templates/design/shared/pen-path.ts +0 -4
- package/corpus/templates/dispatch/.agents/skills/secrets/SKILL.md +5 -1
- package/corpus/templates/dispatch/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/corpus/templates/dispatch/CHANGELOG.md +196 -2
- package/corpus/templates/dispatch/app/routes/integrations.tsx +0 -109
- package/corpus/templates/factory/.agents/skills/secrets/SKILL.md +5 -1
- package/corpus/templates/factory/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/corpus/templates/factory/CHANGELOG.md +121 -2
- package/corpus/templates/factory/actions/navigate.ts +2 -2
- package/corpus/templates/factory/app/components/factory/FactoryAuditView.tsx +0 -13
- package/corpus/templates/factory/app/routes/factory.tsx +0 -1
- package/corpus/templates/factory/server/factory-graph/store.ts +0 -1
- package/corpus/templates/forms/.agents/skills/secrets/SKILL.md +5 -1
- package/corpus/templates/forms/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/corpus/templates/forms/CHANGELOG.md +166 -2
- package/corpus/templates/macros/.agents/skills/secrets/SKILL.md +5 -1
- package/corpus/templates/macros/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/corpus/templates/macros/CHANGELOG.md +49 -2
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +0 -1
- package/corpus/templates/mail/.agents/skills/secrets/SKILL.md +5 -1
- package/corpus/templates/mail/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/corpus/templates/mail/CHANGELOG.md +201 -2
- package/corpus/templates/mail/app/components/email/EmailList.tsx +0 -1
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +2 -2
- package/corpus/templates/mail/shared/markdown.ts +3 -0
- package/corpus/templates/plan/.agents/skills/secrets/SKILL.md +5 -1
- package/corpus/templates/plan/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/corpus/templates/plan/CHANGELOG.md +277 -2
- package/corpus/templates/slides/.agents/skills/secrets/SKILL.md +5 -1
- package/corpus/templates/slides/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/corpus/templates/slides/CHANGELOG.md +437 -2
- package/corpus/templates/slides/actions/add-slide.ts +0 -1
- package/corpus/templates/slides/actions/list-decks.ts +1 -1
- package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +1 -4
- package/corpus/templates/slides/app/components/editor/SlideContextToolbar.tsx +0 -1
- package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +1 -1
- package/corpus/templates/slides/app/pages/DeckEditor.tsx +1 -6
- package/corpus/templates/tasks/.agents/skills/secrets/SKILL.md +5 -1
- package/corpus/templates/tasks/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/corpus/templates/tasks/CHANGELOG.md +32 -2
- package/corpus/templates/tasks/app/components/layout/Layout.tsx +0 -1
- package/corpus/templates/tasks/app/hooks/use-visible-task-fields.ts +1 -4
- package/corpus/templates/tasks/server/custom-fields/store.ts +1 -6
- package/corpus/templates/tasks/shared/list-screen-snapshot.ts +2 -2
- package/dist/agent/engine/registry.js +27 -14
- package/dist/agent/index.d.ts +1 -1
- package/dist/agent/production-agent.d.ts +19 -6
- package/dist/agent/production-agent.js +57 -16
- package/dist/agent/types.d.ts +3 -0
- package/dist/changelog/parse.d.ts +3 -3
- package/dist/changelog/parse.js +35 -16
- package/dist/client/EnvironmentBadge.d.ts +1 -0
- package/dist/client/EnvironmentBadge.js +7 -0
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/config.d.ts +11 -0
- package/dist/config.js +248 -0
- package/dist/deploy/build.js +12 -1
- package/dist/index.d.ts +1 -1
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/observability/routes.d.ts +6 -6
- package/dist/resources/handlers.d.ts +2 -2
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/agent-chat/plugin-options.d.ts +3 -2
- package/dist/server/agent-chat-plugin.js +5 -2
- package/dist/server/index.d.ts +1 -1
- package/dist/server/realtime-token.d.ts +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/templates/chat/.agents/skills/secrets/SKILL.md +5 -1
- package/dist/templates/chat/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/dist/templates/chat/CHANGELOG.md +89 -2
- package/dist/templates/chat/actions/navigate.ts +2 -2
- package/dist/templates/default/.agents/skills/secrets/SKILL.md +5 -1
- package/dist/templates/default/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/dist/templates/headless/.agents/skills/secrets/SKILL.md +5 -1
- package/dist/templates/workspace-core/.agents/skills/secrets/SKILL.md +5 -1
- package/dist/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/dist/vite/agent-native-config-loader.d.ts +1 -0
- package/dist/vite/agent-native-config-loader.js +3 -3
- package/dist/vite/agents-bundle-plugin.d.ts +1 -1
- package/dist/vite/agents-bundle-plugin.js +13 -1
- package/dist/vite/client.js +14 -14
- package/docs/content/agent-native-config.mdx +62 -11
- package/docs/content/agent-surfaces.mdx +6 -0
- package/docs/content/environment-variables.mdx +5 -2
- package/package.json +3 -3
- package/src/templates/chat/.agents/skills/secrets/SKILL.md +5 -1
- package/src/templates/chat/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/src/templates/chat/CHANGELOG.md +89 -2
- package/src/templates/chat/actions/navigate.ts +2 -2
- package/src/templates/default/.agents/skills/secrets/SKILL.md +5 -1
- package/src/templates/default/.agents/skills/workspace-conventions/SKILL.md +4 -1
- package/src/templates/headless/.agents/skills/secrets/SKILL.md +5 -1
- package/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +5 -1
- package/src/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +4 -1
|
@@ -13,13 +13,12 @@ import {
|
|
|
13
13
|
import { useT } from "@agent-native/core/client/i18n";
|
|
14
14
|
import { buildSignInReturnHref } from "@agent-native/core/client/ui";
|
|
15
15
|
import { docsUrl } from "@agent-native/core/shared";
|
|
16
|
-
import { ShareTrigger } from "@agent-native/toolkit/sharing";
|
|
17
16
|
import {
|
|
18
17
|
IconAlertTriangle,
|
|
19
18
|
IconArrowLeft,
|
|
20
19
|
IconDeviceDesktop,
|
|
21
20
|
IconDownload,
|
|
22
|
-
|
|
21
|
+
IconDotsVertical,
|
|
23
22
|
IconLock,
|
|
24
23
|
IconLogin2,
|
|
25
24
|
} from "@tabler/icons-react";
|
|
@@ -51,6 +50,7 @@ import { toast } from "sonner";
|
|
|
51
50
|
|
|
52
51
|
import { CaptureInstallButton } from "@/components/capture-install-options";
|
|
53
52
|
import { AccessPasswordPrompt } from "@/components/player/access-password-prompt";
|
|
53
|
+
import { ClipsShareTrigger } from "@/components/player/clips-share-trigger";
|
|
54
54
|
import { CommentsPanel } from "@/components/player/comments-panel";
|
|
55
55
|
import { RecordingOptionsMenu } from "@/components/player/delete-recording-menu";
|
|
56
56
|
import { InsightsPanel } from "@/components/player/insights-panel";
|
|
@@ -1110,8 +1110,8 @@ export default function ShareRoute() {
|
|
|
1110
1110
|
return (
|
|
1111
1111
|
<div className="flex min-h-screen max-w-full flex-col overflow-x-hidden bg-background text-foreground lg:h-screen lg:flex-row lg:overflow-hidden">
|
|
1112
1112
|
{agentDiscovery}
|
|
1113
|
-
<div className="flex w-full min-w-0 flex-col lg:flex-1">
|
|
1114
|
-
<header className="flex min-w-0 shrink-0 flex-wrap items-center gap-2 border-b border-border px-3 py-2 sm:
|
|
1113
|
+
<div className="clips-share-content flex w-full min-w-0 flex-col lg:flex-1">
|
|
1114
|
+
<header className="flex min-w-0 shrink-0 flex-wrap items-center gap-2 border-b border-border px-3 py-2 sm:px-4 sm:py-3 lg:flex-nowrap">
|
|
1115
1115
|
{session ? (
|
|
1116
1116
|
<Button
|
|
1117
1117
|
asChild
|
|
@@ -1147,7 +1147,7 @@ export default function ShareRoute() {
|
|
|
1147
1147
|
)}
|
|
1148
1148
|
</div>
|
|
1149
1149
|
|
|
1150
|
-
<div className="flex w-full min-w-0 flex-wrap items-center justify-between gap-
|
|
1150
|
+
<div className="flex w-full min-w-0 flex-wrap items-center justify-between gap-1 sm:w-auto sm:justify-end">
|
|
1151
1151
|
<RecordingViewsBadge
|
|
1152
1152
|
recordingId={recording.id}
|
|
1153
1153
|
viewCount={viewCount}
|
|
@@ -1161,6 +1161,22 @@ export default function ShareRoute() {
|
|
|
1161
1161
|
onCtaClick={fireShareCtaClick}
|
|
1162
1162
|
/>
|
|
1163
1163
|
)}
|
|
1164
|
+
{viewerCanEdit || canReshareLink ? (
|
|
1165
|
+
<ShareRecordingPopover
|
|
1166
|
+
recordingId={recording.id}
|
|
1167
|
+
recordingTitle={recording.title}
|
|
1168
|
+
initialVisibility={recording.visibility}
|
|
1169
|
+
initialRole={viewerIsOwner ? "owner" : undefined}
|
|
1170
|
+
videoUrl={shareVideoUrl}
|
|
1171
|
+
thumbnailUrl={recording.thumbnailUrl}
|
|
1172
|
+
animatedThumbnailUrl={recording.animatedThumbnailUrl}
|
|
1173
|
+
isLoomRecording={isLoomEmbedBacked}
|
|
1174
|
+
hasPassword={Boolean(recording.hasPassword)}
|
|
1175
|
+
viewerReshareOnly={viewerReshareOnly}
|
|
1176
|
+
>
|
|
1177
|
+
<ClipsShareTrigger label={t("sharePage.share")} />
|
|
1178
|
+
</ShareRecordingPopover>
|
|
1179
|
+
) : null}
|
|
1164
1180
|
{!viewerCanEdit && canDownloadRecording ? (
|
|
1165
1181
|
<DropdownMenu
|
|
1166
1182
|
open={downloadMenuOpen}
|
|
@@ -1170,10 +1186,10 @@ export default function ShareRoute() {
|
|
|
1170
1186
|
<Button
|
|
1171
1187
|
variant="ghost"
|
|
1172
1188
|
size="sm"
|
|
1173
|
-
className="h-
|
|
1189
|
+
className="-mx-1.5 h-auto w-auto shrink-0 px-0.5 py-1.5"
|
|
1174
1190
|
aria-label={t("sharePage.clipOptions")}
|
|
1175
1191
|
>
|
|
1176
|
-
<
|
|
1192
|
+
<IconDotsVertical className="h-4 w-4" />
|
|
1177
1193
|
</Button>
|
|
1178
1194
|
</DropdownMenuTrigger>
|
|
1179
1195
|
<DropdownMenuContent align="end" className="w-44">
|
|
@@ -1206,25 +1222,6 @@ export default function ShareRoute() {
|
|
|
1206
1222
|
onDeleted={() => navigate("/library", { replace: true })}
|
|
1207
1223
|
/>
|
|
1208
1224
|
) : null}
|
|
1209
|
-
{viewerCanEdit || canReshareLink ? (
|
|
1210
|
-
<ShareRecordingPopover
|
|
1211
|
-
recordingId={recording.id}
|
|
1212
|
-
recordingTitle={recording.title}
|
|
1213
|
-
initialVisibility={recording.visibility}
|
|
1214
|
-
initialRole={viewerIsOwner ? "owner" : undefined}
|
|
1215
|
-
videoUrl={shareVideoUrl}
|
|
1216
|
-
thumbnailUrl={recording.thumbnailUrl}
|
|
1217
|
-
animatedThumbnailUrl={recording.animatedThumbnailUrl}
|
|
1218
|
-
isLoomRecording={isLoomEmbedBacked}
|
|
1219
|
-
hasPassword={Boolean(recording.hasPassword)}
|
|
1220
|
-
viewerReshareOnly={viewerReshareOnly}
|
|
1221
|
-
>
|
|
1222
|
-
<ShareTrigger
|
|
1223
|
-
label={t("sharePage.share")}
|
|
1224
|
-
className="shrink-0"
|
|
1225
|
-
/>
|
|
1226
|
-
</ShareRecordingPopover>
|
|
1227
|
-
) : null}
|
|
1228
1225
|
</div>
|
|
1229
1226
|
</header>
|
|
1230
1227
|
|
|
@@ -1361,15 +1358,15 @@ export default function ShareRoute() {
|
|
|
1361
1358
|
: null}
|
|
1362
1359
|
</div>
|
|
1363
1360
|
|
|
1364
|
-
<div className="flex shrink-0 flex-col gap-3 px-4 pb-4 sm:
|
|
1365
|
-
<div className="min-w-0 flex-1">
|
|
1361
|
+
<div className="clips-share-metadata flex shrink-0 flex-col gap-3 px-4 pb-4 sm:px-0 sm:pb-0">
|
|
1362
|
+
<div className="clips-share-metadata-description min-w-0 flex-1">
|
|
1366
1363
|
{recording.description ? (
|
|
1367
1364
|
<p className="whitespace-pre-wrap break-words text-sm text-muted-foreground">
|
|
1368
1365
|
{recording.description}
|
|
1369
1366
|
</p>
|
|
1370
1367
|
) : null}
|
|
1371
1368
|
</div>
|
|
1372
|
-
<div className="flex max-w-full flex-col items-stretch gap-2 sm:items-end">
|
|
1369
|
+
<div className="clips-share-metadata-actions flex max-w-full flex-col items-stretch gap-2 sm:items-end">
|
|
1373
1370
|
<div className="flex flex-wrap items-center gap-2 sm:justify-end">
|
|
1374
1371
|
{recording.enableComments ? (
|
|
1375
1372
|
<TimestampedCommentButton
|
|
@@ -61,19 +61,6 @@ type PopupStartMessage = {
|
|
|
61
61
|
settings?: Partial<ExtensionSettings>;
|
|
62
62
|
};
|
|
63
63
|
|
|
64
|
-
type PopupMessage =
|
|
65
|
-
| PopupStartMessage
|
|
66
|
-
| { type: "CLIPS_POPUP_STATUS" }
|
|
67
|
-
| { type: "CLIPS_POPUP_STOP" }
|
|
68
|
-
| { type: "CLIPS_POPUP_CANCEL" }
|
|
69
|
-
| { type: "CLIPS_POPUP_OPEN" }
|
|
70
|
-
| { type: "CLIPS_POPUP_SIGN_IN"; settings?: Partial<ExtensionSettings> }
|
|
71
|
-
| {
|
|
72
|
-
type: "CLIPS_POPUP_PREPARE_PERMISSION_START";
|
|
73
|
-
settings?: Partial<ExtensionSettings>;
|
|
74
|
-
targetTabId?: number;
|
|
75
|
-
};
|
|
76
|
-
|
|
77
64
|
type ExternalMessage =
|
|
78
65
|
| {
|
|
79
66
|
type: "CLIPS_CAPTURE_START";
|
|
@@ -117,7 +117,6 @@ type OverlayState = {
|
|
|
117
117
|
countdownEndsAtMs: number;
|
|
118
118
|
};
|
|
119
119
|
|
|
120
|
-
const COUNTDOWN_FALLBACK = 3;
|
|
121
120
|
const params = new URLSearchParams(location.search);
|
|
122
121
|
const part = params.get("part");
|
|
123
122
|
const root = document.getElementById("root") as HTMLDivElement;
|
|
@@ -574,26 +574,6 @@ function isUnsupportedPage(url: string | undefined | null): boolean {
|
|
|
574
574
|
);
|
|
575
575
|
}
|
|
576
576
|
|
|
577
|
-
function targetCopy(tab: chrome.tabs.Tab | null): {
|
|
578
|
-
title: string;
|
|
579
|
-
subtitle: string;
|
|
580
|
-
} {
|
|
581
|
-
const title = tab?.title?.trim() || "Current tab";
|
|
582
|
-
const host = hostnameLabel(tab?.url);
|
|
583
|
-
if (!host) return { title, subtitle: "Ready to record" };
|
|
584
|
-
const titleKey = comparableLabel(title);
|
|
585
|
-
const hostKey = comparableLabel(host);
|
|
586
|
-
return {
|
|
587
|
-
title,
|
|
588
|
-
subtitle:
|
|
589
|
-
titleKey &&
|
|
590
|
-
hostKey &&
|
|
591
|
-
(titleKey === hostKey || hostKey.includes(titleKey))
|
|
592
|
-
? ""
|
|
593
|
-
: host,
|
|
594
|
-
};
|
|
595
|
-
}
|
|
596
|
-
|
|
597
577
|
function isSignInError(message: string | undefined): boolean {
|
|
598
578
|
return Boolean(
|
|
599
579
|
message && /sign in to clips|unauthorized|unauthenticated/i.test(message),
|
|
@@ -345,17 +345,6 @@ const DEFAULT_SCREEN_MEMORY_CONFIG = {
|
|
|
345
345
|
excludePrivateWindows: false,
|
|
346
346
|
};
|
|
347
347
|
|
|
348
|
-
function parseExcludedBundleIds(value: string): string[] {
|
|
349
|
-
return [
|
|
350
|
-
...new Set(
|
|
351
|
-
value
|
|
352
|
-
.split(/[\n,]/)
|
|
353
|
-
.map((id) => id.trim())
|
|
354
|
-
.filter(Boolean),
|
|
355
|
-
),
|
|
356
|
-
];
|
|
357
|
-
}
|
|
358
|
-
|
|
359
348
|
function isStorageSetupFailureMessage(message: string | null | undefined) {
|
|
360
349
|
return STORAGE_SETUP_FAILURE_RE.test(message ?? "");
|
|
361
350
|
}
|
|
@@ -997,9 +986,9 @@ export function App() {
|
|
|
997
986
|
setPopoverView("settings");
|
|
998
987
|
}
|
|
999
988
|
|
|
1000
|
-
const [rewindSettingsReturnView
|
|
1001
|
-
"recorder"
|
|
1002
|
-
|
|
989
|
+
const [rewindSettingsReturnView] = useState<"recorder" | "settings">(
|
|
990
|
+
"recorder",
|
|
991
|
+
);
|
|
1003
992
|
const [rewindAgentPromptCopied, setRewindAgentPromptCopied] = useState(false);
|
|
1004
993
|
const [agentHandoff, setAgentHandoff] =
|
|
1005
994
|
useState<RewindAgentHandoffRequest | null>(null);
|
|
@@ -1037,7 +1026,7 @@ export function App() {
|
|
|
1037
1026
|
// popover auto-hide during the macOS screen-picker focus dance.
|
|
1038
1027
|
const [recordingFlowActive, setRecordingFlowActive] = useState(false);
|
|
1039
1028
|
const [recordingStopFinalizing, setRecordingStopFinalizing] = useState(false);
|
|
1040
|
-
const [
|
|
1029
|
+
const [, setLastRecordingId] = useState<string | null>(null);
|
|
1041
1030
|
const [authStatus, setAuthStatus] = useState<"unknown" | "authed" | "anon">(
|
|
1042
1031
|
"unknown",
|
|
1043
1032
|
);
|
|
@@ -1071,7 +1060,6 @@ export function App() {
|
|
|
1071
1060
|
const {
|
|
1072
1061
|
cameraId,
|
|
1073
1062
|
setCameraId,
|
|
1074
|
-
micId,
|
|
1075
1063
|
setMicId,
|
|
1076
1064
|
cameraLabel,
|
|
1077
1065
|
setCameraLabel,
|
|
@@ -4387,7 +4375,7 @@ function PendingUploadBanner({
|
|
|
4387
4375
|
|
|
4388
4376
|
const retrying = retryingUploadId === latest.recordingId;
|
|
4389
4377
|
const storageSetupFailure = isStorageSetupFailureMessage(latest.lastError);
|
|
4390
|
-
|
|
4378
|
+
|
|
4391
4379
|
const canOpenFolder = latest.kind === "native" && !!latest.folderPath;
|
|
4392
4380
|
const canExport = latest.kind === "browser";
|
|
4393
4381
|
const actionsDisabled =
|
|
@@ -5516,7 +5504,7 @@ function Setup({
|
|
|
5516
5504
|
const [rewindLocalBusy, setRewindLocalBusy] = useState(false);
|
|
5517
5505
|
const [rewindLocalError, setRewindLocalError] = useState<string | null>(null);
|
|
5518
5506
|
const [rewindReplayId, setRewindReplayId] = useState<string | null>(null);
|
|
5519
|
-
const [
|
|
5507
|
+
const [, setExcludedBundleIdsInput] = useState("");
|
|
5520
5508
|
const [excludedApps, setExcludedApps] = useState<RewindExcludedApplication[]>(
|
|
5521
5509
|
[],
|
|
5522
5510
|
);
|
|
@@ -1992,14 +1992,6 @@ function isCountdownCancelledError(err: unknown) {
|
|
|
1992
1992
|
);
|
|
1993
1993
|
}
|
|
1994
1994
|
|
|
1995
|
-
function isRegionSelectionCancelledError(err: unknown) {
|
|
1996
|
-
return (
|
|
1997
|
-
err instanceof Error &&
|
|
1998
|
-
err.name === "AbortError" &&
|
|
1999
|
-
/region selection/i.test(err.message)
|
|
2000
|
-
);
|
|
2001
|
-
}
|
|
2002
|
-
|
|
2003
1995
|
function normalizeRegionCaptureRect(value: unknown): RegionCaptureRect | null {
|
|
2004
1996
|
if (!value || typeof value !== "object") return null;
|
|
2005
1997
|
const rect = value as Partial<RegionCaptureRect>;
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
/** Visible readiness state shown
|
|
2
|
-
* resumable upload session are prepared. The numeric countdown replaces it
|
|
3
|
-
* only after zero can be an immediate media boundary. */
|
|
1
|
+
/** Visible readiness state shown before the numeric countdown takes over. */
|
|
4
2
|
export function Preparing() {
|
|
5
3
|
return (
|
|
6
|
-
<div className="preparing-root">
|
|
7
|
-
<div className="preparing-
|
|
4
|
+
<div className="countdown-root preparing-root">
|
|
5
|
+
<div className="preparing-content" role="status" aria-live="polite">
|
|
6
|
+
<span className="preparing-label">Preparing recording</span>
|
|
8
7
|
<div className="preparing-spinner" aria-hidden="true" />
|
|
9
|
-
<span>Preparing recording…</span>
|
|
10
8
|
</div>
|
|
11
9
|
</div>
|
|
12
10
|
);
|
|
@@ -4250,42 +4250,40 @@ body[data-clips-route="recording-pill"] #root {
|
|
|
4250
4250
|
}
|
|
4251
4251
|
|
|
4252
4252
|
/* ------------------------------------------------------------------------- */
|
|
4253
|
-
/* Overlay:
|
|
4253
|
+
/* Overlay: recording preparation */
|
|
4254
4254
|
/* ------------------------------------------------------------------------- */
|
|
4255
4255
|
|
|
4256
4256
|
.preparing-root {
|
|
4257
4257
|
position: fixed;
|
|
4258
4258
|
inset: 0;
|
|
4259
4259
|
display: flex;
|
|
4260
|
-
align-items:
|
|
4261
|
-
justify-content:
|
|
4262
|
-
|
|
4263
|
-
background: transparent;
|
|
4260
|
+
align-items: center;
|
|
4261
|
+
justify-content: center;
|
|
4262
|
+
pointer-events: none;
|
|
4264
4263
|
}
|
|
4265
4264
|
|
|
4266
|
-
.preparing-
|
|
4265
|
+
.preparing-content {
|
|
4267
4266
|
display: flex;
|
|
4267
|
+
flex-direction: column;
|
|
4268
4268
|
align-items: center;
|
|
4269
|
-
gap:
|
|
4270
|
-
width: 100%;
|
|
4271
|
-
padding: 12px 14px;
|
|
4272
|
-
border-radius: 16px;
|
|
4273
|
-
background: rgba(20, 22, 28, 0.94);
|
|
4274
|
-
backdrop-filter: blur(20px);
|
|
4275
|
-
-webkit-backdrop-filter: blur(20px);
|
|
4276
|
-
border: 1px solid rgba(255, 255, 255, 0.08);
|
|
4269
|
+
gap: 16px;
|
|
4277
4270
|
color: white;
|
|
4278
|
-
|
|
4279
|
-
|
|
4271
|
+
}
|
|
4272
|
+
|
|
4273
|
+
.preparing-label {
|
|
4274
|
+
font-size: 20px;
|
|
4275
|
+
font-weight: 650;
|
|
4276
|
+
letter-spacing: -0.01em;
|
|
4277
|
+
line-height: 1;
|
|
4280
4278
|
}
|
|
4281
4279
|
|
|
4282
4280
|
.preparing-spinner {
|
|
4283
|
-
width:
|
|
4284
|
-
height:
|
|
4281
|
+
width: 28px;
|
|
4282
|
+
height: 28px;
|
|
4285
4283
|
flex: 0 0 auto;
|
|
4286
4284
|
border-radius: 50%;
|
|
4287
|
-
border:
|
|
4288
|
-
border-top-color:
|
|
4285
|
+
border: 3px solid color-mix(in srgb, currentColor 18%, transparent);
|
|
4286
|
+
border-top-color: currentColor;
|
|
4289
4287
|
animation: finalizing-spin 0.9s linear infinite;
|
|
4290
4288
|
}
|
|
4291
4289
|
|
|
@@ -472,25 +472,17 @@ fn stop_countdown_control_tracking() {
|
|
|
472
472
|
COUNTDOWN_CONTROL_TRACKING.store(false, Ordering::SeqCst);
|
|
473
473
|
}
|
|
474
474
|
|
|
475
|
-
///
|
|
476
|
-
/// before the numeric countdown. This capture-excluded
|
|
477
|
-
/// focus as the first stage of the explicit modal start flow, so the user
|
|
478
|
-
/// that Start was accepted without changing the exact countdown-zero
|
|
475
|
+
/// Full-screen visible readiness state for the slow work that intentionally
|
|
476
|
+
/// runs before the numeric countdown. This capture-excluded overlay briefly
|
|
477
|
+
/// takes focus as the first stage of the explicit modal start flow, so the user
|
|
478
|
+
/// sees that Start was accepted without changing the exact countdown-zero
|
|
479
|
+
/// boundary.
|
|
479
480
|
#[tauri::command]
|
|
480
481
|
pub async fn show_preparing(app: AppHandle) -> Result<(), String> {
|
|
481
482
|
if let Some(existing) = app.get_webview_window(PREPARING_LABEL) {
|
|
482
483
|
let _ = existing.close();
|
|
483
484
|
}
|
|
484
485
|
let (mx, my, mw, mh) = tray_monitor_physical_rect(&app);
|
|
485
|
-
let scale = overlay_scale_factor(&app);
|
|
486
|
-
let content_w: u32 = (260.0 * scale).round() as u32;
|
|
487
|
-
let content_h: u32 = (58.0 * scale).round() as u32;
|
|
488
|
-
let margin: i32 = (14.0 * scale).round() as i32;
|
|
489
|
-
let gutter = overlay_shadow_gutter_physical(&app);
|
|
490
|
-
let w = content_w + gutter * 2;
|
|
491
|
-
let h = content_h + gutter * 2;
|
|
492
|
-
let x = (mx + (mw.saturating_sub(w) / 2) as i32).max(mx);
|
|
493
|
-
let y = (my + mh as i32 - h as i32 - margin).max(my);
|
|
494
486
|
let win = WebviewWindowBuilder::new(&app, PREPARING_LABEL, build_overlay_url("preparing"))
|
|
495
487
|
.title("Preparing recording")
|
|
496
488
|
.decorations(false)
|
|
@@ -503,14 +495,14 @@ pub async fn show_preparing(app: AppHandle) -> Result<(), String> {
|
|
|
503
495
|
.focused(true)
|
|
504
496
|
.build()
|
|
505
497
|
.map_err(|error| format!("preparing window build failed: {error}"))?;
|
|
506
|
-
let _ = win.set_size(tauri::Size::Physical(PhysicalSize::new(
|
|
507
|
-
let _ = win.set_position(PhysicalPosition::new(
|
|
498
|
+
let _ = win.set_size(tauri::Size::Physical(PhysicalSize::new(mw, mh)));
|
|
499
|
+
let _ = win.set_position(PhysicalPosition::new(mx, my));
|
|
508
500
|
let _ = win.set_ignore_cursor_events(true);
|
|
509
501
|
set_capture_excluded(&win);
|
|
510
502
|
configure_overlay_behavior(&win);
|
|
511
503
|
// Preparation and countdown are one explicit modal start flow. Making the
|
|
512
|
-
//
|
|
513
|
-
//
|
|
504
|
+
// readiness overlay key ensures it gets a real first paint and is announced
|
|
505
|
+
// before the countdown replaces it.
|
|
514
506
|
present_interactive_window(&win);
|
|
515
507
|
let _ = app.emit("clips:toolbar-preparing", true);
|
|
516
508
|
// A newly-created webview needs one paint before the async preparation can
|
|
@@ -38,7 +38,11 @@ connection exists:
|
|
|
38
38
|
register a `kind: "oauth"` entry so the shared UI renders Connect and the
|
|
39
39
|
runtime owns status, refresh, and reauthorization.
|
|
40
40
|
- **Deploy- or app-level configuration** - use deployment/runtime
|
|
41
|
-
configuration, not a per-user secret row.
|
|
41
|
+
configuration, not a per-user secret row. For a non-secret public setting
|
|
42
|
+
already represented by `AgentNativeConfig`, put the default in
|
|
43
|
+
`agent-native.config.ts` and use its `AGENT_NATIVE_CONFIG_<PATH>` alias only
|
|
44
|
+
for a deployment override. Never put a credential or provider key in that
|
|
45
|
+
public namespace.
|
|
42
46
|
- **Account, customer, manager, or other non-secret identifier** - store it as
|
|
43
47
|
scoped connection metadata or app data, not as a masked secret field.
|
|
44
48
|
|
|
@@ -55,7 +55,10 @@ Preview before `--apply`, commit `agent-native.ejections.json`, and never edit
|
|
|
55
55
|
ZIPs, screenshots, thumbnails, session replay chunks) in configured file/blob
|
|
56
56
|
storage and persist only URLs, ids, or handles.
|
|
57
57
|
- Store shared runtime configuration in the workspace root `.env`; use
|
|
58
|
-
`apps/<app>/.env` only for app-specific overrides.
|
|
58
|
+
`apps/<app>/.env` only for app-specific overrides. For public app behavior,
|
|
59
|
+
prefer the default in `agent-native.config.ts` and use the deterministic
|
|
60
|
+
`AGENT_NATIVE_CONFIG_<UPPER_SNAKE_PATH>` alias only when a non-secret value
|
|
61
|
+
needs a deployment override. Never hardcode API keys,
|
|
59
62
|
tokens, webhook URLs, signing secrets, private Builder/internal data, customer
|
|
60
63
|
data, or credential-looking literals in source, docs, prompts, fixtures,
|
|
61
64
|
application state, action responses, or generated app content. Use
|