From 759be649693bf0f266969c739712418bf6ca0245 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 29 Sep 2026 00:20:19 +0000 Subject: [PATCH 1/2] fix(upstream): show the Marcode name in text the sync added The upstream sync brought in new user-visible text that calls the app "T3 Code": the welcome wizard header and copy, the assistant message heading, settings and capture-shortcut copy, SnapShot setup and error messages, CLI update/service/uninstall output, mobile About and notification copy, provider compatibility and usage warnings, macOS permission prompts, and the native capture helpers' errors. These merged without a conflict, so they were invisible to the merge. Replace the product name with "Marcode" on those lines only. Internal identifiers stay upstream-shaped: the `t3` package and CLI name, `npx t3` hints, the `t3.json` file name, the T3CodeToolAvailability type, D-Bus and desktop-entry ids, and the GNOME extension's own name, which is defined in its bundled metadata and needs a version bump to change. Tests that pinned the old wording are updated. --- apps/desktop/scripts/electron-launcher.mjs | 4 ++-- apps/desktop/scripts/electron-launcher.test.mjs | 4 ++-- apps/desktop/src/electron/WindowsForeground.ts | 2 +- .../desktop/src/permissions/MacPermissionHelper.ts | 6 +++--- apps/desktop/src/snapShot/DesktopSnapShot.test.ts | 6 +++--- apps/desktop/src/snapShot/DesktopSnapShot.ts | 14 +++++++------- apps/desktop/src/snapShot/GnomeCaptureSetup.ts | 6 +++--- apps/desktop/src/snapShot/HyprlandSnapShot.ts | 2 +- apps/desktop/src/snapShot/KdeSnapShot.ts | 6 +++--- apps/desktop/src/snapShot/LinuxSnapShot.ts | 2 +- apps/desktop/src/snapShot/NiriCaptureShortcut.ts | 2 +- apps/desktop/src/snapShot/NiriSnapShot.ts | 2 +- .../src/snapShot/PortalCaptureShortcut.test.ts | 2 +- apps/desktop/src/snapShot/PortalCaptureShortcut.ts | 8 ++++---- apps/desktop/src/snapShot/SnapShotTransition.ts | 2 +- apps/desktop/src/snapShot/snapShot.ts | 2 +- apps/mobile/app.config.ts | 2 +- apps/mobile/src/Stack.tsx | 2 +- .../features/diagnostics/crash-log-model.test.ts | 4 ++-- .../src/features/diagnostics/crash-log-model.ts | 2 +- .../features/settings/SettingsAboutRouteScreen.tsx | 2 +- .../SettingsEnvironmentDetailRouteScreen.tsx | 6 +++--- .../settings/SettingsNotificationsRouteScreen.tsx | 4 ++-- .../src/features/showcase/showcaseAgentActivity.ts | 2 +- apps/server/src/cli/service.ts | 4 ++-- apps/server/src/cli/uninstall.ts | 2 +- apps/server/src/cli/update.ts | 6 +++--- apps/server/src/cli/updateProgress.test.ts | 2 +- apps/server/src/cli/updateProgress.ts | 2 +- apps/server/src/mcp/toolkits/pullRequests/tools.ts | 2 +- .../src/provider/CodexDeveloperInstructions.ts | 2 +- .../src/provider/Layers/cursorUsageLimits.ts | 2 +- apps/server/src/provider/providerCompatibility.ts | 6 +++--- .../src/provider/providerMaintenanceRunner.ts | 2 +- apps/server/src/usage/cursorUsageReader.test.ts | 2 +- apps/server/src/usage/cursorUsageReader.ts | 2 +- apps/web/src/components/ServerUpdateAction.tsx | 2 +- apps/web/src/components/chat/MessagesTimeline.tsx | 2 +- .../src/components/onboarding/WelcomeWizard.tsx | 10 +++++----- .../components/settings/BrowserImportWizard.tsx | 4 ++-- .../components/settings/CaptureShortcutConfig.tsx | 10 +++++----- .../settings/LocalEnvironmentSetting.tsx | 6 +++--- .../components/settings/NotificationSettings.tsx | 2 +- .../web/src/components/settings/SettingsPanels.tsx | 2 +- .../src/components/settings/SnapShotSettings.tsx | 4 ++-- .../components/settings/SnapShotSetupDialog.tsx | 4 ++-- native/hyprland-snap-shot/src/ipc.rs | 6 +++--- native/kde-snap-shot/src/main.rs | 2 +- .../client-runtime/src/connection/compatibility.ts | 2 +- packages/contracts/src/previewAutomation.ts | 2 +- packages/contracts/src/pullRequest.ts | 2 +- packages/contracts/src/t3ProjectFile.ts | 2 +- packages/shared/src/otelEnvironment.ts | 2 +- 53 files changed, 96 insertions(+), 96 deletions(-) diff --git a/apps/desktop/scripts/electron-launcher.mjs b/apps/desktop/scripts/electron-launcher.mjs index 35fb8ae686fb..2ed16f700eb5 100644 --- a/apps/desktop/scripts/electron-launcher.mjs +++ b/apps/desktop/scripts/electron-launcher.mjs @@ -270,8 +270,8 @@ export function resolveMacBundleInfoPlistStrings(executableName) { CFBundleExecutable: executableName, CFBundleIconFile: "icon.icns", NSScreenCaptureUsageDescription: - "T3 Code captures the active window when you use the snapshot shortcut.", - NSDocumentsFolderUsageDescription: "T3 Code reads project files you open in the desktop app.", + "Marcode captures the active window when you use the snapshot shortcut.", + NSDocumentsFolderUsageDescription: "Marcode reads project files you open in the desktop app.", }; } diff --git a/apps/desktop/scripts/electron-launcher.test.mjs b/apps/desktop/scripts/electron-launcher.test.mjs index 4b9780afc319..da706c0ef6b9 100644 --- a/apps/desktop/scripts/electron-launcher.test.mjs +++ b/apps/desktop/scripts/electron-launcher.test.mjs @@ -120,11 +120,11 @@ describe("electron development launcher", () => { assert.equal( values.NSScreenCaptureUsageDescription, - "T3 Code captures the active window when you use the snapshot shortcut.", + "Marcode captures the active window when you use the snapshot shortcut.", ); assert.equal( values.NSDocumentsFolderUsageDescription, - "T3 Code reads project files you open in the desktop app.", + "Marcode reads project files you open in the desktop app.", ); }); diff --git a/apps/desktop/src/electron/WindowsForeground.ts b/apps/desktop/src/electron/WindowsForeground.ts index b90081d20cde..08164deb1513 100644 --- a/apps/desktop/src/electron/WindowsForeground.ts +++ b/apps/desktop/src/electron/WindowsForeground.ts @@ -216,7 +216,7 @@ export function loadWindowsForegroundApi(): Promise { export async function activateWindowsForeground(handleBuffer: Buffer): Promise { const api = await loadWindowsForegroundApi(); if (activateWindowsForegroundWithApi(handleBuffer, api)) return; - throw new Error("Windows refused to activate the T3 Code window."); + throw new Error("Windows refused to activate the Marcode window."); } export async function isWindowsShellHostedForeground(): Promise { diff --git a/apps/desktop/src/permissions/MacPermissionHelper.ts b/apps/desktop/src/permissions/MacPermissionHelper.ts index c02b338c556b..a2cfa3bf597f 100644 --- a/apps/desktop/src/permissions/MacPermissionHelper.ts +++ b/apps/desktop/src/permissions/MacPermissionHelper.ts @@ -60,8 +60,8 @@ button:focus-visible { outline: 2px solid #007aff; outline-offset: 3px; } img { width: 32px; height: 32px; pointer-events: none; }
-
↑ Drag T3 Code into the list above
- +
↑ Drag Marcode into the list above
+
`; } @@ -95,7 +95,7 @@ export class MacPermissionHelper { const appIcon = iconPaths .map((iconPath) => Electron.nativeImage.createFromPath(iconPath)) .find((image) => !image.isEmpty()); - if (!appIcon) throw new Error("The packaged T3 Code icon is missing."); + if (!appIcon) throw new Error("The packaged Marcode icon is missing."); const icon = appIcon.resize({ width: 64, height: 64 }); const window = new Electron.BrowserWindow({ width: 560, diff --git a/apps/desktop/src/snapShot/DesktopSnapShot.test.ts b/apps/desktop/src/snapShot/DesktopSnapShot.test.ts index 205a72a55265..d603a6c67012 100644 --- a/apps/desktop/src/snapShot/DesktopSnapShot.test.ts +++ b/apps/desktop/src/snapShot/DesktopSnapShot.test.ts @@ -1630,7 +1630,7 @@ it.effect( const warning = logs.find( (message) => Array.isArray(message) && - message[0] === "The compositor could not activate T3 Code after the snapshot", + message[0] === "The compositor could not activate Marcode after the snapshot", ); assert.strictEqual(Array.isArray(warning) ? warning[1] : undefined, activationFailure); const pending = yield* decodePendingMetadata(saved); @@ -3161,7 +3161,7 @@ it.effect("flags revoked macOS permissions on read and re-registers once they re const revoked = yield* service.state; assert.equal( revoked.message, - "Allow Screen Recording in System Settings, then restart T3 Code.", + "Allow Screen Recording in System Settings, then restart Marcode.", ); assert.deepEqual(revoked.macPermissions, { screenRecording: false, accessibility: true }); @@ -3174,7 +3174,7 @@ it.effect("flags revoked macOS permissions on read and re-registers once they re const blocked = yield* service.state; assert.equal( blocked.message, - "Allow Screen Recording in System Settings, then restart T3 Code.", + "Allow Screen Recording in System Settings, then restart Marcode.", ); assert.isFalse(blocked.shortcutRegistered); diff --git a/apps/desktop/src/snapShot/DesktopSnapShot.ts b/apps/desktop/src/snapShot/DesktopSnapShot.ts index 7ee455756930..8f59521067e2 100644 --- a/apps/desktop/src/snapShot/DesktopSnapShot.ts +++ b/apps/desktop/src/snapShot/DesktopSnapShot.ts @@ -100,11 +100,11 @@ const FLASH_FRAME_INTERVAL_MS = 16; const FLASH_PEAK_OPACITY = 0.08; const MAC_SCREEN_CAPTURE_SETTINGS_URL = MAC_PERMISSION_SETTINGS_URLS["screen-recording"]; const MAC_SCREEN_CAPTURE_PERMISSION_MESSAGE = - "Allow Screen Recording in System Settings, then restart T3 Code."; + "Allow Screen Recording in System Settings, then restart Marcode."; const MAC_ACCESSIBILITY_PERMISSION_MESSAGE = - "Allow Accessibility in System Settings, then restart T3 Code."; + "Allow Accessibility in System Settings, then restart Marcode."; const MAC_BOTH_PERMISSIONS_MESSAGE = - "Allow Accessibility and Screen Recording in System Settings, then restart T3 Code."; + "Allow Accessibility and Screen Recording in System Settings, then restart Marcode."; const MAC_PERMISSION_MESSAGES = new Set([ MAC_SCREEN_CAPTURE_PERMISSION_MESSAGE, MAC_ACCESSIBILITY_PERMISSION_MESSAGE, @@ -896,7 +896,7 @@ export const make = Effect.gen(function* () { const capturedAt = yield* DateTime.now.pipe(Effect.map(DateTime.formatIso)); if (snapshot.linuxActivationFailure) { yield* Effect.logWarning( - "The compositor could not activate T3 Code after the snapshot", + "The compositor could not activate Marcode after the snapshot", snapshot.linuxActivationFailure.cause, ); } @@ -1016,7 +1016,7 @@ export const make = Effect.gen(function* () { if (mode === "portal" && niriSocketPath()) { return { available: false, - message: "Configure the capture shortcut in your Niri config, not in T3 Code.", + message: "Configure the capture shortcut in your Niri config, not in Marcode.", }; } if (mode === "portal" && isHyprlandCaptureSession()) { @@ -1166,7 +1166,7 @@ export const make = Effect.gen(function* () { const { startNiriCaptureShortcut } = await import("./NiriCaptureShortcut.ts"); return startNiriCaptureShortcut(linuxAppId, onCurrentShortcut, () => { void runPromise( - setShortcutFailure("The Niri capture endpoint disconnected. Restart T3 Code."), + setShortcutFailure("The Niri capture endpoint disconnected. Restart Marcode."), ).catch(() => undefined); }); }).pipe( @@ -1188,7 +1188,7 @@ export const make = Effect.gen(function* () { shortcutActionRegistered: registered, shortcutMessage: registered ? "Set up the shortcut to add it to your Niri config." - : "Could not start the Niri capture endpoint. Another T3 Code instance may be using it.", + : "Could not start the Niri capture endpoint. Another Marcode instance may be using it.", message: null, }); return; diff --git a/apps/desktop/src/snapShot/GnomeCaptureSetup.ts b/apps/desktop/src/snapShot/GnomeCaptureSetup.ts index 429a9986d94c..740ceac3af8c 100644 --- a/apps/desktop/src/snapShot/GnomeCaptureSetup.ts +++ b/apps/desktop/src/snapShot/GnomeCaptureSetup.ts @@ -56,7 +56,7 @@ export async function installGnomeCaptureBundle({ bundle, dataHome }: SetupPaths await NodeFSP.readFile(NodePath.join(target, "metadata.json"), "utf8"), ); if (installed.version > metadata.version) - throw new Error("A newer extension is installed. Update T3 Code instead of replacing it."); + throw new Error("A newer extension is installed. Update Marcode instead of replacing it."); } const staged = await NodeFSP.mkdtemp(NodePath.join(parent, ".t3-capture-install-")); let backup: string | undefined; @@ -184,7 +184,7 @@ export class GnomeCaptureSetup { return { status: "restart-required", message: - "Installed. Save your work, sign out of GNOME and sign back in, then return here to enable the extension. Restarting T3 Code alone is not enough.", + "Installed. Save your work, sign out of GNOME and sign back in, then return here to enable the extension. Restarting Marcode alone is not enough.", }; if ((installed?.version ?? info.version?.value ?? 0) < bundled.version) return { @@ -196,7 +196,7 @@ export class GnomeCaptureSetup { return { status: "extensions-disabled", message: - "GNOME has disabled user extensions. Turn on Extensions in the GNOME Extensions app, then check again. T3 Code will not enable your other extensions for you.", + "GNOME has disabled user extensions. Turn on Extensions in the GNOME Extensions app, then check again. Marcode will not enable your other extensions for you.", }; if (info.state?.value === 1) return { diff --git a/apps/desktop/src/snapShot/HyprlandSnapShot.ts b/apps/desktop/src/snapShot/HyprlandSnapShot.ts index 2fc90a410a37..832b99e79e62 100644 --- a/apps/desktop/src/snapShot/HyprlandSnapShot.ts +++ b/apps/desktop/src/snapShot/HyprlandSnapShot.ts @@ -95,7 +95,7 @@ export class HyprlandCaptureSetup { const bundle = await regularFile(this.paths.bundle); if (!bundle) throw new Error( - "The Hyprland capture helper is missing from this build. Update or reinstall T3 Code.", + "The Hyprland capture helper is missing from this build. Update or reinstall Marcode.", ); if (!installed.equals(bundle)) return { diff --git a/apps/desktop/src/snapShot/KdeSnapShot.ts b/apps/desktop/src/snapShot/KdeSnapShot.ts index 9b8c8bb90dc0..097b5a2162f3 100644 --- a/apps/desktop/src/snapShot/KdeSnapShot.ts +++ b/apps/desktop/src/snapShot/KdeSnapShot.ts @@ -33,7 +33,7 @@ export function kdeCaptureDesktopEntry(executable: string): string { return [ "[Desktop Entry]", "Type=Application", - "Name=T3 Code SnapShots", + "Name=Marcode SnapShots", "NoDisplay=true", `Exec=${escapeDesktopEntryExecArgument(executable)} check`, // KService reads this custom property as a KConfig list, not an XDG ';' list. @@ -116,7 +116,7 @@ export class KdeCaptureSetup { if (!bundle) return { status: "error", - message: "The capture helper is missing from this build. Update or reinstall T3 Code.", + message: "The capture helper is missing from this build. Update or reinstall Marcode.", }; if (!installed.equals(bundle) || entry.toString() !== kdeCaptureDesktopEntry(executable)) return { @@ -162,7 +162,7 @@ export class KdeCaptureSetup { const bundle = await regularFile(this.paths.bundle); if (!bundle) throw new Error( - "The capture helper is missing from this build. Update or reinstall T3 Code.", + "The capture helper is missing from this build. Update or reinstall Marcode.", ); await NodeFSP.mkdir(directory, { recursive: true }); await NodeFSP.mkdir(NodePath.dirname(desktop), { recursive: true }); diff --git a/apps/desktop/src/snapShot/LinuxSnapShot.ts b/apps/desktop/src/snapShot/LinuxSnapShot.ts index dffd2a71f36c..6d8ce66eee65 100644 --- a/apps/desktop/src/snapShot/LinuxSnapShot.ts +++ b/apps/desktop/src/snapShot/LinuxSnapShot.ts @@ -306,7 +306,7 @@ export class LinuxCaptureConnection { this.bus.requestName(`${appId}.SnapShot`, NameFlag.DO_NOT_QUEUE), ); if (result !== RequestNameReply.PRIMARY_OWNER) { - throw new Error("Another T3 Code instance is capturing a window. Try again."); + throw new Error("Another Marcode instance is capturing a window. Try again."); } const withFeedback = this.feedbackAvailable && options !== undefined; const reply = await this.call({ diff --git a/apps/desktop/src/snapShot/NiriCaptureShortcut.ts b/apps/desktop/src/snapShot/NiriCaptureShortcut.ts index bae9c2b962af..c0cf67668870 100644 --- a/apps/desktop/src/snapShot/NiriCaptureShortcut.ts +++ b/apps/desktop/src/snapShot/NiriCaptureShortcut.ts @@ -55,7 +55,7 @@ export async function startNiriCaptureShortcut( }), ]); if (result !== RequestNameReply.PRIMARY_OWNER) - throw new Error("Another T3 Code instance already owns the capture shortcut."); + throw new Error("Another Marcode instance already owns the capture shortcut."); return close; } catch (error) { close(); diff --git a/apps/desktop/src/snapShot/NiriSnapShot.ts b/apps/desktop/src/snapShot/NiriSnapShot.ts index 87133aded548..b40b5d5646e1 100644 --- a/apps/desktop/src/snapShot/NiriSnapShot.ts +++ b/apps/desktop/src/snapShot/NiriSnapShot.ts @@ -175,7 +175,7 @@ async function activateNiriWindow(path: string, title: string, signal: AbortSign (window) => window.pid === process.pid && window.title === title, ); if (matches.length > 1) - throw new Error("More than one T3 Code window matches the capture destination."); + throw new Error("More than one Marcode window matches the capture destination."); return matches[0]; }); connection.send("EventStream"); diff --git a/apps/desktop/src/snapShot/PortalCaptureShortcut.test.ts b/apps/desktop/src/snapShot/PortalCaptureShortcut.test.ts index eb20a4a041ee..adeb9074db59 100644 --- a/apps/desktop/src/snapShot/PortalCaptureShortcut.test.ts +++ b/apps/desktop/src/snapShot/PortalCaptureShortcut.test.ts @@ -318,7 +318,7 @@ it("guides users to manual desktop settings when the portal cannot open them", a expect(client.hasSession).toBe(true); expect(client.state.shortcutCanRetry).toBe(false); expect(client.state.shortcutMessage).toBe( - "Shortcut permission wasn't granted. Allow T3 Code in your desktop's shortcut settings.", + "Shortcut permission wasn't granted. Allow Marcode in your desktop's shortcut settings.", ); await expect(client.configure()).rejects.toThrow("Open your desktop's shortcut settings"); expect(bus.calls.some((message) => message.member === "ConfigureShortcuts")).toBe(false); diff --git a/apps/desktop/src/snapShot/PortalCaptureShortcut.ts b/apps/desktop/src/snapShot/PortalCaptureShortcut.ts index 7487e2f582ba..09b06a370053 100644 --- a/apps/desktop/src/snapShot/PortalCaptureShortcut.ts +++ b/apps/desktop/src/snapShot/PortalCaptureShortcut.ts @@ -135,7 +135,7 @@ export class PortalCaptureShortcut { throw new Error("Change the capture binding in your Hyprland config, then save it."); if (!this.hasSession || this.version < 2) throw new Error( - "Open your desktop's shortcut settings and allow T3 Code's capture shortcut.", + "Open your desktop's shortcut settings and allow Marcode's capture shortcut.", ); await this.call({ destination: this.owner, @@ -164,7 +164,7 @@ export class PortalCaptureShortcut { // This failed session is closing, so retry can register a fresh one. shortcutCanRetry: !this.managedByHyprland, shortcutMessage: this.managedByHyprland - ? "Couldn't connect to Hyprland shortcuts. Make sure xdg-desktop-portal-hyprland is running, then restart T3 Code." + ? "Couldn't connect to Hyprland shortcuts. Make sure xdg-desktop-portal-hyprland is running, then restart Marcode." : error instanceof Error ? error.message : "Could not register the capture shortcut.", @@ -304,7 +304,7 @@ export class PortalCaptureShortcut { shortcutMessage: this.version >= 2 ? "Shortcut permission wasn't granted. Open shortcut permissions to allow it." - : "Shortcut permission wasn't granted. Allow T3 Code in your desktop's shortcut settings.", + : "Shortcut permission wasn't granted. Allow Marcode in your desktop's shortcut settings.", }); return undefined; } @@ -327,7 +327,7 @@ export class PortalCaptureShortcut { shortcutPending: false, shortcutMessage: shortcut ? "Managed by Hyprland. Add the binding to your config and save it." - : "Hyprland did not register the capture action. Check that xdg-desktop-portal-hyprland is running, then restart T3 Code.", + : "Hyprland did not register the capture action. Check that xdg-desktop-portal-hyprland is running, then restart Marcode.", }); return; } diff --git a/apps/desktop/src/snapShot/SnapShotTransition.ts b/apps/desktop/src/snapShot/SnapShotTransition.ts index 01532d0e26c4..30409650bbfc 100644 --- a/apps/desktop/src/snapShot/SnapShotTransition.ts +++ b/apps/desktop/src/snapShot/SnapShotTransition.ts @@ -114,7 +114,7 @@ function createWindow( resizable: false, show: false, skipTaskbar: true, - title: "T3 Code Snapshot Animation", + title: "Marcode Snapshot Animation", transparent: true, webPreferences: { backgroundThrottling: false, diff --git a/apps/desktop/src/snapShot/snapShot.ts b/apps/desktop/src/snapShot/snapShot.ts index 2cfa406d1781..fab7137d22f8 100644 --- a/apps/desktop/src/snapShot/snapShot.ts +++ b/apps/desktop/src/snapShot/snapShot.ts @@ -447,7 +447,7 @@ export function hideAndWaitForBlur(window: { return new Promise((resolve, reject) => { const timeout = setTimeout(() => { window.removeListener("blur", onBlur); - reject(new Error("Timed out waiting for T3 Code to lose focus.")); + reject(new Error("Timed out waiting for Marcode to lose focus.")); }, WINDOW_BLUR_TIMEOUT_MS); const onBlur = () => { clearTimeout(timeout); diff --git a/apps/mobile/app.config.ts b/apps/mobile/app.config.ts index 740f9914b799..2fc9a6175836 100644 --- a/apps/mobile/app.config.ts +++ b/apps/mobile/app.config.ts @@ -134,7 +134,7 @@ const widgetsPlugin: NonNullable[number] = [ { name: "SubscriptionUsage", displayName: "Subscription usage", - description: "Subscription quotas from your connected T3 Code environments.", + description: "Subscription quotas from your connected Marcode environments.", configuration: { title: "Subscription usage", description: diff --git a/apps/mobile/src/Stack.tsx b/apps/mobile/src/Stack.tsx index 28c811f5ec1a..9e5c6ad76e3b 100644 --- a/apps/mobile/src/Stack.tsx +++ b/apps/mobile/src/Stack.tsx @@ -232,7 +232,7 @@ const SettingsContentStack = createNativeStackNavigator({ SettingsAbout: createNativeStackScreen({ screen: SettingsAboutRouteScreen, linking: "about", - options: { title: "About T3 Code" }, + options: { title: "About Marcode" }, }), SettingsEnvironmentNew: createNativeStackScreen({ screen: ConnectionsNewRouteScreen, diff --git a/apps/mobile/src/features/diagnostics/crash-log-model.test.ts b/apps/mobile/src/features/diagnostics/crash-log-model.test.ts index 761d9a49ed96..c29d475986df 100644 --- a/apps/mobile/src/features/diagnostics/crash-log-model.test.ts +++ b/apps/mobile/src/features/diagnostics/crash-log-model.test.ts @@ -61,14 +61,14 @@ describe("formatStartupCrashReport", () => { version: "1.1.1", build: "56", }); - expect(report.startsWith("T3 Code 1.1.1 (56)\n")).toBe(true); + expect(report.startsWith("Marcode 1.1.1 (56)\n")).toBe(true); expect(report).toContain("2026-09-13T05:35:52.000Z"); expect(report).toContain("at NewTaskFlowProvider"); }); it("says so when nothing was recorded", () => { expect(formatStartupCrashReport([], { version: "1.1.1", build: "56" })).toBe( - "T3 Code 1.1.1 (56)\nNo startup crashes recorded.", + "Marcode 1.1.1 (56)\nNo startup crashes recorded.", ); }); }); diff --git a/apps/mobile/src/features/diagnostics/crash-log-model.ts b/apps/mobile/src/features/diagnostics/crash-log-model.ts index 4c222a1f0be9..ea370bd72e28 100644 --- a/apps/mobile/src/features/diagnostics/crash-log-model.ts +++ b/apps/mobile/src/features/diagnostics/crash-log-model.ts @@ -72,7 +72,7 @@ export function formatStartupCrashReport( records: ReadonlyArray, app: { readonly version: string; readonly build: string }, ): string { - const header = `T3 Code ${app.version} (${app.build})`; + const header = `Marcode ${app.version} (${app.build})`; if (records.length === 0) return `${header}\nNo startup crashes recorded.`; return [ header, diff --git a/apps/mobile/src/features/settings/SettingsAboutRouteScreen.tsx b/apps/mobile/src/features/settings/SettingsAboutRouteScreen.tsx index bbb70b236bea..2fa5d3c048f6 100644 --- a/apps/mobile/src/features/settings/SettingsAboutRouteScreen.tsx +++ b/apps/mobile/src/features/settings/SettingsAboutRouteScreen.tsx @@ -20,7 +20,7 @@ export function SettingsAboutRouteScreen() { const insets = useSafeAreaInsets(); return ( - + {notice} : null} {config ? ( <> - + Version {version} {running ? ( @@ -213,7 +213,7 @@ function EnvironmentDetail({ environmentId }: { readonly environmentId: Environm {capabilities?.serverSelfUpdate === "desktop-managed" ? "Update the desktop app on this machine." - : "Update and restart T3 Code on this machine."} + : "Update and restart Marcode on this machine."} ) : null} diff --git a/apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx b/apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx index 8809c429c824..39ec31bafcf2 100644 --- a/apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx +++ b/apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx @@ -334,7 +334,7 @@ function ConfiguredSettingsNotificationsRouteScreen() { Alert.alert( "Disable notifications", - "Open system Settings to disable notifications for T3 Code.", + "Open system Settings to disable notifications for Marcode.", [ { text: "Cancel", style: "cancel" }, { text: "Open Settings", onPress: () => void Linking.openSettings() }, @@ -486,7 +486,7 @@ function ConfiguredSettingsNotificationsRouteScreen() { void openAndroidLiveUpdateSettings().catch(() => { Alert.alert( "Couldn't open Settings", - "Open Android Settings, select T3 Code, then enable Live Updates in Notifications.", + "Open Android Settings, select Marcode, then enable Live Updates in Notifications.", ); }); }} diff --git a/apps/mobile/src/features/showcase/showcaseAgentActivity.ts b/apps/mobile/src/features/showcase/showcaseAgentActivity.ts index 736c672dff0c..9e6554cbcc97 100644 --- a/apps/mobile/src/features/showcase/showcaseAgentActivity.ts +++ b/apps/mobile/src/features/showcase/showcaseAgentActivity.ts @@ -74,7 +74,7 @@ export function buildShowcaseAgentActivity( }); } return { - title: "T3 Code", + title: "Marcode", subtitle: "Agent work in progress", activeCount: rows.filter((row) => ACTIVE_PHASES.has(row.phase)).length, updatedAt: new Date(now).toISOString(), diff --git a/apps/server/src/cli/service.ts b/apps/server/src/cli/service.ts index 06b02acf1676..69911f7c382d 100644 --- a/apps/server/src/cli/service.ts +++ b/apps/server/src/cli/service.ts @@ -177,8 +177,8 @@ const serviceRestartCommand = Command.make("restart", projectLocationFlags).pipe const restarted = yield* service.restart; yield* Console.log( restarted - ? `Restarted the T3 Code service${status.installedVersion === undefined ? "" : ` on t3@${status.installedVersion}`}.` - : "T3 Code service is not installed.", + ? `Restarted the Marcode service${status.installedVersion === undefined ? "" : ` on t3@${status.installedVersion}`}.` + : "Marcode service is not installed.", ); }), ), diff --git a/apps/server/src/cli/uninstall.ts b/apps/server/src/cli/uninstall.ts index a59d22ffd3b9..edddbb183c4f 100644 --- a/apps/server/src/cli/uninstall.ts +++ b/apps/server/src/cli/uninstall.ts @@ -218,5 +218,5 @@ const runUninstall = Effect.fn("cli.uninstall.run")(function* (input: { } } yield* Console.log(""); - yield* Console.log("t3 is uninstalled. Thanks for trying T3 Code."); + yield* Console.log("t3 is uninstalled. Thanks for trying Marcode."); }); diff --git a/apps/server/src/cli/update.ts b/apps/server/src/cli/update.ts index 6009aa248a99..59d67fc093a5 100644 --- a/apps/server/src/cli/update.ts +++ b/apps/server/src/cli/update.ts @@ -461,8 +461,8 @@ const runUpdate = Effect.fn("cli.update.run")(function* (input: { : executableCurrent ? `Updating the background service ${serviceVersion ?? "(unknown version)"} -> ${targetVersion} (${targetChannel}).` : alreadyOnDisk - ? "Switching T3 Code" - : "Updating T3 Code", + ? "Switching Marcode" + : "Updating Marcode", executableCurrent ? "" : `${currentVersion} → ${targetVersion}${targetChannel === "stable" ? "" : ` (${targetChannel})`}`, @@ -579,7 +579,7 @@ const runUpdate = Effect.fn("cli.update.run")(function* (input: { serviceUpdated = restartService; } - progress.success(`Installed T3 Code ${targetVersion}`); + progress.success(`Installed Marcode ${targetVersion}`); if (Option.isSome(repointed)) { yield* Console.log(" Run t3 to get started.\n"); } else { diff --git a/apps/server/src/cli/updateProgress.test.ts b/apps/server/src/cli/updateProgress.test.ts index 07790af41b98..51ab3c9a4e63 100644 --- a/apps/server/src/cli/updateProgress.test.ts +++ b/apps/server/src/cli/updateProgress.test.ts @@ -32,7 +32,7 @@ it("keeps redirected output readable without per-chunk updates or escapes", () = output.report({ stage: "validate" }); output.finish(); expect(output.text()).toBe( - " Downloading...\n Verifying the download...\n Extracting T3 Code...\n Checking the new executable...\n", + " Downloading...\n Verifying the download...\n Extracting Marcode...\n Checking the new executable...\n", ); }); diff --git a/apps/server/src/cli/updateProgress.ts b/apps/server/src/cli/updateProgress.ts index e7f209b4e4c4..de0008f8b42e 100644 --- a/apps/server/src/cli/updateProgress.ts +++ b/apps/server/src/cli/updateProgress.ts @@ -40,7 +40,7 @@ export function createUpdateProgress( const labels = { download: "Downloading...", verify: "Verifying the download...", - extract: "Extracting T3 Code...", + extract: "Extracting Marcode...", validate: "Checking the new executable...", cached: "Using the downloaded release...", }; diff --git a/apps/server/src/mcp/toolkits/pullRequests/tools.ts b/apps/server/src/mcp/toolkits/pullRequests/tools.ts index e0ab5561a3a1..7e83f3e72a67 100644 --- a/apps/server/src/mcp/toolkits/pullRequests/tools.ts +++ b/apps/server/src/mcp/toolkits/pullRequests/tools.ts @@ -186,7 +186,7 @@ export const ListThreadPullRequestsResult = Schema.Struct({ export type ListThreadPullRequestsResult = typeof ListThreadPullRequestsResult.Type; const LinkPullRequestTool = Tool.make("link_pull_request", { - description: `${REGISTER_EVERY_PR} Links a pull request to this thread so T3 Code tracks it, shows its status beside the thread, and settles the thread when it merges. Pass the URL, or repository plus number. Linking an already-linked pull request succeeds with alreadyLinked=true.`, + description: `${REGISTER_EVERY_PR} Links a pull request to this thread so Marcode tracks it, shows its status beside the thread, and settles the thread when it merges. Pass the URL, or repository plus number. Linking an already-linked pull request succeeds with alreadyLinked=true.`, parameters: PullRequestTargetInput, success: LinkPullRequestResult, failure: PullRequestToolError, diff --git a/apps/server/src/provider/CodexDeveloperInstructions.ts b/apps/server/src/provider/CodexDeveloperInstructions.ts index 62b7de4a3d91..8ec71c1089db 100644 --- a/apps/server/src/provider/CodexDeveloperInstructions.ts +++ b/apps/server/src/provider/CodexDeveloperInstructions.ts @@ -12,7 +12,7 @@ For browser work, first call \`preview_status\`. If no automation-capable previe Do not switch to global browser skills, Chrome, Node REPL browser automation, standalone Playwright, or agent-browser merely because the preview is initially closed or a first call fails. Use an alternative browser system only when the T3 preview tools are absent, the user explicitly requests another browser, or \`preview_open\` returns an explicit unsupported/unavailable error. A failed T3 preview tool call should be inspected and retried with corrected arguments when the error is actionable.`; -const T3_CODE_DEVICE_TOOL_INSTRUCTIONS = `## T3 Code devices +const T3_CODE_DEVICE_TOOL_INSTRUCTIONS = `## Marcode devices The \`t3-code\` MCP server also exposes \`device_*\` tools for iOS Simulators and Android Emulators on this environment. For mobile verification, call \`device_list\`, then \`device_open\` so the user can watch the device in their Device panel; its result explains how to drive the device. Driving happens through the \`agent-device\` CLI, which is on PATH. Keep the host config and session flags returned by \`device_open\` on every command so concurrent devices stay independent: prefer \`agent-device snapshot -i\` refs over coordinates, and use \`device_screenshot\` when you need to see the screen. Prefer these tools and \`agent-device\` for opening and driving devices. Platform tools such as \`xcrun simctl\` and \`adb\` remain available for anything they do not cover, such as builds, logs, or port forwarding. If \`device_list\` reports a platform as unavailable, say so.`; diff --git a/apps/server/src/provider/Layers/cursorUsageLimits.ts b/apps/server/src/provider/Layers/cursorUsageLimits.ts index e0611e0c50ab..062bbcaabd9d 100644 --- a/apps/server/src/provider/Layers/cursorUsageLimits.ts +++ b/apps/server/src/provider/Layers/cursorUsageLimits.ts @@ -93,7 +93,7 @@ export const readCursorUsageLimits = Effect.fn("readCursorUsageLimits")(function return makeUnavailableUsageLimits({ checkedAt, reason: "unsupported", - message: "Enable Cursor account usage in T3 Code to read its Keychain login.", + message: "Enable Cursor account usage in Marcode to read its Keychain login.", }); } if (endpoint !== DEFAULT_CURSOR_API_ENDPOINT) { diff --git a/apps/server/src/provider/providerCompatibility.ts b/apps/server/src/provider/providerCompatibility.ts index b4ce66f87603..9bf9d298ea09 100644 --- a/apps/server/src/provider/providerCompatibility.ts +++ b/apps/server/src/provider/providerCompatibility.ts @@ -82,11 +82,11 @@ export function resolveProviderCompatibility( : "unknown"; const message = status === "broken" - ? "This provider version is known to be incompatible with this T3 Code release." + ? "This provider version is known to be incompatible with this Marcode release." : status === "unsupported" - ? "This provider version is outside the supported range for this T3 Code release." + ? "This provider version is outside the supported range for this Marcode release." : status === "graceful" - ? "This provider version has limited compatibility with this T3 Code release." + ? "This provider version has limited compatibility with this Marcode release." : null; const recommendedVersion = policy.recommendedVersion ?? null; const recommendedRange = policy.recommendedRange ?? null; diff --git a/apps/server/src/provider/providerMaintenanceRunner.ts b/apps/server/src/provider/providerMaintenanceRunner.ts index b3a1f8c79923..da84ca9c64de 100644 --- a/apps/server/src/provider/providerMaintenanceRunner.ts +++ b/apps/server/src/provider/providerMaintenanceRunner.ts @@ -416,7 +416,7 @@ export const make = Effect.fn("ProviderMaintenanceRunner.make")(function* () { message: targetVersion !== undefined ? "This version is no longer recommended or this installer cannot install a specific version. Refresh provider settings." - : "The latest provider version is incompatible with this T3 Code release. Review provider settings.", + : "The latest provider version is incompatible with this Marcode release. Review provider settings.", }), ); } diff --git a/apps/server/src/usage/cursorUsageReader.test.ts b/apps/server/src/usage/cursorUsageReader.test.ts index 4bfa647c0aff..9887ebf97a63 100644 --- a/apps/server/src/usage/cursorUsageReader.test.ts +++ b/apps/server/src/usage/cursorUsageReader.test.ts @@ -16,7 +16,7 @@ describe("readCursorAccountUsage", () => { accountKey: null, records: [], missing: false, - error: "Allow Keychain access on the Mac running T3 Code, then refresh.", + error: "Allow Keychain access on the Mac running Marcode, then refresh.", }); }); }); diff --git a/apps/server/src/usage/cursorUsageReader.ts b/apps/server/src/usage/cursorUsageReader.ts index 573506d818a1..211dbcd5b498 100644 --- a/apps/server/src/usage/cursorUsageReader.ts +++ b/apps/server/src/usage/cursorUsageReader.ts @@ -90,7 +90,7 @@ export async function readCursorAccountUsage( : typeof credentialSource === "string" ? "Cursor credentials could not be read." : cause instanceof CursorKeychainTimeoutError - ? "Allow Keychain access on the Mac running T3 Code, then refresh." + ? "Allow Keychain access on the Mac running Marcode, then refresh." : "Cursor Keychain credentials could not be read.", }; } diff --git a/apps/web/src/components/ServerUpdateAction.tsx b/apps/web/src/components/ServerUpdateAction.tsx index b59a4b4ca43b..e2bc9a1b328f 100644 --- a/apps/web/src/components/ServerUpdateAction.tsx +++ b/apps/web/src/components/ServerUpdateAction.tsx @@ -121,7 +121,7 @@ export function ServerUpdatesAction({ if (desktopTargets.length > 0) { const confirmed = (await requestConfirmDialog( - `Update the T3 Code desktop apps on ${desktopTargets.map((target) => target.serverLabel).join(", ")}? They will close and relaunch on those machines.`, + `Update the Marcode desktop apps on ${desktopTargets.map((target) => target.serverLabel).join(", ")}? They will close and relaunch on those machines.`, )) ?? true; if (!confirmed) return; } diff --git a/apps/web/src/components/chat/MessagesTimeline.tsx b/apps/web/src/components/chat/MessagesTimeline.tsx index 1dd9268d9759..ac810e3e1f33 100644 --- a/apps/web/src/components/chat/MessagesTimeline.tsx +++ b/apps/web/src/components/chat/MessagesTimeline.tsx @@ -2385,7 +2385,7 @@ function AssistantTimelineRow({ row }: { row: Extract
- T3 Code + Marcode document.getElementById("onboarding-pairing-url") ?? true} > +
- Code + Marcode
} @@ -486,7 +486,7 @@ function ConnectAccountOption({

- Keep T3 Code running. Select the computers you want to set up above. + Keep Marcode running. Select the computers you want to set up above.

@@ -604,7 +604,7 @@ function PairingForm({

- Start T3 Code first, or run npx t3 serve. Add{" "} + Start Marcode first, or run npx t3 serve. Add{" "} --tailscale to use your tailnet.

diff --git a/apps/web/src/components/settings/BrowserImportWizard.tsx b/apps/web/src/components/settings/BrowserImportWizard.tsx index 5750b3d7c77b..17534fbb41cf 100644 --- a/apps/web/src/components/settings/BrowserImportWizard.tsx +++ b/apps/web/src/components/settings/BrowserImportWizard.tsx @@ -319,8 +319,8 @@ function FullDiskAccessStep({ {!permission.isReady(["fullDiskAccess"]) ? (

{stillRequired - ? "Access is still required. Quit and reopen T3 Code if you just allowed it, then retry the import." - : "If access doesn't update after you allow it, quit and reopen T3 Code, then retry the import."} + ? "Access is still required. Quit and reopen Marcode if you just allowed it, then retry the import." + : "If access doesn't update after you allow it, quit and reopen Marcode, then retry the import."}

) : null} diff --git a/apps/web/src/components/settings/CaptureShortcutConfig.tsx b/apps/web/src/components/settings/CaptureShortcutConfig.tsx index 892bf13c7c19..7aca12511de0 100644 --- a/apps/web/src/components/settings/CaptureShortcutConfig.tsx +++ b/apps/web/src/components/settings/CaptureShortcutConfig.tsx @@ -217,7 +217,7 @@ export function CaptureShortcutConfig({ ) : ( <>

- Allow T3 Code to read your desktop settings. You'll review any changes here before + Allow Marcode to read your desktop settings. You'll review any changes here before saving.

- Turn capture off in T3 Code to stop it. Remove the shortcut from {desktop} to free up + Turn capture off in Marcode to stop it. Remove the shortcut from {desktop} to free up the keys.

{state.shortcutActionRegistered === false ? ( diff --git a/apps/web/src/components/settings/LocalEnvironmentSetting.tsx b/apps/web/src/components/settings/LocalEnvironmentSetting.tsx index d8fb2e894b34..04df33c5261f 100644 --- a/apps/web/src/components/settings/LocalEnvironmentSetting.tsx +++ b/apps/web/src/components/settings/LocalEnvironmentSetting.tsx @@ -43,7 +43,7 @@ export function LocalEnvironmentSetting() { {...searchableSetting("local-environment")} description={ enabled - ? "Run agents on this computer. Turn off to use T3 Code only with remote environments." + ? "Run agents on this computer. Turn off to use Marcode only with remote environments." : "Turned off. Agents only run in remote environments." } control={ @@ -70,8 +70,8 @@ export function LocalEnvironmentSetting() { {enabled - ? "T3 Code will restart without running a server on this computer. Any agents and terminals running here will stop, and other devices will no longer be able to connect to this computer. Your projects, history, and remote environments are unaffected." - : "T3 Code will restart and start running a server on this computer again."} + ? "Marcode will restart without running a server on this computer. Any agents and terminals running here will stop, and other devices will no longer be able to connect to this computer. Your projects, history, and remote environments are unaffected." + : "Marcode will restart and start running a server on this computer again."} {error ?

{error}

: null} diff --git a/apps/web/src/components/settings/NotificationSettings.tsx b/apps/web/src/components/settings/NotificationSettings.tsx index 5af5f0a85233..5fc749aad3a0 100644 --- a/apps/web/src/components/settings/NotificationSettings.tsx +++ b/apps/web/src/components/settings/NotificationSettings.tsx @@ -22,7 +22,7 @@ export function NotificationSettings() { {...searchableSetting("thread-notifications")} description={ permissionMessage ?? - "System alerts when a thread finishes, fails, or needs input or approval. Applies to this device while T3 Code is open." + "System alerts when a thread finishes, fails, or needs input or approval. Applies to this device while Marcode is open." } control={