diff --git a/apps/web/src/cloud/linkEnvironment.ts b/apps/web/src/cloud/linkEnvironment.ts
index a245cbc54db2..f8ad6c058a7e 100644
--- a/apps/web/src/cloud/linkEnvironment.ts
+++ b/apps/web/src/cloud/linkEnvironment.ts
@@ -38,6 +38,7 @@ import {
reportRelayClientInstallProgress,
requestRelayClientInstallConfirmation,
} from "./relayClientInstallDialog";
+import { APP_DISPLAY_NAME } from "~/branding";
export function normalizeRelayBaseUrl(value: string | null | undefined): string | null {
const trimmed = value?.trim();
@@ -74,7 +75,7 @@ function ensureRelayClientAvailable(
if (status.status === "available") return;
if (status.status === "unsupported") {
return yield* new CloudEnvironmentLinkError({
- message: `T3 Code cannot install the relay client automatically on ${status.platform}-${status.arch}.`,
+ message: `${APP_DISPLAY_NAME} cannot install the relay client automatically on ${status.platform}-${status.arch}.`,
});
}
@@ -110,7 +111,7 @@ function ensureRelayClientAvailable(
return yield* new CloudEnvironmentLinkError({
message:
installedStatus.status === "unsupported"
- ? `T3 Code cannot install the relay client automatically on ${installedStatus.platform}-${installedStatus.arch}.`
+ ? `${APP_DISPLAY_NAME} cannot install the relay client automatically on ${installedStatus.platform}-${installedStatus.arch}.`
: "The relay client is still unavailable after installation.",
});
}
diff --git a/apps/web/src/components/ChatView.tsx b/apps/web/src/components/ChatView.tsx
index 1ee19ea16e29..6d60039964b4 100644
--- a/apps/web/src/components/ChatView.tsx
+++ b/apps/web/src/components/ChatView.tsx
@@ -365,6 +365,7 @@ import {
serverUpdateGuidance,
} from "../versionSkew";
import { useAssetUrls } from "../assets/assetUrls";
+import { APP_DISPLAY_NAME } from "~/branding";
const IMAGE_ONLY_BOOTSTRAP_PROMPT =
"[User attached one or more images without additional text. Respond using the conversation context and the attached image(s).]";
@@ -6772,7 +6773,7 @@ function ChatViewContent(props: ChatViewProps) {
) : activeRightPanelSurface?.kind === "pull-request" && !supportsPullRequests ? (
) : activeRightPanelSurface?.kind === "pull-request" ? (
// No onClose: the surface tab's own X owns closing here, and a second X in the header
diff --git a/apps/web/src/components/RightPanelTabs.tsx b/apps/web/src/components/RightPanelTabs.tsx
index 38752fdc2334..bd8bfcf1e7a5 100644
--- a/apps/web/src/components/RightPanelTabs.tsx
+++ b/apps/web/src/components/RightPanelTabs.tsx
@@ -51,6 +51,7 @@ import { PreviewPanelShell, type PreviewPanelMode } from "./preview/PreviewPanel
import { FaviconImage } from "./preview/PreviewFaviconIcon";
import { previewBridge } from "./preview/previewBridge";
import { PierreEntryIcon } from "./chat/PierreEntryIcon";
+import { APP_DISPLAY_NAME } from "~/branding";
interface RightPanelTabsProps {
mode: PreviewPanelMode;
@@ -111,7 +112,7 @@ export interface PullRequestTabStatus {
}
const SURFACE_DISABLED_REASONS = {
- browser: "Browser previews are only available in the T3 Code desktop app.",
+ browser: `Browser previews are only available in the ${APP_DISPLAY_NAME} desktop app.`,
terminal: "Terminal surfaces are only available from a project thread.",
files: "Files are only available when a project is open.",
diff: "Diff is only available for server threads in Git repositories.",
diff --git a/apps/web/src/components/SshPasswordRequestDialog.tsx b/apps/web/src/components/SshPasswordRequestDialog.tsx
index 3962f0ad8a81..57e829eb48e3 100644
--- a/apps/web/src/components/SshPasswordRequestDialog.tsx
+++ b/apps/web/src/components/SshPasswordRequestDialog.tsx
@@ -13,6 +13,7 @@ import {
} from "./ui/dialog";
import { Input } from "./ui/input";
import { canSubmitSshPassword } from "./sshPasswordRequestForm";
+import { APP_DISPLAY_NAME } from "~/branding";
export interface SshPasswordPromptRequestPresentation {
readonly requestId: string;
@@ -176,7 +177,7 @@ export function SshPasswordRequestDialog({
SSH Authentication Required
T3 needs your SSH key passphrase or password to connect to {target}. It is
- passed to the SSH process for this attempt and is not saved by T3 Code.
+ passed to the SSH process for this attempt and is not saved by ${APP_DISPLAY_NAME}.
diff --git a/apps/web/src/components/clerk/MobileClientsUserProfilePage.logic.ts b/apps/web/src/components/clerk/MobileClientsUserProfilePage.logic.ts
index 5ca9595bef4d..2d6c2a4e1b12 100644
--- a/apps/web/src/components/clerk/MobileClientsUserProfilePage.logic.ts
+++ b/apps/web/src/components/clerk/MobileClientsUserProfilePage.logic.ts
@@ -1,4 +1,5 @@
import type { RelayClientDeviceRecord } from "@t3tools/contracts/relay";
+import { APP_DISPLAY_NAME } from "~/branding";
const mobileClientUpdatedAtFormatter = new Intl.DateTimeFormat(undefined, {
dateStyle: "medium",
@@ -15,7 +16,7 @@ const NOTIFICATION_PREFERENCES = [
>;
export function mobileClientPlatformLabel(device: RelayClientDeviceRecord): string {
- return `iOS ${device.iosMajorVersion}${device.appVersion ? ` · T3 Code ${device.appVersion}` : ""}`;
+ return `iOS ${device.iosMajorVersion}${device.appVersion ? ` · ${APP_DISPLAY_NAME} ${device.appVersion}` : ""}`;
}
export function mobileClientNotificationDetail(device: RelayClientDeviceRecord): string {
diff --git a/apps/web/src/components/cloud/RelayClientInstallDialog.tsx b/apps/web/src/components/cloud/RelayClientInstallDialog.tsx
index 78282f659151..c73dc244bec3 100644
--- a/apps/web/src/components/cloud/RelayClientInstallDialog.tsx
+++ b/apps/web/src/components/cloud/RelayClientInstallDialog.tsx
@@ -18,6 +18,7 @@ import {
DialogPopup,
DialogTitle,
} from "../ui/dialog";
+import { APP_DISPLAY_NAME } from "~/branding";
const installSteps: ReadonlyArray<{
readonly stage: RelayClientInstallProgressStage;
readonly label: string;
@@ -69,8 +70,8 @@ export function RelayClientInstallDialog() {
{isInstalling
- ? "T3 Code is preparing this environment for secure access through T3 Connect."
- : "T3 Code needs the relay client to make this environment available through T3 Connect."}
+ ? `${APP_DISPLAY_NAME} is preparing this environment for secure access through T3 Connect.`
+ : `${APP_DISPLAY_NAME} needs the relay client to make this environment available through T3 Connect.`}
@@ -91,7 +92,7 @@ export function RelayClientInstallDialog() {
value={activeStepIndex + 1}
/>
- Keep T3 Code open while the relay client is installed.
+ Keep ${APP_DISPLAY_NAME} open while the relay client is installed.
) : (
diff --git a/apps/web/src/components/computers/ComputerTaskHosts.tsx b/apps/web/src/components/computers/ComputerTaskHosts.tsx
index f4a42b0c7db6..e73b869b03f5 100644
--- a/apps/web/src/components/computers/ComputerTaskHosts.tsx
+++ b/apps/web/src/components/computers/ComputerTaskHosts.tsx
@@ -28,6 +28,7 @@ import { environmentPresentations } from "~/state/presentation";
import { environmentSnapshotAtom } from "~/state/shell";
import { threadEnvironment } from "~/state/threads";
import { useAtomCommand } from "~/state/use-atom-command";
+import { APP_DISPLAY_NAME } from "~/branding";
const TARGET_READY_TIMEOUT_MS = 20_000;
const TARGET_READY_POLL_MS = 200;
@@ -235,6 +236,6 @@ async function waitForTargetSnapshot(
"computer_offline",
lastPhase === "connected"
? "That computer connected but T3 has not loaded its projects yet."
- : "Could not reach that computer. Keep T3 Code running there, or pick it in Run on first.",
+ : `Could not reach that computer. Keep ${APP_DISPLAY_NAME} running there, or pick it in Run on first.`,
);
}
diff --git a/apps/web/src/components/desktopUpdate.logic.ts b/apps/web/src/components/desktopUpdate.logic.ts
index 25d25cabc2dd..323aeec845b6 100644
--- a/apps/web/src/components/desktopUpdate.logic.ts
+++ b/apps/web/src/components/desktopUpdate.logic.ts
@@ -1,4 +1,5 @@
import type { DesktopUpdateActionResult, DesktopUpdateState } from "@t3tools/contracts";
+import { APP_DISPLAY_NAME } from "~/branding";
export type DesktopUpdateButtonAction = "download" | "install" | "none";
@@ -62,12 +63,12 @@ export function getArm64IntelBuildWarningDescription(state: DesktopUpdateState):
const action = resolveDesktopUpdateButtonAction(state);
if (action === "download") {
- return "This Mac has Apple Silicon, but T3 Code is still running the Intel build under Rosetta. Download the available update to switch to the native Apple Silicon build.";
+ return `This Mac has Apple Silicon, but ${APP_DISPLAY_NAME} is still running the Intel build under Rosetta. Download the available update to switch to the native Apple Silicon build.`;
}
if (action === "install") {
- return "This Mac has Apple Silicon, but T3 Code is still running the Intel build under Rosetta. Restart to install the downloaded Apple Silicon build.";
+ return `This Mac has Apple Silicon, but ${APP_DISPLAY_NAME} is still running the Intel build under Rosetta. Restart to install the downloaded Apple Silicon build.`;
}
- return "This Mac has Apple Silicon, but T3 Code is still running the Intel build under Rosetta. The next app update will replace it with the native Apple Silicon build.";
+ return `This Mac has Apple Silicon, but ${APP_DISPLAY_NAME} is still running the Intel build under Rosetta. The next app update will replace it with the native Apple Silicon build.`;
}
export function getDesktopUpdateButtonTooltip(state: DesktopUpdateState): string {
@@ -98,7 +99,7 @@ export function getDesktopUpdateInstallConfirmationMessage(
state: Pick,
): string {
const version = state.downloadedVersion ?? state.availableVersion;
- return `Install update${version ? ` ${version}` : ""} and restart T3 Code?\n\nAny running tasks will be interrupted. Make sure you're ready before continuing.`;
+ return `Install update${version ? ` ${version}` : ""} and restart ${APP_DISPLAY_NAME}?\n\nAny running tasks will be interrupted. Make sure you're ready before continuing.`;
}
export function getDesktopUpdateActionError(result: DesktopUpdateActionResult): string | null {
diff --git a/apps/web/src/components/settings/BrowserImportWizard.tsx b/apps/web/src/components/settings/BrowserImportWizard.tsx
index 8f9670e7444e..213eaf931f3f 100644
--- a/apps/web/src/components/settings/BrowserImportWizard.tsx
+++ b/apps/web/src/components/settings/BrowserImportWizard.tsx
@@ -26,6 +26,7 @@ import {
type ImportOutcome,
type WizardStep,
} from "./browserImportWizard.logic";
+import { APP_DISPLAY_NAME } from "~/branding";
/** A profile the import can land in. */
export interface WizardTargetProfile {
@@ -220,7 +221,7 @@ function FullDiskAccessStep({
return (
<>
- Let T3 Code read {source.name}’s cookies
+ Let ${APP_DISPLAY_NAME} read {source.name}’s cookies
{source.name} keeps its cookies somewhere only apps with Full Disk Access can reach. Turn
that on for T3 Code in System Settings, then come back and finish the import.
diff --git a/apps/web/src/components/settings/ComputerHistorySettings.tsx b/apps/web/src/components/settings/ComputerHistorySettings.tsx
index 9ec9954e17d8..f0ed26754a2f 100644
--- a/apps/web/src/components/settings/ComputerHistorySettings.tsx
+++ b/apps/web/src/components/settings/ComputerHistorySettings.tsx
@@ -39,6 +39,7 @@ import {
SettingsSection,
} from "./settingsLayout";
import { searchableSetting } from "./settingsSearch";
+import { APP_DISPLAY_NAME } from "~/branding";
function isDesktopHost(): boolean {
return typeof window !== "undefined" && window.desktopBridge !== undefined;
@@ -330,7 +331,7 @@ export function ComputerHistorySettings() {
{!onDesktop ? (
- Computer History recording runs in the T3 Code desktop app.
+ Computer History recording runs in the ${APP_DISPLAY_NAME} desktop app.
) : null}
diff --git a/apps/web/src/components/settings/ComputerUseSettings.tsx b/apps/web/src/components/settings/ComputerUseSettings.tsx
index 1bfb45fa58de..5535c080e680 100644
--- a/apps/web/src/components/settings/ComputerUseSettings.tsx
+++ b/apps/web/src/components/settings/ComputerUseSettings.tsx
@@ -31,9 +31,10 @@ import {
SettingsSection,
} from "./settingsLayout";
import { searchableSetting } from "./settingsSearch";
+import { APP_DISPLAY_NAME } from "~/branding";
/** Shown when the desktop host lacks the Computer Use permissions bridge API. */
-const BRIDGE_UNSUPPORTED_MESSAGE = "Update T3 Code to check Computer Use permissions";
+const BRIDGE_UNSUPPORTED_MESSAGE = `Update ${APP_DISPLAY_NAME} to check Computer Use permissions`;
function isDesktopHost(): boolean {
return typeof window !== "undefined" && window.desktopBridge !== undefined;
@@ -167,14 +168,14 @@ export function ComputerUseSettings() {
You are connected to a remote environment. Computer Use settings apply on the host
- running the T3 Code desktop app.
+ running the ${APP_DISPLAY_NAME} desktop app.
) : null}
Google Chrome
- Load the T3 Code extension so agents can open and drive tabs in a labelled group
+ Load the ${APP_DISPLAY_NAME} extension so agents can open and drive tabs in a labelled group
without taking over your browsing.
diff --git a/apps/web/src/components/settings/ConnectionsSettings.tsx b/apps/web/src/components/settings/ConnectionsSettings.tsx
index bde77cefc5b6..f0f058e8ea31 100644
--- a/apps/web/src/components/settings/ConnectionsSettings.tsx
+++ b/apps/web/src/components/settings/ConnectionsSettings.tsx
@@ -136,6 +136,7 @@ import { ConnectionStatusDot } from "../ConnectionStatusDot";
import { ServerUpdateAction, ServerUpdateProgress } from "../ServerUpdateAction";
import { CloudEnvironmentConnectRows } from "../cloud/CloudEnvironmentConnectList";
import { ITEM_ROW_CLASSNAME, ITEM_ROW_INNER_CLASSNAME } from "./itemRows";
+import { APP_DISPLAY_NAME } from "~/branding";
const DEFAULT_TAILSCALE_SERVE_PORT = 443;
const EMPTY_ADVERTISED_ENDPOINTS: ReadonlyArray = [];
@@ -3145,7 +3146,7 @@ export function ConnectionsSettings() {
{desktopWslState.enabled ? (
{pendingDesktopServerExposureMode === "network-accessible"
- ? "T3 Code will restart to expose this environment over the network."
- : "T3 Code will restart and limit this environment back to this machine."}
+ ? `${APP_DISPLAY_NAME} will restart to expose this environment over the network.`
+ : `${APP_DISPLAY_NAME} will restart and limit this environment back to this machine.`}
@@ -3451,15 +3452,15 @@ export function ConnectionsSettings() {
{pendingWslChange?.kind === "disable"
? pendingWslChange.wasWslOnly
- ? "T3 Code will restart on the Windows backend. Threads and projects opened against WSL stay safe inside the distro and become available again when you re-enable WSL."
- : "The WSL backend will stop. Threads and projects opened against WSL stay safe inside the distro, but they'll be unavailable in T3 Code until you re-enable WSL."
+ ? `${APP_DISPLAY_NAME} will restart on the Windows backend. Threads and projects opened against WSL stay safe inside the distro and become available again when you re-enable WSL.`
+ : `The WSL backend will stop. Threads and projects opened against WSL stay safe inside the distro, but they'll be unavailable in ${APP_DISPLAY_NAME} until you re-enable WSL.`
: pendingWslChange?.kind === "distro"
- ? "T3 Code will restart the WSL backend on the new distro. Sessions still running on the current distro will be interrupted."
+ ? `${APP_DISPLAY_NAME} will restart the WSL backend on the new distro. Sessions still running on the current distro will be interrupted.`
: pendingWslChange?.kind === "enable"
? "Run the WSL backend alongside the Windows one, or stop the Windows backend and use only WSL? You can change this later from Settings."
: pendingWslChange?.nextValue
- ? "T3 Code will restart and start only the WSL backend. Your Windows-side projects won't be accessible until you turn this off again."
- : "T3 Code will restart and bring the Windows backend back up alongside WSL."}
+ ? `${APP_DISPLAY_NAME} will restart and start only the WSL backend. Your Windows-side projects won't be accessible until you turn this off again.`
+ : `${APP_DISPLAY_NAME} will restart and bring the Windows backend back up alongside WSL.`}
@@ -3545,7 +3546,7 @@ export function ConnectionsSettings() {
Disable Tailscale HTTPS?
- T3 Code will restart the local backend without Tailscale Serve.
+ ${APP_DISPLAY_NAME} will restart the local backend without Tailscale Serve.
diff --git a/apps/web/src/components/settings/DesktopNotificationsSettings.tsx b/apps/web/src/components/settings/DesktopNotificationsSettings.tsx
index f159afcaf2cf..70a005065a15 100644
--- a/apps/web/src/components/settings/DesktopNotificationsSettings.tsx
+++ b/apps/web/src/components/settings/DesktopNotificationsSettings.tsx
@@ -15,9 +15,9 @@ import { Switch } from "../ui/switch.tsx";
import { toastManager } from "../ui/toast.tsx";
import { SettingsRow, SettingsSection } from "./settingsLayout.tsx";
import { searchableSetting } from "./settingsSearch.ts";
-
import { APP_DISPLAY_NAME } from "~/branding";
+
const EVENT_OPTIONS: ReadonlyArray<{
readonly event: DesktopNotificationEvent;
readonly title: string;
diff --git a/apps/web/src/components/settings/KeybindingsSettings.tsx b/apps/web/src/components/settings/KeybindingsSettings.tsx
index ccbd1f06582e..8ab848d40a3f 100644
--- a/apps/web/src/components/settings/KeybindingsSettings.tsx
+++ b/apps/web/src/components/settings/KeybindingsSettings.tsx
@@ -73,6 +73,7 @@ import { SettingsPageContainer, SettingsSection } from "./settingsLayout";
import { searchableSetting } from "./settingsSearch";
import { Tooltip, TooltipPopup, TooltipTrigger } from "../ui/tooltip";
import { useAtomCommand } from "../../state/use-atom-command";
+import { APP_DISPLAY_NAME } from "~/branding";
function KeybindingPill({ value }: { value: string }) {
const parts = value.split("+");
@@ -258,7 +259,7 @@ function UnknownWhenVariableWarning({
}
/>
- T3 Code does not recognize this condition yet. It can still be saved, but it may not match
+ ${APP_DISPLAY_NAME} does not recognize this condition yet. It can still be saved, but it may not match
unless the runtime provides it.
@@ -1248,7 +1249,7 @@ export function KeybindingsSettingsPanel() {
- Some shortcuts may be claimed by the browser before T3 Code sees them. Use the desktop
+ Some shortcuts may be claimed by the browser before ${APP_DISPLAY_NAME} sees them. Use the desktop
app for better keybinding support.
diff --git a/apps/web/src/components/settings/ThemeImportDialog.tsx b/apps/web/src/components/settings/ThemeImportDialog.tsx
index d6afe5f0117f..c636168b7151 100644
--- a/apps/web/src/components/settings/ThemeImportDialog.tsx
+++ b/apps/web/src/components/settings/ThemeImportDialog.tsx
@@ -29,6 +29,7 @@ import {
DialogTitle,
} from "../ui/dialog";
import { ThemeSearchSection } from "./ThemeSearchSection";
+import { APP_DISPLAY_NAME } from "~/branding";
/**
* A full theme export is a few KB, so anything past this is not a theme file.
@@ -529,7 +530,7 @@ export function ThemeImportDialog({
Theme file
- {fileName ?? "Drop T3 Code or VS Code .json files"}
+ {fileName ?? `Drop ${APP_DISPLAY_NAME} or VS Code .json files`}
{chooseButton()}
diff --git a/apps/web/src/components/settings/ThemePreviewCircles.tsx b/apps/web/src/components/settings/ThemePreviewCircles.tsx
index 1ac8fa734921..91ac016ca1e7 100644
--- a/apps/web/src/components/settings/ThemePreviewCircles.tsx
+++ b/apps/web/src/components/settings/ThemePreviewCircles.tsx
@@ -12,6 +12,7 @@ import {
type ThemeAppearance,
type ThemeDefinition,
} from "../../themePalette";
+import { APP_DISPLAY_NAME } from "~/branding";
const THEME_PREVIEW_ROLES = [
"sidebar",
@@ -58,7 +59,7 @@ const STANDARD_THEME_PREVIEW_COLORS: Record<
export const STANDARD_THEME_CARDS: ReadonlyArray = [
{
id: "default",
- label: "T3 Code",
+ label: `${APP_DISPLAY_NAME}`,
previews: (["light", "dark"] as const).map((mode) => ({
mode,
colors: STANDARD_THEME_PREVIEW_COLORS[mode],
diff --git a/apps/web/src/components/settings/ThemeSettings.tsx b/apps/web/src/components/settings/ThemeSettings.tsx
index 5399d071be9d..7c1ed1ef0983 100644
--- a/apps/web/src/components/settings/ThemeSettings.tsx
+++ b/apps/web/src/components/settings/ThemeSettings.tsx
@@ -49,6 +49,7 @@ import {
type ThemeMode,
} from "./ThemePreviewCircles";
import { ThemeWireframe } from "./ThemeWireframe";
+import { APP_DISPLAY_NAME } from "~/branding";
const MAINTAINER_THEMES: ReadonlyArray = [
T3_CHAT_THEME,
@@ -683,7 +684,7 @@ export function ThemeLibrary({
// Rings always show the effective owner of each appearance: an unpicked
// half belongs to the default card (a null owner), so a fresh install
- // shows T3 Code selected instead of nothing.
+ // shows ${APP_DISPLAY_NAME} selected instead of nothing.
const pickedModesFor = (cardId: string | null): ThemeMode[] => {
const rings: ThemeMode[] = [];
if (lightOwner === cardId) rings.push("light");
@@ -849,7 +850,7 @@ export function ThemeLibrary({
return (
- Choose how T3 Code looks. Use a built-in theme or make your own.
+ Choose how ${APP_DISPLAY_NAME} looks. Use a built-in theme or make your own.
Color scheme
diff --git a/apps/web/src/components/settings/VoiceSettingsPanel.tsx b/apps/web/src/components/settings/VoiceSettingsPanel.tsx
index 312fdd0cf4cf..d8bd786c0397 100644
--- a/apps/web/src/components/settings/VoiceSettingsPanel.tsx
+++ b/apps/web/src/components/settings/VoiceSettingsPanel.tsx
@@ -44,6 +44,7 @@ import {
} from "../voice/voiceSettingsStore";
import { useVoiceTraceStore } from "../voice/voiceTraceStore";
import { SettingsPageContainer, SettingsRow, SettingsSection } from "./settingsLayout";
+import { APP_DISPLAY_NAME } from "~/branding";
function messageFromError(error: unknown): string {
if (error instanceof Error) return error.message;
@@ -122,7 +123,7 @@ function VoiceSettingsContent({ environmentId }: { readonly environmentId: Envir
if (result._tag === "Success") {
setConfigured(true);
setApiKey("");
- setFeedback("API key saved securely on this T3 Code environment.");
+ setFeedback(`API key saved securely on this ${APP_DISPLAY_NAME} environment.`);
} else {
setFeedback(messageFromError(squashAtomCommandFailure(result)));
}
@@ -167,7 +168,7 @@ function VoiceSettingsContent({ environmentId }: { readonly environmentId: Envir
if (result._tag === "Success") {
setParallelConfigured(true);
setParallelApiKey("");
- setParallelFeedback("Parallel API key saved securely on this T3 Code environment.");
+ setParallelFeedback(`Parallel API key saved securely on this ${APP_DISPLAY_NAME} environment.`);
} else {
setParallelFeedback(messageFromError(squashAtomCommandFailure(result)));
}
@@ -211,14 +212,14 @@ function VoiceSettingsContent({ environmentId }: { readonly environmentId: Envir
Voice
- Configure the global OpenAI Realtime voice layer for T3 Code.
+ Configure the global OpenAI Realtime voice layer for ${APP_DISPLAY_NAME}.
}>
{configured ? "Configured" : "Not configured"}
@@ -291,7 +292,7 @@ function VoiceSettingsContent({ environmentId }: { readonly environmentId: Envir
}>
\n${latestAssistantMessage}\n`
: "\n\nThere is no completed AI message in the origin task yet.";
return `# Role and Objective
-You are T3 Code's conversational voice copilot inside a desktop interface for coding-agent harnesses. Start silently and wait for the user. Help the user understand the ongoing task, unfamiliar terms, and project context, or help draft an unsent prompt.
+You are ${APP_DISPLAY_NAME}'s conversational voice copilot inside a desktop interface for coding-agent harnesses. Start silently and wait for the user. Help the user understand the ongoing task, unfamiliar terms, and project context, or help draft an unsent prompt.
# Personality and Tone
The user is a software developer. Assume technical fluency. Use standard engineering terminology without defining basic concepts unless asked. Be direct, neutral, and information-dense. Do not use analogies or tutorial framing by default.
diff --git a/apps/web/src/connection/platform.ts b/apps/web/src/connection/platform.ts
index c7652136f541..7673c5a8fd9f 100644
--- a/apps/web/src/connection/platform.ts
+++ b/apps/web/src/connection/platform.ts
@@ -58,6 +58,7 @@ import {
type DesktopSecondaryBootstrapsRead,
} from "./desktopLocal";
import { connectionStorageLayer } from "./storage";
+import { APP_DISPLAY_NAME } from "~/branding";
let nextObservedRpcRequestId = 0;
@@ -117,7 +118,7 @@ function clientMetadata() {
const desktop = window.desktopBridge !== undefined;
const platform = navigator.platform.trim();
return {
- label: desktop ? "T3 Code Desktop" : "T3 Code Web",
+ label: desktop ? `${APP_DISPLAY_NAME} Desktop` : `${APP_DISPLAY_NAME} Web`,
deviceType: "desktop" as const,
...(platform === "" ? {} : { os: platform }),
};
diff --git a/apps/web/src/routes/_chat.index.tsx b/apps/web/src/routes/_chat.index.tsx
index a77ca03b23ac..db6a69999a10 100644
--- a/apps/web/src/routes/_chat.index.tsx
+++ b/apps/web/src/routes/_chat.index.tsx
@@ -17,8 +17,8 @@ import {
useThreadShells,
} from "../state/entities";
import { useEnvironments } from "../state/environments";
-import { APP_DISPLAY_NAME } from "~/branding";
import { hasClerkPublicConfig, hasCloudPublicConfig } from "~/cloud/publicConfig";
+import { APP_DISPLAY_NAME } from "~/branding";
function ChatIndexRouteView() {
const { authGateState } = Route.useRouteContext();
diff --git a/apps/web/src/routes/_chat.pull-requests.tsx b/apps/web/src/routes/_chat.pull-requests.tsx
index 82a3a25dd8ba..5871b50bb897 100644
--- a/apps/web/src/routes/_chat.pull-requests.tsx
+++ b/apps/web/src/routes/_chat.pull-requests.tsx
@@ -101,6 +101,7 @@ import { useAtomCommand } from "../state/use-atom-command";
import { cn } from "~/lib/utils";
import { getSourceControlPresentationForKind } from "~/sourceControlPresentation";
import { COLLAPSED_SIDEBAR_TITLEBAR_INSET_CLASS } from "~/workspaceTitlebar";
+import { APP_DISPLAY_NAME } from "~/branding";
export interface PullRequestsSearch {
readonly involvement: PullRequestInvolvement;
@@ -1347,7 +1348,7 @@ function PullRequestsRouteView() {
) : !pullRequestsSupported ? (
) : firstLoad ? (
diff --git a/apps/web/src/routes/_chat.tsx b/apps/web/src/routes/_chat.tsx
index efb263b09d5e..56a1ffc238f8 100644
--- a/apps/web/src/routes/_chat.tsx
+++ b/apps/web/src/routes/_chat.tsx
@@ -16,6 +16,7 @@ import { selectActiveRightPanel, useRightPanelStore } from "../rightPanelStore";
import { useThreadSelectionStore } from "../threadSelectionStore";
import { stackedThreadToast, toastManager } from "~/components/ui/toast";
import { primaryServerKeybindingsAtom } from "~/state/server";
+import { APP_DISPLAY_NAME } from "~/branding";
function ChatRouteGlobalShortcuts() {
const clearSelection = useThreadSelectionStore((state) => state.clearSelection);
@@ -87,7 +88,7 @@ function ChatRouteGlobalShortcuts() {
stackedThreadToast({
type: "info",
title: "Preview is desktop-only",
- description: "Open T3 Code in the desktop app to use the in-app preview.",
+ description: `Open ${APP_DISPLAY_NAME} in the desktop app to use the in-app preview.`,
}),
);
return;
diff --git a/apps/web/src/versionSkew.test.ts b/apps/web/src/versionSkew.test.ts
index 41a148bacd8c..0f751882fb48 100644
--- a/apps/web/src/versionSkew.test.ts
+++ b/apps/web/src/versionSkew.test.ts
@@ -2,6 +2,7 @@ import { EnvironmentId } from "@t3tools/contracts";
import { describe, expect, it } from "vite-plus/test";
import { APP_VERSION } from "./branding";
+import { APP_DISPLAY_NAME } from "./branding";
import {
appendVersionMismatchHint,
buildVersionMismatchDismissalKey,
@@ -22,7 +23,7 @@ describe("versionSkew", () => {
expect(resolveVersionMismatch("9.9.9")).toEqual({
clientVersion: APP_VERSION,
serverVersion: "9.9.9",
- hint: "Version mismatch. Try syncing the client and server to the same T3 Code version.",
+ hint: `Version mismatch. Try syncing the client and server to the same ${APP_DISPLAY_NAME} version.`,
});
});
@@ -74,7 +75,7 @@ describe("versionSkew", () => {
const mismatch = resolveVersionMismatch("9.9.9");
expect(appendVersionMismatchHint("Socket closed.", mismatch)).toBe(
- "Socket closed. Hint: Version mismatch. Try syncing the client and server to the same T3 Code version.",
+ `Socket closed. Hint: Version mismatch. Try syncing the client and server to the same ${APP_DISPLAY_NAME} version.`,
);
});
diff --git a/apps/web/src/versionSkew.ts b/apps/web/src/versionSkew.ts
index f56f03ab7ad3..e8f0e740917c 100644
--- a/apps/web/src/versionSkew.ts
+++ b/apps/web/src/versionSkew.ts
@@ -1,7 +1,7 @@
import type { EnvironmentId, ServerConfig, ServerSelfUpdateCapability } from "@t3tools/contracts";
import * as Schema from "effect/Schema";
-import { APP_VERSION } from "./branding";
+import { APP_DISPLAY_NAME, APP_VERSION } from "./branding";
import { getLocalStorageItem, setLocalStorageItem } from "./hooks/useLocalStorage";
export interface VersionMismatch {
@@ -39,7 +39,7 @@ export function resolveVersionMismatch(
return {
clientVersion: normalizedClientVersion,
serverVersion: normalizedServerVersion,
- hint: "Version mismatch. Try syncing the client and server to the same T3 Code version.",
+ hint: `Version mismatch. Try syncing the client and server to the same ${APP_DISPLAY_NAME} version.`,
};
}