diff --git a/ui/src/App.tsx b/ui/src/App.tsx index f240defc..371bde42 100644 --- a/ui/src/App.tsx +++ b/ui/src/App.tsx @@ -1,4 +1,5 @@ import { Navigate, Outlet, Route, Routes, useLocation, useParams } from "@/lib/router"; +import { VOCAB } from "@paperclipai/branding"; import { useQuery } from "@tanstack/react-query"; import { Button } from "@/components/ui/button"; import { Layout } from "./components/Layout"; @@ -56,8 +57,8 @@ function BootstrapPendingPage({ hasActiveInvite = false }: { hasActiveInvite?: b
{hasActiveInvite - ? "No instance admin exists yet. A bootstrap invite is already active. Check your Paperclip startup logs for the first admin invite URL, or run this command to rotate it:" - : "No instance admin exists yet. Run this command in your Paperclip environment to generate the first admin invite URL:"} + ? `No instance admin exists yet. A bootstrap invite is already active. Check your ${VOCAB.appName} startup logs for the first admin invite URL, or run this command to rotate it:` + : `No instance admin exists yet. Run this command in your ${VOCAB.appName} environment to generate the first admin invite URL:`}
{`pnpm paperclipai auth bootstrap-ceo`}
diff --git a/ui/src/pages/InviteLanding.tsx b/ui/src/pages/InviteLanding.tsx
index 6d412aa8..fb60dec9 100644
--- a/ui/src/pages/InviteLanding.tsx
+++ b/ui/src/pages/InviteLanding.tsx
@@ -1,4 +1,5 @@
import { useEffect, useMemo, useState } from "react";
+import { VOCAB } from "@paperclipai/branding";
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { Link, useParams } from "@/lib/router";
import { accessApi } from "../api/access";
@@ -193,7 +194,7 @@ export function InviteLandingPage() {
)}
{(onboardingSkillUrl || onboardingSkillPath || onboardingInstallPath) && (
- Paperclip skill bootstrap
+ {VOCAB.appName} skill bootstrap
{onboardingSkillUrl && GET {onboardingSkillUrl}
}
{!onboardingSkillUrl && onboardingSkillPath && GET {onboardingSkillPath}
}
{onboardingInstallPath && Install to {onboardingInstallPath}
}
@@ -229,10 +230,10 @@ export function InviteLandingPage() {
{invite.inviteType === "bootstrap_ceo"
- ? "Bootstrap your Paperclip instance"
+ ? `Bootstrap your ${VOCAB.appName} instance`
: companyName
? `Join ${companyName}`
- : "Join this Paperclip company"}
+ : `Join this ${VOCAB.appName} ${VOCAB.company.toLowerCase()}`}
{invite.inviteType !== "bootstrap_ceo" && companyName
diff --git a/ui/src/pages/IssueDetail.tsx b/ui/src/pages/IssueDetail.tsx
index b9471c43..0ab8d88b 100644
--- a/ui/src/pages/IssueDetail.tsx
+++ b/ui/src/pages/IssueDetail.tsx
@@ -1,4 +1,5 @@
import { useEffect, useMemo, useRef, useState, type ChangeEvent, type DragEvent } from "react";
+import { VOCAB } from "@paperclipai/branding";
import { pickTextColorForPillBg } from "@/lib/color-contrast";
import { Link, useLocation, useNavigate, useParams } from "@/lib/router";
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
@@ -204,7 +205,7 @@ function ActorIdentity({ evt, agentMap }: { evt: ActivityEvent; agentMap: Map ;
}
if (evt.actorType === "system") return ;
- if (evt.actorType === "user") return ;
+ if (evt.actorType === "user") return ;
return ;
}
diff --git a/ui/src/pages/NewAgent.tsx b/ui/src/pages/NewAgent.tsx
index 69415db6..fecc14be 100644
--- a/ui/src/pages/NewAgent.tsx
+++ b/ui/src/pages/NewAgent.tsx
@@ -1,4 +1,5 @@
import { useState, useEffect } from "react";
+import { VOCAB } from "@paperclipai/branding";
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
import { useNavigate, useSearchParams } from "@/lib/router";
import { useCompany } from "../context/CompanyContext";
@@ -112,8 +113,8 @@ export function NewAgent() {
useEffect(() => {
if (isFirstAgent) {
- if (!name) setName("CEO");
- if (!title) setTitle("CEO");
+ if (!name) setName(VOCAB.ceo);
+ if (!title) setTitle(VOCAB.ceo);
}
}, [isFirstAgent]); // eslint-disable-line react-hooks/exhaustive-deps
diff --git a/ui/src/pages/NotFound.tsx b/ui/src/pages/NotFound.tsx
index bcaf3898..217d95e1 100644
--- a/ui/src/pages/NotFound.tsx
+++ b/ui/src/pages/NotFound.tsx
@@ -1,4 +1,5 @@
import { useEffect } from "react";
+import { VOCAB } from "@paperclipai/branding";
import { Link, useLocation } from "@/lib/router";
import { AlertTriangle, Compass } from "lucide-react";
import { Button } from "@/components/ui/button";
@@ -26,7 +27,7 @@ export function NotFoundPage({ scope = "global", requestedPrefix }: NotFoundPage
const currentPath = `${location.pathname}${location.search}${location.hash}`;
const normalizedPrefix = requestedPrefix?.toUpperCase();
- const title = scope === "invalid_company_prefix" ? "Company not found" : "Page not found";
+ const title = scope === "invalid_company_prefix" ? `${VOCAB.company} not found` : "Page not found";
const description =
scope === "invalid_company_prefix"
? `No company matches prefix "${normalizedPrefix ?? "unknown"}".`
diff --git a/ui/src/pages/PluginManager.tsx b/ui/src/pages/PluginManager.tsx
index 3d422f23..4efb1552 100644
--- a/ui/src/pages/PluginManager.tsx
+++ b/ui/src/pages/PluginManager.tsx
@@ -5,6 +5,7 @@
* @see PLUGIN_SPEC.md §9 — Plugin Marketplace / Manager
*/
import { useEffect, useMemo, useState } from "react";
+import { VOCAB } from "@paperclipai/branding";
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
import type { PluginRecord } from "@paperclipai/shared";
import { Link } from "@/lib/router";
@@ -74,7 +75,7 @@ export function PluginManager() {
useEffect(() => {
setBreadcrumbs([
- { label: selectedCompany?.name ?? "Company", href: "/dashboard" },
+ { label: selectedCompany?.name ?? VOCAB.company, href: "/dashboard" },
{ label: "Settings", href: "/instance/settings/heartbeats" },
{ label: "Plugins" },
]);
diff --git a/ui/src/pages/PluginSettings.tsx b/ui/src/pages/PluginSettings.tsx
index 0d36b3d8..436f3974 100644
--- a/ui/src/pages/PluginSettings.tsx
+++ b/ui/src/pages/PluginSettings.tsx
@@ -1,4 +1,5 @@
import { useCallback, useEffect, useRef, useState } from "react";
+import { VOCAB } from "@paperclipai/branding";
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
import { Puzzle, ArrowLeft, ShieldAlert, ActivitySquare, CheckCircle, XCircle, Loader2, Clock, Cpu, Webhook, CalendarClock, AlertTriangle } from "lucide-react";
import { useCompany } from "@/context/CompanyContext";
@@ -114,7 +115,7 @@ export function PluginSettings() {
useEffect(() => {
setBreadcrumbs([
- { label: selectedCompany?.name ?? "Company", href: "/dashboard" },
+ { label: selectedCompany?.name ?? VOCAB.company, href: "/dashboard" },
{ label: "Settings", href: "/instance/settings/heartbeats" },
{ label: "Plugins", href: "/instance/settings/plugins" },
{ label: plugin?.manifestJson?.displayName ?? plugin?.packageName ?? "Plugin Details" },
diff --git a/ui/src/pages/Routines.tsx b/ui/src/pages/Routines.tsx
index 5d8adf91..9b6b3d1f 100644
--- a/ui/src/pages/Routines.tsx
+++ b/ui/src/pages/Routines.tsx
@@ -1,4 +1,5 @@
import { useEffect, useMemo, useRef, useState } from "react";
+import { VOCAB } from "@paperclipai/branding";
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { useNavigate } from "@/lib/router";
import { ChevronDown, ChevronRight, MoreHorizontal, Play, Plus, Repeat } from "lucide-react";
@@ -155,7 +156,7 @@ export function Routines() {
onError: (mutationError) => {
pushToast({
title: "Failed to update routine",
- body: mutationError instanceof Error ? mutationError.message : "Paperclip could not update the routine.",
+ body: mutationError instanceof Error ? mutationError.message : `${VOCAB.appName} could not update the routine.`,
tone: "error",
});
},
@@ -178,7 +179,7 @@ export function Routines() {
onError: (mutationError) => {
pushToast({
title: "Routine run failed",
- body: mutationError instanceof Error ? mutationError.message : "Paperclip could not start the routine run.",
+ body: mutationError instanceof Error ? mutationError.message : `${VOCAB.appName} could not start the routine run.`,
tone: "error",
});
},
@@ -469,7 +470,7 @@ export function Routines() {
- After creation, Paperclip takes you straight to trigger setup for schedules, webhooks, or internal runs.
+ After creation, {VOCAB.appName} takes you straight to trigger setup for schedules, webhooks, or internal runs.