Rename user-facing product label from TKMind to Memind.
Memind CI / Test, build, and release guards (push) Failing after 3m8s

Centralize the display name so nav, login, and page chrome stay consistent ahead of the 103 release.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
john
2026-08-07 19:24:09 +08:00
parent 5db7478c98
commit 7c65540366
8 changed files with 27 additions and 10 deletions
+1 -1
View File
@@ -9,7 +9,7 @@
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="theme-color" content="#0f1419" />
<title>TKMind</title>
<title>Memind</title>
</head>
<body>
<div id="root"></div>
+3 -2
View File
@@ -16,6 +16,7 @@ import {
readWechatAuthError,
readWechatPendingToken,
} from '../utils/wechat';
import { APP_DISPLAY_NAME } from '../utils/appBrand';
import { TKMindAvatar } from './TKMindAvatar';
import { resolvePlazaHomeUrl } from '../utils/publicUrl';
import { WechatBindGate } from './WechatBindGate';
@@ -26,7 +27,7 @@ import { WechatOpenGuide } from './WechatOpenGuide';
type Mode = 'login' | 'register' | 'reset';
const MODE_META: Record<Mode, { title: string; desc: string }> = {
login: { title: 'TKMind', desc: '登录你的账号' },
login: { title: APP_DISPLAY_NAME, desc: '登录你的账号' },
register: { title: '创建账号', desc: '填写信息完成注册' },
reset: { title: '重置密码', desc: '验证注册邮箱后设置新密码' },
};
@@ -239,7 +240,7 @@ export function AuthView({
}
const meta = legacyMode
? { title: 'TKMind', desc: '内部访问入口' }
? { title: APP_DISPLAY_NAME, desc: '内部访问入口' }
: fromPlaza
? {
...MODE_META[mode],
+9 -1
View File
@@ -8,6 +8,7 @@ import { getSessionDisplayName } from '../utils/sessions';
import { isH5OrWechatClient } from '../utils/wechat';
import { BalanceRing } from './BalanceRing';
import { HistorySidebar } from './HistorySidebar';
import { APP_DISPLAY_NAME } from '../utils/appBrand';
import { TKMindAvatar } from './TKMindAvatar';
import { ChatPanel } from './ChatPanel';
import { ChatLoadingSpinner } from './ChatLoadingSpinner';
@@ -163,6 +164,7 @@ export function ChatView({
user,
capabilities,
grantedSkills,
onGrantedSkillsUpdate,
onLogout,
onOpenSpace,
onOpenPage,
@@ -173,6 +175,7 @@ export function ChatView({
capabilities?: CapabilityMap;
grantedSkills?: string[];
onUserUpdate?: (user: PortalUser) => void;
onGrantedSkillsUpdate?: (skills: string[]) => void;
onLogout?: () => void;
onOpenSpace?: (target?: { categoryCode?: MindSpaceSaveCategory; pageId?: string }) => void;
onOpenPage?: (pageId: string) => void;
@@ -213,6 +216,7 @@ export function ChatView({
subscription,
openRecharge,
openSubscribe,
completeRecharge,
uploadChatImage,
uploadChatAttachment,
followAgentRun,
@@ -357,7 +361,7 @@ export function ChatView({
</button>
<TKMindAvatar size="sm" className="header-brand-avatar" />
<div>
<div className="header-title">{user?.displayName ?? 'TKMind'}</div>
<div className="header-title">{user?.displayName ?? APP_DISPLAY_NAME}</div>
<div className="header-sub">
{isConnectingTitle ? <ChatLoadingSpinner /> : null}
<span>{sessionTitle}</span>
@@ -569,6 +573,10 @@ export function ChatView({
session={session}
capabilities={capabilities}
grantedSkills={grantedSkills}
balanceCents={balanceCents ?? 0}
onBalanceUpdate={(nextBalance) => completeRecharge(nextBalance)}
onGrantedSkillsUpdate={onGrantedSkillsUpdate}
onOpenRecharge={() => openRecharge(false)}
onSubmit={(text, imageUrls, previewImageUrls, options) =>
void submit(
text,
+4 -3
View File
@@ -6,6 +6,7 @@ import {
FileText,
Bot,
} from 'lucide-react';
import { APP_DISPLAY_NAME, APP_DISPLAY_TAGLINE } from '../utils/appBrand';
import { TKMindAvatar } from './TKMindAvatar';
const features = [
@@ -21,7 +22,7 @@ export function ChatWelcomePanel({ compact }: { compact?: boolean }) {
return (
<div className="empty-state empty-state-compact">
<TKMindAvatar />
<h2>TKMind</h2>
<h2>{APP_DISPLAY_NAME}</h2>
<p> Agent </p>
</div>
);
@@ -45,7 +46,7 @@ export function ChatWelcomePanel({ compact }: { compact?: boolean }) {
transition={{ delay: 0.15 }}
className="welcome-panel-brand"
>
MeMind
{APP_DISPLAY_TAGLINE}
</motion.h2>
<motion.h1
@@ -73,7 +74,7 @@ export function ChatWelcomePanel({ compact }: { compact?: boolean }) {
transition={{ delay: 0.55 }}
className="welcome-panel-description"
>
MeMind
{APP_DISPLAY_NAME}
</motion.p>
<motion.div
+1 -1
View File
@@ -277,7 +277,7 @@ export function FeedbackSubmitView({
>
<div className="feedback-board-toolbar">
<div className="feedback-board-toolbar-copy">
<p className="feedback-submit-eyebrow"> TKMind</p>
<p className="feedback-submit-eyebrow"> Memind</p>
<h1> Bug </h1>
<p className="feedback-submit-desc feedback-board-desc">
便
+2 -1
View File
@@ -7,6 +7,7 @@ import type { MindSpaceChatContext, MindSpaceSaveCategory, PortalUser, Message }
import { formatContextChip } from '../utils/mindspaceChatContext';
import { shouldShowChatMessage } from '../utils/message';
import { ChatPanel } from './ChatPanel';
import { APP_DISPLAY_NAME } from '../utils/appBrand';
import { TKMindAvatar } from './TKMindAvatar';
import { GoalRunAwaitingBanner } from './GoalRunAwaitingBanner';
@@ -19,7 +20,7 @@ export function SpaceChatPanel({
onPageSaved,
chatBridge,
hideOpenFullChat = false,
title = 'TKMind',
title = APP_DISPLAY_NAME,
prefillMessages = [],
}: {
open: boolean;
+2 -1
View File
@@ -1,3 +1,4 @@
import { APP_DISPLAY_NAME } from '../utils/appBrand';
import tkmindAvatar from '../assets/tkmind-avatar.png';
type TKMindAvatarProps = {
@@ -13,7 +14,7 @@ export function TKMindAvatar({ className = '', size = 'sm' }: TKMindAvatarProps)
className={`tkmind-avatar ${sizeClass} msg-avatar msg-avatar-assistant ${className}`.trim()}
aria-hidden="true"
>
<img src={tkmindAvatar} alt="TKMind" className="tkmind-avatar-img" />
<img src={tkmindAvatar} alt={APP_DISPLAY_NAME} className="tkmind-avatar-img" />
</div>
);
}
+5
View File
@@ -0,0 +1,5 @@
/** User-facing product name shown in nav, login, and page chrome. */
export const APP_DISPLAY_NAME = 'Memind';
/** Branded tagline suffix used on welcome and marketing surfaces. */
export const APP_DISPLAY_TAGLINE = `${APP_DISPLAY_NAME} 智趣`;