diff --git a/apps/web/src/components/ProjectCloneToastCoordinator.tsx b/apps/web/src/components/ProjectCloneToastCoordinator.tsx index 37003089c794d..f6c80158b89e9 100644 --- a/apps/web/src/components/ProjectCloneToastCoordinator.tsx +++ b/apps/web/src/components/ProjectCloneToastCoordinator.tsx @@ -117,6 +117,7 @@ function EnvironmentCloneToasts({ environmentId }: { environmentId: EnvironmentI ); }, }, + actionVariant: "outline", data: { hideCopyButton: true }, }); if (tracked) { diff --git a/apps/web/src/components/ProviderUpdatePrimaryNotification.tsx b/apps/web/src/components/ProviderUpdatePrimaryNotification.tsx index 74040e171c5d5..2203d2a40b896 100644 --- a/apps/web/src/components/ProviderUpdatePrimaryNotification.tsx +++ b/apps/web/src/components/ProviderUpdatePrimaryNotification.tsx @@ -298,7 +298,7 @@ export function ProviderUpdatePrimaryNotification() { children: "Settings", onClick: openSettings, }, - actionVariant: "outline", + actionVariant: oneClickProviders.length > 0 ? "default" : "outline", data: { leadingIcon: updateProviders.length === 1 ? ( @@ -312,7 +312,7 @@ export function ProviderUpdatePrimaryNotification() { children: "Settings", onClick: openSettings, }, - secondaryActionVariant: "outline" as const, + secondaryActionVariant: "ghost" as const, } : {}), }, diff --git a/apps/web/src/components/ThreadTabGroupNameDialog.tsx b/apps/web/src/components/ThreadTabGroupNameDialog.tsx index cdc1d6a50bb03..ca24a94829f82 100644 --- a/apps/web/src/components/ThreadTabGroupNameDialog.tsx +++ b/apps/web/src/components/ThreadTabGroupNameDialog.tsx @@ -69,7 +69,7 @@ function NameDialog({ initial }: { initial: string | null }) { /> - diff --git a/apps/web/src/components/chat/ChatOverlayHosts.tsx b/apps/web/src/components/chat/ChatOverlayHosts.tsx index 94dad6e78f9df..d06f748e0681c 100644 --- a/apps/web/src/components/chat/ChatOverlayHosts.tsx +++ b/apps/web/src/components/chat/ChatOverlayHosts.tsx @@ -217,7 +217,7 @@ export function RevertConfirmHost(props: { }>Cancel - diff --git a/apps/web/src/components/chat/MessageCopyButton.tsx b/apps/web/src/components/chat/MessageCopyButton.tsx index 361f9a6c2a5bc..3171fc5865d79 100644 --- a/apps/web/src/components/chat/MessageCopyButton.tsx +++ b/apps/web/src/components/chat/MessageCopyButton.tsx @@ -16,7 +16,6 @@ export const MessageCopyButton = memo(function MessageCopyButton({ label = "Copy message", icon = Copy, extraFlavors, - size = "xs", variant = "outline", className, }: { @@ -24,7 +23,6 @@ export const MessageCopyButton = memo(function MessageCopyButton({ label?: string; icon?: typeof Copy; extraFlavors?: Readonly>; - size?: "xs" | "icon-xs"; variant?: "outline" | "ghost"; className?: string; }) { @@ -46,7 +44,7 @@ export const MessageCopyButton = memo(function MessageCopyButton({ onClick={() => copyToClipboard(text)} ref={ref} type="button" - size={size} + size="icon-xs" variant={variant === "ghost" ? "ghost-muted" : variant} className={className} /> diff --git a/apps/web/src/components/chat/MessagesTimeline.tsx b/apps/web/src/components/chat/MessagesTimeline.tsx index 3906584dd1e46..dc0da3a1ff9b7 100644 --- a/apps/web/src/components/chat/MessagesTimeline.tsx +++ b/apps/web/src/components/chat/MessagesTimeline.tsx @@ -162,7 +162,6 @@ import { Code2Icon, XIcon, ZapIcon, - RotateCcwIcon, MessageSquareTextIcon, } from "lucide-react"; import { @@ -2645,7 +2644,7 @@ function RevertUserMessageButton({ render={ - {retryRunId !== null && onRetryWorkspacePreparation ? ( - - ) : null} - ); } @@ -5900,9 +5893,7 @@ function WorkEntryLogRow(props: WorkEntryRowProps) { trailing={ <> {createdThread ? ( - + ) : null} {notifiedSubagentThreadId ? ( - - diff --git a/apps/web/src/components/chat/SecretRequestCard.tsx b/apps/web/src/components/chat/SecretRequestCard.tsx index 1c84c5f111cd2..7f9fb52d8e954 100644 --- a/apps/web/src/components/chat/SecretRequestCard.tsx +++ b/apps/web/src/components/chat/SecretRequestCard.tsx @@ -137,33 +137,27 @@ function PendingSecretRequestForm(props: { onChange={(event) => setSecret(event.currentTarget.value)} /> - - - {error !== null ? ( - - ) : null} -
-

- - {SECRET_REQUEST_PRIVACY_NOTE} -

+
+ {error !== null ? ( + + ) : null} +

+ + {SECRET_REQUEST_PRIVACY_NOTE} +

); } diff --git a/apps/web/src/components/chat/ThreadDetailsPrRow.tsx b/apps/web/src/components/chat/ThreadDetailsPrRow.tsx index 6b29ffa1f4eb8..992b124b9d935 100644 --- a/apps/web/src/components/chat/ThreadDetailsPrRow.tsx +++ b/apps/web/src/components/chat/ThreadDetailsPrRow.tsx @@ -462,11 +462,8 @@ export function ThreadDetailsPrRow({ - }> - Cancel - + }>Cancel - - +
Folder not found
) : null} - {missing ? null : ( -
+ {missing ? ( +
+ + +
+ ) : ( +
) : null} {canSchedule ? ( ) : null} {canSchedule && !snoozed ? ( @@ -149,7 +161,7 @@ function RecoveryActions({ disabled={pending || Date.parse(resetAt!) <= nowMs} onClick={() => toggle("snooze")} > - {pending ? "Saving..." : "Snooze until reset"} + {pendingAction === "snooze" ? "Saving..." : "Snooze until reset"} ) : null} {continueElsewhere ? ( diff --git a/apps/web/src/components/chat/WorktreeSetupCard.tsx b/apps/web/src/components/chat/WorktreeSetupCard.tsx index 0bc01ea857136..e46c0b9378464 100644 --- a/apps/web/src/components/chat/WorktreeSetupCard.tsx +++ b/apps/web/src/components/chat/WorktreeSetupCard.tsx @@ -365,7 +365,9 @@ export function WorktreeSetupCard({ {detailsOpen ? : null} -
+ {/* Ghost xs buttons inset their leading icon by 6px, so ml-6.5 lines it up + with the ml-8 error, output and details above. */} +
+
+
+

+ Could not load T3 Connect environments +

+

{discoveryProblem}

+
+ +
); } diff --git a/apps/web/src/components/diffs/DiffCommentAnnotation.tsx b/apps/web/src/components/diffs/DiffCommentAnnotation.tsx index fb68d816f18ef..486ef9d6795bc 100644 --- a/apps/web/src/components/diffs/DiffCommentAnnotation.tsx +++ b/apps/web/src/components/diffs/DiffCommentAnnotation.tsx @@ -150,7 +150,7 @@ export function DiffCommentAnnotation({ {shortcutHint} - {onComment ? ( diff --git a/apps/web/src/components/onboarding/WelcomeWizard.tsx b/apps/web/src/components/onboarding/WelcomeWizard.tsx index 97724dc98ca18..30aaa299271df 100644 --- a/apps/web/src/components/onboarding/WelcomeWizard.tsx +++ b/apps/web/src/components/onboarding/WelcomeWizard.tsx @@ -435,7 +435,7 @@ function ConnectionStep({ .

diff --git a/apps/web/src/components/settings/CodexSetupSection.tsx b/apps/web/src/components/settings/CodexSetupSection.tsx index caa2ec9138e4b..9945f46fe2713 100644 --- a/apps/web/src/components/settings/CodexSetupSection.tsx +++ b/apps/web/src/components/settings/CodexSetupSection.tsx @@ -908,6 +908,7 @@ function ManagedCodexSetup({ ) : authenticated ? ( <> + {canCopyToClipboard ? ( ) : null} + @@ -1091,7 +1089,7 @@ const AuthorizedClientsHeaderAction = memo(function AuthorizedClientsHeaderActio > + @@ -2854,15 +2852,6 @@ export function ConnectionsSettings() { ) : null} {renderRemoteFields()} {savedBackendError ?

{savedBackendError}

: null} -
); const renderSshFields = () => ( @@ -2975,15 +2964,6 @@ export function ConnectionsSettings() { {savedBackendError ?? discoveredSshHostsError} ) : null} -
); @@ -3915,6 +3895,24 @@ export function ConnectionsSettings() { + + } + > + Cancel + + + diff --git a/apps/web/src/components/settings/NotionSettings.tsx b/apps/web/src/components/settings/NotionSettings.tsx index a071b9afd3fb0..3b09b61fa30b0 100644 --- a/apps/web/src/components/settings/NotionSettings.tsx +++ b/apps/web/src/components/settings/NotionSettings.tsx @@ -241,6 +241,19 @@ function NotionConnectionRows({ Change credentials ) : null} + {editingCredentials ? ( + + ) : null} @@ -318,21 +331,6 @@ function NotionConnectionRows({ /> - {editingCredentials ? ( -
- -
- ) : null} ) : null} diff --git a/apps/web/src/components/settings/ResourceTelemetryDiagnostics.tsx b/apps/web/src/components/settings/ResourceTelemetryDiagnostics.tsx index 04085b99fdf97..ab010bae60426 100644 --- a/apps/web/src/components/settings/ResourceTelemetryDiagnostics.tsx +++ b/apps/web/src/components/settings/ResourceTelemetryDiagnostics.tsx @@ -964,13 +964,13 @@ export function ResourceTelemetryDiagnostics({ - + } /> @@ -1213,13 +1213,13 @@ export function ResourceTelemetryDiagnostics({
} diff --git a/apps/web/src/components/settings/ThemeImportDialog.tsx b/apps/web/src/components/settings/ThemeImportDialog.tsx index 671dee55b63db..3f9c62db1f05c 100644 --- a/apps/web/src/components/settings/ThemeImportDialog.tsx +++ b/apps/web/src/components/settings/ThemeImportDialog.tsx @@ -21,7 +21,15 @@ import { } from "../../vscodeThemeImport"; import { Alert } from "../ui/alert"; import { Button } from "../ui/button"; -import { Dialog, DialogHeader, DialogPanel, DialogPopup, DialogTitle } from "../ui/dialog"; +import { + Dialog, + DialogClose, + DialogFooter, + DialogHeader, + DialogPanel, + DialogPopup, + DialogTitle, +} from "../ui/dialog"; import { ThemeSearchSection } from "./ThemeSearchSection"; /** @@ -459,27 +467,11 @@ export function ThemeImportDialog({ ); if (conflicts) { return ( -
-
-

Already installed

-

- {conflicts.map((theme) => theme.label).join(", ")} -

-
-
- - - - -
+
+

Already installed

+

+ {conflicts.map((theme) => theme.label).join(", ")} +

); } @@ -502,15 +494,6 @@ export function ThemeImportDialog({ {fileInput}
{editorSection()} -
- - -
); })()} @@ -521,6 +504,25 @@ export function ThemeImportDialog({ ) : null} + + }>Cancel + {conflicts ? ( + <> + + + + + ) : ( + + )} + ); diff --git a/apps/web/src/components/settings/UsageProviderSettings.tsx b/apps/web/src/components/settings/UsageProviderSettings.tsx index bab7ddd9c52a6..c94f59c8a7bf4 100644 --- a/apps/web/src/components/settings/UsageProviderSettings.tsx +++ b/apps/web/src/components/settings/UsageProviderSettings.tsx @@ -65,7 +65,7 @@ export function UsageProviderSettings({ {...searchableSetting("usage-providers")} headerAction={ !readOnly ? ( - diff --git a/apps/web/src/components/usage/UsagePage.tsx b/apps/web/src/components/usage/UsagePage.tsx index 398aea325a5e4..1808c3a6a2b5f 100644 --- a/apps/web/src/components/usage/UsagePage.tsx +++ b/apps/web/src/components/usage/UsagePage.tsx @@ -1273,8 +1273,8 @@ function CursorEnableLimits({ /> Cursor -
-

{CURSOR_KEYCHAIN_COPY}

+
+

{CURSOR_KEYCHAIN_COPY}

{environments.map((environment) => (