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
6 changes: 3 additions & 3 deletions apps/web/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -477,13 +477,13 @@
cursor: pointer;
}
</style>
<title>T3 Code (Alpha)</title>
<title>Chromeria</title>
</head>
<body>
<div id="root">
<div id="boot-shell">
<div id="boot-shell-card" aria-label="T3 Code splash screen">
<img id="boot-shell-logo" src="/apple-touch-icon.png" alt="T3 Code" />
<div id="boot-shell-card" aria-label="Chromeria splash screen">
<img id="boot-shell-logo" src="/apple-touch-icon.png" alt="Chromeria" />
</div>
</div>
</div>
Expand Down
Binary file added apps/web/public/chromeria-mark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions apps/web/src/bootstrap.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ describe("app startup failures", () => {
await import("./bootstrap");
await vi.dynamicImportSettled();

expect(bootShell?.text).toContain("T3 Code could not load.");
expect(bootShell?.text).toContain("Chromeria could not load.");
const reloadButton = bootShell?.children[0]?.children.find(
(element) => element.tagName === "button",
);
Expand All @@ -78,7 +78,7 @@ describe("app startup failures", () => {

showBootError(new Error("internal module path"));

expect(bootShell?.text).toContain("T3 Code could not load.");
expect(bootShell?.text).toContain("Chromeria could not load.");
expect(bootShell?.text.includes("internal module path")).toBe(dev);
});

Expand Down
4 changes: 2 additions & 2 deletions apps/web/src/branding.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ describe("branding", () => {
expect(branding.HOSTED_APP_CHANNEL).toBe("nightly");
expect(branding.HOSTED_APP_CHANNEL_LABEL).toBe("Nightly");
expect(branding.APP_STAGE_LABEL).toBe("Nightly");
expect(branding.APP_DISPLAY_NAME).toBe("T3 Code (Nightly)");
expect(branding.APP_DISPLAY_NAME).toBe("Chromeria (Nightly)");
});

it("does not label the latest hosted app channel", async () => {
Expand All @@ -58,7 +58,7 @@ describe("branding", () => {
expect(branding.HOSTED_APP_CHANNEL).toBe("latest");
expect(branding.HOSTED_APP_CHANNEL_LABEL).toBe("Latest");
expect(branding.APP_STAGE_LABEL).toBe("Latest");
expect(branding.APP_DISPLAY_NAME).toBe("T3 Code");
expect(branding.APP_DISPLAY_NAME).toBe("Chromeria");
});

it("ignores unknown hosted app channels", async () => {
Expand Down
3 changes: 2 additions & 1 deletion apps/web/src/branding.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@ export const HOSTED_APP_CHANNEL =
hostedAppChannel === "latest" || hostedAppChannel === "nightly" ? hostedAppChannel : null;
export const HOSTED_APP_CHANNEL_LABEL =
HOSTED_APP_CHANNEL === "nightly" ? "Nightly" : HOSTED_APP_CHANNEL === "latest" ? "Latest" : null;
export const APP_BASE_NAME = injectedDesktopAppBranding?.baseName ?? "T3 Code";
// Chromeria (toolboxmd fork): browser clients without desktop branding.
export const APP_BASE_NAME = injectedDesktopAppBranding?.baseName ?? "Chromeria";
export const APP_STAGE_LABEL =
injectedDesktopAppBranding?.stageLabel ??
HOSTED_APP_CHANNEL_LABEL ??
Expand Down
9 changes: 4 additions & 5 deletions apps/web/src/components/T3Wordmark.tsx
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
import type { SVGProps } from "react";

// Chromeria (toolboxmd fork): the product mark is the Chromeria obelisk icon,
// served from apps/web/public. Callers size it by height like the T3 glyph.
export function T3Wordmark(props: SVGProps<SVGSVGElement>) {
return (
<svg {...props} viewBox="15.5309 37 94.3941 56.96" xmlns="http://www.w3.org/2000/svg">
<path
d="M33.4509 93V47.56H15.5309V37H64.3309V47.56H46.4109V93H33.4509ZM86.7253 93.96C82.832 93.96 78.9653 93.4533 75.1253 92.44C71.2853 91.3733 68.032 89.88 65.3653 87.96L70.4053 78.04C72.5386 79.5867 75.0186 80.8133 77.8453 81.72C80.672 82.6267 83.5253 83.08 86.4053 83.08C89.6586 83.08 92.2186 82.44 94.0853 81.16C95.952 79.88 96.8853 78.12 96.8853 75.88C96.8853 73.7467 96.0586 72.0667 94.4053 70.84C92.752 69.6133 90.0853 69 86.4053 69H80.4853V60.44L96.0853 42.76L97.5253 47.4H68.1653V37H107.365V45.4L91.8453 63.08L85.2853 59.32H89.0453C95.9253 59.32 101.125 60.8667 104.645 63.96C108.165 67.0533 109.925 71.0267 109.925 75.88C109.925 79.0267 109.099 81.9867 107.445 84.76C105.792 87.48 103.259 89.6933 99.8453 91.4C96.432 93.1067 92.0586 93.96 86.7253 93.96Z"
fill="currentColor"
/>
<svg {...props} viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">
<image href="/chromeria-mark.png" width="64" height="64" />
</svg>
);
}
3 changes: 2 additions & 1 deletion apps/web/src/components/chat/MessagesTimeline.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,7 @@ import ReactMarkdown from "react-markdown";
import remarkGfm from "remark-gfm";
import type { Root, RootContent } from "mdast";
import { T3Wordmark } from "../T3Wordmark";
import { APP_BASE_NAME } from "../../branding";
import {
BotIcon,
BrainIcon,
Expand Down Expand Up @@ -2355,7 +2356,7 @@ function AssistantTimelineRow({ row }: { row: Extract<TimelineRow, { kind: "mess
return (
<>
<div className="relative min-w-0 px-1 py-0.5">
<MessageAuthorHeading>T3 Code</MessageAuthorHeading>
<MessageAuthorHeading>{APP_BASE_NAME}</MessageAuthorHeading>
<AssistantCitationSource
messageId={row.message.id}
{...(ctx.threadRef ? { threadRef: ctx.threadRef } : {})}
Expand Down
7 changes: 4 additions & 3 deletions apps/web/src/components/onboarding/WelcomeWizard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ import { TerminalViewport } from "../ThreadTerminalDrawer";
import { CloudEnvironmentConnectRows } from "../cloud/CloudEnvironmentConnectList";
import { ClaudeAI, OpenAI } from "../Icons";
import { T3Wordmark } from "../T3Wordmark";
import { APP_BASE_NAME } from "../../branding";
import { Button } from "../ui/button";
import { Checkbox } from "../ui/checkbox";
import { Collapsible, CollapsiblePanel, CollapsibleTrigger } from "../ui/collapsible";
Expand Down Expand Up @@ -189,12 +190,12 @@ export function WelcomeWizard({
initialFocus={() => document.getElementById("onboarding-pairing-url") ?? true}
>
<WizardHeader
title="Set up T3 Code"
title={`Set up ${APP_BASE_NAME}`}
identity={
<div className="flex items-baseline gap-1.5" role="img" aria-label="T3 Code">
<div className="flex items-baseline gap-1.5" role="img" aria-label={APP_BASE_NAME}>
<T3Wordmark className="h-4 w-auto shrink-0" aria-hidden />
<span className="text-[1.4rem] font-medium tracking-tight text-muted-foreground">
Code
{APP_BASE_NAME}
</span>
</div>
}
Expand Down
3 changes: 2 additions & 1 deletion apps/web/src/components/settings/IntegrationsSettings.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { DeviceHostUpdates } from "../device/DeviceHostUpdates";
import { DeviceToolVersions } from "../device/DeviceToolVersions";
import { APP_BASE_NAME } from "../../branding";
import { useScopedSettings, useUpdateScopedSettings } from "./useScopedSettings";
import { ScopedSwitch } from "./ScopedSwitch";
import { DeviceHostsSettings } from "./DeviceHostsSettings";
Expand Down Expand Up @@ -561,7 +562,7 @@ function BrowserRecordingFrameRateSetting({ disabled }: { readonly disabled: boo

const LINK_TARGET_LABELS: Readonly<Record<BrowserLinkTarget, string>> = {
system: "Your default browser",
app: "T3 Code",
app: APP_BASE_NAME,
};

function BrowserLinkTargetSetting({ disabled }: { readonly disabled: boolean }) {
Expand Down
3 changes: 2 additions & 1 deletion apps/web/src/components/settings/ThemePreviewCircles.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
THEME_PREVIEW_RENDER_SPECS,
} from "@t3tools/shared/themePreview";
import { cn } from "../../lib/utils";
import { APP_BASE_NAME } from "../../branding";
import { Tooltip, TooltipPopup, TooltipTrigger } from "../ui/tooltip";
import {
getThemeColorsForMode,
Expand Down Expand Up @@ -58,7 +59,7 @@ const STANDARD_THEME_PREVIEW_COLORS: Record<
export const STANDARD_THEME_CARDS: ReadonlyArray<ThemeCardDefinition> = [
{
id: "default",
label: "T3 Code",
label: APP_BASE_NAME,
previews: (["light", "dark"] as const).map((mode) => ({
mode,
colors: STANDARD_THEME_PREVIEW_COLORS[mode],
Expand Down
5 changes: 3 additions & 2 deletions apps/web/src/components/sidebar/SidebarChrome.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { useEnvironmentIdentificationMode } from "../../hooks/useSettings";
import { cn } from "../../lib/utils";
import { useEnvironments } from "../../state/environments";
import { T3Wordmark } from "../T3Wordmark";
import { APP_BASE_NAME } from "../../branding";
import {
resolveEnvironmentIdentificationPillLabel,
resolveSidebarStageBackdropVariant,
Expand Down Expand Up @@ -90,14 +91,14 @@ function SidebarBrand({ onBackdrop }: { onBackdrop: boolean }) {
>
{/* Center the visible capitals, without the font's ascender/descender space. */}
<span className="inline-flex min-w-0 items-baseline gap-1 text-sm font-medium tracking-tight">
<T3Wordmark aria-label="T3" className="h-[1cap] w-auto shrink-0" />
<T3Wordmark aria-hidden className="h-[1cap] w-auto shrink-0" />
<span
className={cn(
"truncate [text-box:trim-both_cap_alphabetic]",
onBackdrop ? "text-white/70" : "text-muted-foreground",
)}
>
Code
{APP_BASE_NAME}
</span>
</span>
</Link>
Expand Down
6 changes: 4 additions & 2 deletions apps/web/src/lib/bootError.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
import { APP_BASE_NAME } from "../branding";

/** Shows startup failures before React can replace the boot splash. */
export function showBootError(error: unknown) {
console.error("T3 Code failed to start.", error);
console.error(`${APP_BASE_NAME} failed to start.`, error);
const bootShell = document.getElementById("boot-shell");
if (!bootShell) return;

Expand All @@ -9,7 +11,7 @@ export function showBootError(error: unknown) {
content.setAttribute("role", "alert");

const message = document.createElement("p");
message.textContent = "T3 Code could not load.";
message.textContent = `${APP_BASE_NAME} could not load.`;
content.append(message);

if (import.meta.env.DEV && error instanceof Error) {
Expand Down
Loading