authorgravatar for me@t3.ggTheo Browne <me@t3.gg> 2026-02-19 01:42:56-08:00
committergravatar for me@t3.ggTheo Browne <me@t3.gg> 2026-02-19 01:42:56-08:00
logdaf8e5f53b80dd51913a058cf7012153e5e9cd09
tree938675500b2674c7bb215e50a6d1be4451d8291d
parentc89798ecb12d0cbda6c69edb3b8675636c93f271
signature Commit is signed but in an unrecognized format.

dev build iconography


15 files changed, 24 insertions(+), 10 deletions(-)

apps/desktop/package.json+1-1
......@@ -2,7 +2,7 @@
22 "name": "@t3tools/desktop",
33 "version": "0.0.0",
44 "private": true,
5 "productName": "T3 Code",
5 "productName": "T3 Code (Alpha)",
66 "main": "dist-electron/main.js",
77 "scripts": {
88 "dev": "bun run --parallel dev:bundle dev:electron",
apps/desktop/resources/icon.icns
Binary files a/apps/desktop/resources/icon.icns and b/apps/desktop/resources/icon.icns differ
apps/desktop/resources/icon.ico
Binary files a/apps/desktop/resources/icon.ico and b/apps/desktop/resources/icon.ico differ
apps/desktop/resources/icon.png
Binary files a/apps/desktop/resources/icon.png and b/apps/desktop/resources/icon.png differ
apps/desktop/scripts/electron-launcher.mjs+3-2
......@@ -1,4 +1,4 @@
1// This file mostly exists because we want dev mode to say "T3 Code" instead of "electron"
1// This file mostly exists because we want dev mode to say "T3 Code (Dev)" instead of "electron"
22
33import { spawnSync } from "node:child_process";
44import {
......@@ -16,7 +16,8 @@ import { createRequire } from "node:module";
1616import { dirname, join, resolve } from "node:path";
1717import { fileURLToPath } from "node:url";
1818
19const APP_DISPLAY_NAME = "T3 Code";
19const isDevelopment = Boolean(process.env.VITE_DEV_SERVER_URL);
20const APP_DISPLAY_NAME = isDevelopment ? "T3 Code (Dev)" : "T3 Code (Alpha)";
2021const APP_BUNDLE_ID = "com.t3tools.t3code";
2122const LAUNCHER_VERSION = 1;
2223
apps/desktop/src/main.ts+1-1
......@@ -21,7 +21,7 @@ const BACKEND_ENTRY = path.join(ROOT_DIR, "apps/server/dist/index.mjs");
2121const WEB_ENTRY = path.join(ROOT_DIR, "apps/web/dist/index.html");
2222const STATE_DIR = path.join(os.homedir(), ".t3", "userdata");
2323const isDevelopment = Boolean(process.env.VITE_DEV_SERVER_URL);
24const APP_DISPLAY_NAME = "T3 Code";
24const APP_DISPLAY_NAME = isDevelopment ? "T3 Code (Dev)" : "T3 Code (Alpha)";
2525const APP_USER_MODEL_ID = "com.t3tools.t3code";
2626
2727let mainWindow: BrowserWindow | null = null;
apps/web/index.html+1-2
......@@ -4,7 +4,6 @@
44 <meta charset="UTF-8" />
55 <meta name="viewport" content="width=device-width, initial-scale=1.0" />
66 <link rel="icon" href="/favicon.ico" sizes="48x48" />
7 <link rel="icon" href="/favicon.svg" type="image/svg+xml" />
87 <link rel="apple-touch-icon" href="/apple-touch-icon.png" />
98 <link rel="preconnect" href="https://fonts.googleapis.com" />
109 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
......@@ -12,7 +11,7 @@
1211 href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300..800;1,9..40,300..800&display=swap"
1312 rel="stylesheet"
1413 />
15 <title>T3 Code</title>
14 <title>T3 Code (Alpha)</title>
1615 </head>
1716 <body>
1817 <div id="root"></div>
apps/web/public/apple-touch-icon.png
Binary files a/apps/web/public/apple-touch-icon.png and b/apps/web/public/apple-touch-icon.png differ
apps/web/public/favicon-16x16.png
Binary files a/apps/web/public/favicon-16x16.png and b/apps/web/public/favicon-16x16.png differ
apps/web/public/favicon-32x32.png
Binary files a/apps/web/public/favicon-32x32.png and b/apps/web/public/favicon-32x32.png differ
apps/web/public/favicon.ico
Binary files a/apps/web/public/favicon.ico and b/apps/web/public/favicon.ico differ
apps/web/src/branding.ts created+3
......@@ -0,0 +1,3 @@
1export const APP_BASE_NAME = "T3 Code";
2export const APP_STAGE_LABEL = import.meta.env.DEV ? "Dev" : "Alpha";
3export const APP_DISPLAY_NAME = `${APP_BASE_NAME} (${APP_STAGE_LABEL})`;
apps/web/src/components/Sidebar.tsx+9-3
......@@ -4,6 +4,7 @@ import type { ResolvedKeybindingsConfig } from "@t3tools/contracts";
44import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
55import { useNavigate, useParams } from "@tanstack/react-router";
66import { isElectron } from "../env";
7import { APP_STAGE_LABEL } from "../branding";
78import { useTheme } from "../hooks/useTheme";
89import { DEFAULT_MODEL } from "../model-logic";
910import { derivePendingApprovals } from "../session-logic";
......@@ -431,9 +432,14 @@ export default function Sidebar() {
431432 <div
432433 className={`flex items-center gap-2.5 px-4 ${isElectron ? "drag-region h-[52px] pl-[76px]" : "py-4"}`}
433434 >
434 <span className="flex-1 text-sm font-semibold tracking-tight text-foreground">
435 T3 <span className="font-normal text-muted-foreground">Code</span>
436 </span>
435 <div className="flex min-w-0 flex-1 items-center gap-2">
436 <span className="truncate text-sm font-semibold tracking-tight text-foreground">
437 T3 <span className="font-normal text-muted-foreground">Code</span>
438 </span>
439 <span className="rounded border border-border bg-secondary px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground">
440 {APP_STAGE_LABEL}
441 </span>
442 </div>
437443 <button
438444 type="button"
439445 className="rounded-md p-1.5 text-muted-foreground/80 transition-colors duration-150 hover:bg-accent hover:text-muted-foreground"
apps/web/src/main.tsx+2
......@@ -9,12 +9,14 @@ import "@xterm/xterm/css/xterm.css";
99import "highlight.js/styles/github-dark.css";
1010import "./index.css";
1111
12import { APP_DISPLAY_NAME } from "./branding";
1213import { isElectron } from "./env";
1314import { routeTree } from "./routeTree.gen";
1415
1516const history = isElectron ? createHashHistory() : createBrowserHistory();
1617
1718const queryClient = new QueryClient();
19document.title = APP_DISPLAY_NAME;
1820
1921const router = createRouter({
2022 routeTree,
apps/web/src/routes/__root.tsx+4-1
......@@ -9,6 +9,7 @@ import { invalidateGitQueries } from "../lib/gitReactQuery";
99import { DEFAULT_MODEL } from "../model-logic";
1010import { useStore } from "../store";
1111import { onServerWelcome } from "../wsNativeApi";
12import { APP_DISPLAY_NAME } from "../branding";
1213
1314export const Route = createRootRouteWithContext<{
1415 queryClient: QueryClient;
......@@ -23,7 +24,9 @@ function RootRouteView() {
2324 return (
2425 <div className="flex h-screen flex-col bg-background text-foreground">
2526 <div className="flex flex-1 items-center justify-center">
26 <p className="text-sm text-muted-foreground">Connecting to T3 Code server...</p>
27 <p className="text-sm text-muted-foreground">
28 Connecting to {APP_DISPLAY_NAME} server...
29 </p>
2730 </div>
2831 </div>
2932 );