From b5bab3eb134fd7555914fe57031a064b08beb195 Mon Sep 17 00:00:00 2001 From: Theo Browne Date: Mon, 9 Feb 2026 21:56:24 -0800 Subject: [PATCH] rebrand --- AGENTS.md | 4 ++-- README.md | 14 ++++++------- apps/desktop/package.json | 2 +- apps/desktop/src/main.ts | 12 ++++++------ apps/desktop/src/preload.ts | 2 +- apps/desktop/tsup.config.ts | 2 +- apps/renderer/index.html | 5 ++++- apps/renderer/package.json | 4 ++-- apps/renderer/src/App.tsx | 2 +- apps/renderer/src/components/ChatView.tsx | 6 +++--- apps/renderer/src/components/Sidebar.tsx | 7 ++----- apps/renderer/src/hooks/useTheme.ts | 2 +- apps/renderer/src/index.css | 16 +++++++-------- apps/renderer/src/model-logic.ts | 2 +- apps/renderer/src/session-logic.test.ts | 2 +- apps/renderer/src/session-logic.ts | 2 +- apps/renderer/src/store.test.ts | 2 +- apps/renderer/src/store.ts | 6 ++++-- apps/renderer/src/types.ts | 2 +- apps/renderer/src/vite-env.d.ts | 2 +- apps/renderer/src/wsNativeApi.ts | 2 +- apps/renderer/src/wsTransport.ts | 2 +- apps/server/package.json | 8 ++++---- apps/server/src/codexAppServerManager.ts | 8 ++++---- apps/server/src/index.ts | 16 +++++++-------- apps/server/src/projectRegistry.ts | 2 +- apps/server/src/providerManager.ts | 2 +- apps/server/src/wsServer.test.ts | 12 ++++++------ apps/server/src/wsServer.ts | 4 ++-- apps/server/tsup.config.ts | 2 +- bun.lock | 24 +++++++++++------------ package.json | 4 ++-- packages/contracts/package.json | 2 +- turbo.json | 16 +++++++-------- 34 files changed, 101 insertions(+), 99 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 9a41abaa16b23ca59b789ce30ae46c8691be3847..8edd09be99ca44e5806d4ad5e0e4ae4b8487b020 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,7 +1,7 @@ # CLAUDE.md ## Project Snapshot -CodeThing is a minimal web GUI for using code agents like Codex and Claude Code (coming soon). +T3 Code is a minimal web GUI for using code agents like Codex and Claude Code (coming soon). This repository is a VERY EARLY WIP. Proposing sweeping changes that improve long-term maintainability is encouraged. @@ -18,7 +18,7 @@ If a tradeoff is required, choose correctness and robustness over short-term con - `packages/contracts`: Shared Zod schemas and TypeScript contracts for provider events, WebSocket protocol, and model/session types. ## Codex App Server (Important) -CodeThing is currently Codex-first. The server starts `codex app-server` (JSON-RPC over stdio) per provider session, then streams structured events to the browser through WebSocket push messages. +T3 Code is currently Codex-first. The server starts `codex app-server` (JSON-RPC over stdio) per provider session, then streams structured events to the browser through WebSocket push messages. How we use it in this codebase: - Session startup/resume and turn lifecycle are brokered in `apps/server/src/codexAppServerManager.ts`. diff --git a/README.md b/README.md index dfb178da96d413e341e19cc3ad8e0f0b38b2b796..6f90c7ad7e30fce036e7ca61735a65206305f574 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ -# CodeThing +# T3 Code -CodeThing is a minimal web GUI for coding agents. Currently Codex-first, with Claude Code support coming soon. +T3 Code is a minimal web GUI for coding agents. Currently Codex-first, with Claude Code support coming soon. Run `npx t3` in any project directory to launch the web interface. Run `bun run dev:desktop` to launch the Electron desktop app in this monorepo. ## Architecture -CodeThing runs as a **Node.js WebSocket server** that wraps `codex app-server` (JSON-RPC over stdio) and serves a React web app. +T3 Code runs as a **Node.js WebSocket server** that wraps `codex app-server` (JSON-RPC over stdio) and serves a React web app. ``` ┌─────────────────────────────────┐ @@ -37,8 +37,8 @@ CodeThing runs as a **Node.js WebSocket server** that wraps `codex app-server` ( ## Codex prerequisites - Install Codex CLI so `codex` is on your PATH. -- Authenticate Codex before running CodeThing (for example via API key or ChatGPT auth supported by Codex). -- CodeThing starts the server via `codex app-server` per session. +- Authenticate Codex before running T3 Code (for example via API key or ChatGPT auth supported by Codex). +- T3 Code starts the server via `codex app-server` per session. ## Quick start @@ -69,7 +69,7 @@ npx t3 ## Runtime modes -CodeThing has a global runtime mode switch in the chat toolbar: +T3 Code has a global runtime mode switch in the chat toolbar: - **Full access** (default): starts sessions with `approvalPolicy: never` and `sandboxMode: danger-full-access`. - **Supervised**: starts sessions with `approvalPolicy: on-request` and `sandboxMode: workspace-write`, then prompts in-app for command/file approvals. @@ -81,7 +81,7 @@ The renderer communicates with the server via WebSocket using a simple JSON-RPC- - **Request/Response**: `{ id, method, params }` → `{ id, result }` or `{ id, error }` - **Push events**: `{ type: "push", channel, data }` for streaming provider events -Methods mirror the `NativeApi` interface defined in `@acme/contracts`: +Methods mirror the `NativeApi` interface defined in `@t3tools/contracts`: - `providers.startSession`, `providers.sendTurn`, `providers.interruptTurn` - `providers.respondToRequest`, `providers.stopSession`, `providers.listSessions` diff --git a/apps/desktop/package.json b/apps/desktop/package.json index 6553189210056e012a1350552fd38bd6dca7b571..7cfe513719291b415fdb4f7bfa871ce26323e586 100644 --- a/apps/desktop/package.json +++ b/apps/desktop/package.json @@ -1,5 +1,5 @@ { - "name": "@acme/desktop", + "name": "@t3tools/desktop", "version": "0.0.0", "private": true, "main": "dist-electron/main.js", diff --git a/apps/desktop/src/main.ts b/apps/desktop/src/main.ts index 0e91c9222455df817d85e96bf0ca9bfee540ba89..3cc451911b1325097a773ac59674fc03ae4aeb19 100644 --- a/apps/desktop/src/main.ts +++ b/apps/desktop/src/main.ts @@ -48,11 +48,11 @@ async function reserveLoopbackPort(): Promise { function backendEnv(): NodeJS.ProcessEnv { return { ...process.env, - CODETHING_MODE: "desktop", - CODETHING_NO_BROWSER: "1", - CODETHING_PORT: String(backendPort), - CODETHING_STATE_DIR: STATE_DIR, - CODETHING_AUTH_TOKEN: backendAuthToken, + T3CODE_MODE: "desktop", + T3CODE_NO_BROWSER: "1", + T3CODE_PORT: String(backendPort), + T3CODE_STATE_DIR: STATE_DIR, + T3CODE_AUTH_TOKEN: backendAuthToken, }; } @@ -186,7 +186,7 @@ async function bootstrap(): Promise { backendPort = await reserveLoopbackPort(); backendAuthToken = randomBytes(24).toString("hex"); backendWsUrl = `ws://127.0.0.1:${backendPort}/?token=${encodeURIComponent(backendAuthToken)}`; - process.env.CODETHING_DESKTOP_WS_URL = backendWsUrl; + process.env.T3CODE_DESKTOP_WS_URL = backendWsUrl; registerIpcHandlers(); startBackend(); diff --git a/apps/desktop/src/preload.ts b/apps/desktop/src/preload.ts index b7a6f93a2d537e4c4a88188934fdaffbe8527b48..6fac7916bb7ac33d1a3185b117b2b06307a3b6b0 100644 --- a/apps/desktop/src/preload.ts +++ b/apps/desktop/src/preload.ts @@ -1,7 +1,7 @@ import { contextBridge, ipcRenderer } from "electron"; const PICK_FOLDER_CHANNEL = "desktop:pick-folder"; -const wsUrl = process.env.CODETHING_DESKTOP_WS_URL ?? null; +const wsUrl = process.env.T3CODE_DESKTOP_WS_URL ?? null; contextBridge.exposeInMainWorld("desktopBridge", { getWsUrl: () => wsUrl, diff --git a/apps/desktop/tsup.config.ts b/apps/desktop/tsup.config.ts index 0d630c28055d078f141914070d3940a6b4a17443..f87ac594df3f9211f349cdeab4f53597a18eabd9 100644 --- a/apps/desktop/tsup.config.ts +++ b/apps/desktop/tsup.config.ts @@ -6,5 +6,5 @@ export default defineConfig({ outDir: "dist-electron", sourcemap: true, clean: true, - noExternal: ["@acme/contracts"], + noExternal: ["@t3tools/contracts"], }); diff --git a/apps/renderer/index.html b/apps/renderer/index.html index d8fd8a14ea6cc423d7077f037b58a13fd03c80da..fe848c5287a8cb351c508d4b9696309f0b1f8c86 100644 --- a/apps/renderer/index.html +++ b/apps/renderer/index.html @@ -3,7 +3,10 @@ - CodeThing + + + + T3 Code
diff --git a/apps/renderer/package.json b/apps/renderer/package.json index d5780ee5d54ccaf2c6aa532368f98c99ac201fb9..0c04817c874680ec04c52b3e1952c0add18d7275 100644 --- a/apps/renderer/package.json +++ b/apps/renderer/package.json @@ -1,5 +1,5 @@ { - "name": "@acme/renderer", + "name": "@t3tools/renderer", "version": "0.0.0", "private": true, "type": "module", @@ -11,7 +11,7 @@ "test": "vitest run --passWithNoTests" }, "dependencies": { - "@acme/contracts": "workspace:*", + "@t3tools/contracts": "workspace:*", "highlight.js": "^11.11.1", "lucide-react": "^0.563.0", "react": "^19.0.0", diff --git a/apps/renderer/src/App.tsx b/apps/renderer/src/App.tsx index 697ce60da960b8c5ed8cb9c5da52e53db56ef258..e12d563ab92d89ea62c4844ec0ecb8a527e80d4d 100644 --- a/apps/renderer/src/App.tsx +++ b/apps/renderer/src/App.tsx @@ -148,7 +148,7 @@ function Layout() { return (
-

Connecting to CodeThing server...

+

Connecting to T3 Code server...

); diff --git a/apps/renderer/src/components/ChatView.tsx b/apps/renderer/src/components/ChatView.tsx index 8adbc2fc50289cde6cdfdec013d4054f9e8e8c05..3c28c7da551713933e03debef0d306ea76c1c8b0 100644 --- a/apps/renderer/src/components/ChatView.tsx +++ b/apps/renderer/src/components/ChatView.tsx @@ -2,7 +2,7 @@ import { PROVIDER_SEND_TURN_MAX_INPUT_CHARS, type ProviderApprovalDecision, type ProviderEvent, -} from "@acme/contracts"; +} from "@t3tools/contracts"; import { type FormEvent, Fragment, @@ -13,7 +13,7 @@ import { useState, } from "react"; -import { EDITORS, type EditorId } from "@acme/contracts"; +import { EDITORS, type EditorId } from "@t3tools/contracts"; import { isElectron } from "../env"; import { buildBootstrapInput } from "../historyBootstrap"; import { @@ -50,7 +50,7 @@ function editorLabel(editor: (typeof EDITORS)[number]): string { return editor.command ? editor.label : FILE_MANAGER_LABEL; } -const LAST_EDITOR_KEY = "codething:last-editor"; +const LAST_EDITOR_KEY = "t3code:last-editor"; const MAX_VISIBLE_WORK_LOG_ENTRIES = 6; function workToneClass(tone: "thinking" | "tool" | "info" | "error"): string { diff --git a/apps/renderer/src/components/Sidebar.tsx b/apps/renderer/src/components/Sidebar.tsx index 2b4ea5f6cc47849874862503888ed07d4ba33c00..82568b4f9fbd623b3800feabee7094b5559fc9ea 100644 --- a/apps/renderer/src/components/Sidebar.tsx +++ b/apps/renderer/src/components/Sidebar.tsx @@ -202,12 +202,9 @@ export default function Sidebar() { {/* Drag region / traffic light space (Electron only) */} {isElectron &&
} {/* Branding */} -
-
- CT -
+
- CodeThing + T3 Code