From de05610087a3b77291878210e5d20b379151d7ec Mon Sep 17 00:00:00 2001 From: yanweidong Date: Tue, 21 Jul 2026 12:38:10 +0800 Subject: [PATCH] feat(web): apply forest AI brand identity --- apps/web_v1/index.html | 6 +++--- apps/web_v1/public/favicon.svg | 11 ++++++++++- apps/web_v1/public/senlinai-icon.svg | 10 ++++++++++ apps/web_v1/scripts/structure-check.mjs | 9 +++++++++ apps/web_v1/src/pages/login.tsx | 8 ++++---- apps/web_v1/src/pages/projects/project-rail.tsx | 3 +++ apps/web_v1/src/pages/projects/project-topbar.tsx | 4 ++-- 7 files changed, 41 insertions(+), 10 deletions(-) create mode 100644 apps/web_v1/public/senlinai-icon.svg diff --git a/apps/web_v1/index.html b/apps/web_v1/index.html index c80d6e3..aaa46f0 100644 --- a/apps/web_v1/index.html +++ b/apps/web_v1/index.html @@ -1,10 +1,10 @@ - + - + - web_v1 + 森林AI
diff --git a/apps/web_v1/public/favicon.svg b/apps/web_v1/public/favicon.svg index 6893eb1..e88854d 100644 --- a/apps/web_v1/public/favicon.svg +++ b/apps/web_v1/public/favicon.svg @@ -1 +1,10 @@ - \ No newline at end of file + + 森林AI + + + + + + + + diff --git a/apps/web_v1/public/senlinai-icon.svg b/apps/web_v1/public/senlinai-icon.svg new file mode 100644 index 0000000..e88854d --- /dev/null +++ b/apps/web_v1/public/senlinai-icon.svg @@ -0,0 +1,10 @@ + + 森林AI + + + + + + + + diff --git a/apps/web_v1/scripts/structure-check.mjs b/apps/web_v1/scripts/structure-check.mjs index 11b5fa6..1a01c8a 100644 --- a/apps/web_v1/scripts/structure-check.mjs +++ b/apps/web_v1/scripts/structure-check.mjs @@ -44,6 +44,15 @@ if (existsSync('src/app/App.tsx')) { } } +const html = readFileSync('index.html', 'utf8') +if (!html.includes('')) failures.push('index language must be zh-CN') +if (!html.includes('森林AI')) failures.push('document title must be 森林AI') +if (!existsSync('public/senlinai-icon.svg')) failures.push('missing public/senlinai-icon.svg') +for (const file of ['src/pages/login.tsx', 'src/pages/projects/project-topbar.tsx', 'src/pages/projects/project-rail.tsx']) { + const source = readFileSync(file, 'utf8') + if (!source.includes('/senlinai-icon.svg')) failures.push(`${file} must use the brand icon`) +} + if (failures.length) { console.error(failures.join('\n')) process.exit(1) diff --git a/apps/web_v1/src/pages/login.tsx b/apps/web_v1/src/pages/login.tsx index f477e8f..f5ba0bd 100644 --- a/apps/web_v1/src/pages/login.tsx +++ b/apps/web_v1/src/pages/login.tsx @@ -38,8 +38,8 @@ export function LoginPage({ onLogin }: { onLogin: (input: { server: string; emai
- S - 森林Agent + + 森林AI
私有部署 · 安全可控的智能协作平台 知识沉淀 · 团队协作 · AI Agent @@ -51,7 +51,7 @@ export function LoginPage({ onLogin }: { onLogin: (input: { server: string; emai
- 登录到您的 SenlinAI + 登录到您的森林AI 连接私有工作台
@@ -81,7 +81,7 @@ export function LoginPage({ onLogin }: { onLogin: (input: { server: string; emai
安全 · 专注 · 高效 - SenlinAI 是面向知识工作者与内部团队的私有部署工作台,帮助团队在统一空间中收集信息、整理知识、协同决策。 + 森林AI 是面向知识工作者与内部团队的私有部署工作台,帮助团队在统一空间中收集信息、整理知识、协同决策。 } title="私有部署,数据自有" desc="所有数据与模型运行在您的环境中,安全可控。" /> } title="知识沉淀,结构清晰" desc="从收集到整理,形成可复用的团队知识库。" /> diff --git a/apps/web_v1/src/pages/projects/project-rail.tsx b/apps/web_v1/src/pages/projects/project-rail.tsx index 2874c0d..aff2fca 100644 --- a/apps/web_v1/src/pages/projects/project-rail.tsx +++ b/apps/web_v1/src/pages/projects/project-rail.tsx @@ -24,6 +24,9 @@ export function ProjectRail({ }) { return ( +