Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 16 additions & 1 deletion apps/web/src/components/onboarding/WelcomeWizard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import { TYPOGRAPHY_ADVANCED_STORAGE_KEY } from "../../appearanceFonts";
import { useLocalStorage } from "../../hooks/useLocalStorage";
import { hasCloudPublicConfig } from "../../cloud/publicConfig";
import { PRIVACY_POLICY_URL } from "../../legalLinks";
import { useT3ConnectAuthPrompt } from "../clerk/useT3ConnectAuthPrompt";
import { useCompleteOnboarding } from "../../onboarding/firstRun";
import {
Expand Down Expand Up @@ -414,8 +415,22 @@ function ConnectionStep({
</Collapsible>
</div>
</div>
<div className="mt-6 flex items-center justify-end gap-3">
<div className="mt-6 flex flex-col-reverse gap-4 sm:flex-row sm:items-center sm:justify-between sm:gap-6">
<p className="min-w-0 text-xs leading-relaxed text-muted-foreground">
T3 Code collects anonymous usage data to help us improve it. To read more about how your
data is used and how to opt out, see our{" "}
<a
className="underline underline-offset-2 hover:text-foreground"
href={PRIVACY_POLICY_URL}
target="_blank"
rel="noreferrer noopener"
>
privacy policy
</a>
.
</p>
<Button
className="shrink-0 self-end"
ref={continueRef}
autoFocus={!expandPairingInitially}
disabled={!ready || isPairing}
Expand Down
14 changes: 14 additions & 0 deletions apps/web/src/components/settings/SettingsPanels.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { SettingsGroup } from "./SettingsGroup";
import { Spinner } from "~/components/ui/spinner";
import { NotificationSettings } from "./NotificationSettings";
import { PRIVACY_POLICY_URL } from "../../legalLinks";
import { ArchiveIcon, ArchiveX, CheckIcon, ChevronRightIcon, SettingsIcon } from "lucide-react";
import { Link, useNavigate } from "@tanstack/react-router";
import type { CSSProperties, ReactNode } from "react";
Expand Down Expand Up @@ -3334,6 +3335,19 @@ export function GeneralSettingsPanel() {
description="Current version of the application."
/>
)}
<SettingsRow
{...searchableSetting("privacy-policy")}
description="How we handle your data, including the anonymous usage data T3 Code collects."
control={
<Button
render={<a href={PRIVACY_POLICY_URL} target="_blank" rel="noreferrer noopener" />}
size="sm"
variant="outline"
>
View policy
</Button>
}
/>
</SettingsSection>
<SettingsSection title="Diagnostics">
<SettingsRow
Expand Down
6 changes: 6 additions & 0 deletions apps/web/src/components/settings/settingsSearch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -493,6 +493,12 @@ export const SETTINGS_SEARCH_ITEMS = [
scope: "project-defaults",
searchTerms: ["generated thread titles source control content default provider"],
},
{
id: "privacy-policy",
title: "Privacy policy",
to: "/settings/general",
searchTerms: ["telemetry analytics usage data tracking legal opt out"],
},
{
id: "diagnostics",
title: "Diagnostics",
Expand Down
1 change: 1 addition & 0 deletions apps/web/src/legalLinks.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export const PRIVACY_POLICY_URL = "https://t3.codes/privacy-policy";
Loading