feat: 品牌升级为墨木灵思,优化 UI 并配置 Docker 部署

This commit is contained in:
yi
2026-05-12 12:19:13 +08:00
parent 728bc1de77
commit df33ce2f18
33 changed files with 375 additions and 75 deletions
+1 -1
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/logo.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>MuMuのAI小说</title>
<title>墨木灵思</title>
</head>
<body>
<div id="root"></div>
+2
View File
@@ -21,6 +21,7 @@ import MCPPlugins from './pages/MCPPlugins';
import UserManagement from './pages/UserManagement';
import PromptTemplates from './pages/PromptTemplates';
import Sponsor from './pages/Sponsor';
import About from './pages/About';
// import Polish from './pages/Polish';
import Login from './pages/Login';
import AuthCallback from './pages/AuthCallback';
@@ -68,6 +69,7 @@ function App() {
<Route path="writing-styles" element={<WritingStyles />} />
<Route path="prompt-workshop" element={<PromptWorkshop />} />
<Route path="sponsor" element={<Sponsor />} />
<Route path="about" element={<About />} />
{/* <Route path="polish" element={<Polish />} /> */}
</Route>
</Routes>
+13
View File
@@ -201,6 +201,19 @@ export default function AppFooter({ sidebarWidth = 0 }: AppFooterProps) {
<span>GitHub</span>
</Link>
{/* 资源模块 */}
<Link
href="https://www.xinmi.cloud/"
target="_blank"
rel="noopener noreferrer"
style={{
fontSize: 12,
color: token.colorTextSecondary,
}}
>
</Link>
{/* LinuxDO 社区 */}
<Link
href={VERSION_INFO.linuxDoUrl}
+4 -4
View File
@@ -13,11 +13,11 @@ export const VERSION_INFO = {
buildTime: import.meta.env.VITE_BUILD_TIME || new Date().toISOString().split('T')[0],
// 项目信息
projectName: 'MuMuAINovel',
projectFullName: 'MuMu AI 小说创作助手',
projectName: '墨木灵思',
projectFullName: '墨木灵思 - AI 智能小说创作助手',
// 链接信息
githubUrl: 'https://github.com/xiamuceer-j/MuMuAINovel',
githubUrl: 'https://www.xinmi.cloud/',
linuxDoUrl: 'https://linux.do/t/topic/1106333',
// 许可证
@@ -25,7 +25,7 @@ export const VERSION_INFO = {
licenseUrl: 'https://www.gnu.org/licenses/gpl-3.0.html',
// 作者信息
author: 'xiamuceer-j',
author: '墨木灵思团队',
};
/**
+149
View File
@@ -0,0 +1,149 @@
import { Typography, Card, Space, Divider, Row, Col, theme, List, Timeline } from 'antd';
import {
RocketOutlined,
BulbOutlined,
TeamOutlined,
BookOutlined,
ExperimentOutlined,
SmileOutlined
} from '@ant-design/icons';
const { Title, Paragraph, Text } = Typography;
export default function About() {
const { token } = theme.useToken();
const alphaColor = (color: string, alpha: number) => `color-mix(in srgb, ${color} ${(alpha * 100).toFixed(0)}%, transparent)`;
const features = [
{
icon: <RocketOutlined style={{ fontSize: 24, color: token.colorPrimary }} />,
title: '智能向导',
description: 'AI 自动生成小说大纲、角色背景和世界观,为您开启创作之门。',
},
{
icon: <BulbOutlined style={{ fontSize: 24, color: '#fadb14' }} />,
title: '多模型支持',
description: '集成 OpenAI、Gemini、Claude 等顶级模型,灵活切换以满足不同创作需求。',
},
{
icon: <TeamOutlined style={{ fontSize: 24, color: '#52c41a' }} />,
title: '角色与关系管理',
description: '精细化的角色档案、复杂的人物关系网,让故事角色跃然纸上。',
},
{
icon: <BookOutlined style={{ fontSize: 24, color: '#1890ff' }} />,
title: '章节精雕细琢',
description: '支持章节自动生成、润色、续写,AI 辅助您完成每一段精彩故事。',
},
];
const techStack = [
{ label: '前端框架', value: 'React 18 + Vite' },
{ label: ' UI 组件库', value: 'Ant Design 5' },
{ label: '状态管理', value: 'Zustand' },
{ label: '后端框架', value: 'FastAPI (Python 3.11)' },
{ label: '数据库', value: 'PostgreSQL + Alembic' },
{ label: '部署技术', value: 'Docker + Docker Compose' },
];
return (
<div style={{ height: '100%', overflowY: 'auto', padding: '24px' }}>
<div style={{ maxWidth: 1000, margin: '0 auto' }}>
<div style={{ textAlign: 'center', marginBottom: 48 }}>
<Title level={1}> </Title>
<Paragraph style={{ fontSize: 18, color: token.colorTextSecondary }}>
(MoMu LingSi)
</Paragraph>
</div>
<Row gutter={[24, 24]}>
<Col xs={24} md={12}>
<Card
title={<Space><SmileOutlined /> </Space>}
bordered={false}
style={{ height: '100%', boxShadow: `0 4px 12px ${alphaColor(token.colorText, 0.05)}` }}
>
<Paragraph>
AI
</Paragraph>
<Paragraph>
</Paragraph>
</Card>
</Col>
<Col xs={24} md={12}>
<Card
title={<Space><ExperimentOutlined /> </Space>}
bordered={false}
style={{ height: '100%', boxShadow: `0 4px 12px ${alphaColor(token.colorText, 0.05)}` }}
>
<List
dataSource={features}
renderItem={(item) => (
<List.Item style={{ padding: '12px 0' }}>
<List.Item.Meta
avatar={item.icon}
title={item.title}
description={item.description}
/>
</List.Item>
)}
/>
</Card>
</Col>
</Row>
<Divider />
<Title level={2} style={{ textAlign: 'center', marginBottom: 32 }}></Title>
<Row gutter={[24, 24]}>
<Col span={24}>
<Card bordered={false} style={{ background: alphaColor(token.colorPrimary, 0.02) }}>
<Row gutter={[16, 16]}>
{techStack.map((tech, index) => (
<Col xs={12} sm={8} key={index}>
<div style={{ textAlign: 'center', padding: '16px' }}>
<Text type="secondary" style={{ display: 'block', marginBottom: 4 }}>{tech.label}</Text>
<Text strong style={{ fontSize: 16 }}>{tech.value}</Text>
</div>
</Col>
))}
</Row>
</Card>
</Col>
</Row>
<Divider />
<Title level={2} style={{ textAlign: 'center', marginBottom: 32 }}>线</Title>
<div style={{ padding: '0 24px' }}>
<Timeline
items={[
{
color: 'green',
children: '2024 - 墨木灵思基础版发布,支持核心 AI 创作流程',
},
{
color: 'blue',
children: '2025 - 引入更强大的多模型协同引擎,完善角色关系拓扑图',
},
{
children: '2026 - 墨木灵思品牌升级,全站 UI/UX 深度优化',
},
{
color: 'gray',
children: '未来 - 探索小说到多媒体(漫画、短剧)的 AI 转化路径',
},
]}
/>
</div>
<div style={{ textAlign: 'center', marginTop: 64, marginBottom: 32 }}>
<Paragraph type="secondary">
© 2026 | <a href="https://www.xinmi.cloud/" target="_blank" rel="noopener noreferrer"></a>
</Paragraph>
</div>
</div>
</div>
);
}
+1 -1
View File
@@ -219,7 +219,7 @@ export default function BookshelfPage({
{showApiTip && projects.length === 0 && (
<Alert
message="欢迎使用 MuMuAINovel"
message="欢迎使用 墨木灵思"
description={
<div style={{
display: 'flex',
+4 -4
View File
@@ -882,12 +882,12 @@ export default function Login() {
>
<img
src="/logo.svg"
alt="MuMuAINovel"
alt="墨木灵思"
style={{ width: 26, height: 26, filter: 'brightness(0) invert(1)' }}
/>
</div>
<Title level={3} style={{ margin: 0, color: token.colorText }}>
MuMuAINovel
</Title>
</Space>
@@ -979,7 +979,7 @@ export default function Login() {
letterSpacing: 0.4,
}}
>
© 2026 MuMuAINovel · GPLv3 License
© 2026 · GPLv3 License
</Paragraph>
</section>
</Col>
@@ -1001,7 +1001,7 @@ export default function Login() {
</Title>
<Paragraph style={{ marginBottom: 0, color: token.colorTextSecondary }}>
MuMuAINovel
</Paragraph>
</Space>
+23 -2
View File
@@ -119,6 +119,11 @@ export default function ProjectDetail() {
icon: <HeartOutlined />,
label: <Link to={`/project/${projectId}/sponsor`}></Link>,
},
{
key: 'about',
icon: <BulbOutlined />,
label: <Link to={`/project/${projectId}/about`}></Link>,
},
{
type: 'group' as const,
label: '创作管理',
@@ -186,6 +191,17 @@ export default function ProjectDetail() {
},
],
},
{
type: 'group' as const,
label: '官方资源',
children: [
{
key: 'source-code',
icon: <CloudOutlined />,
label: <a href="https://www.xinmi.cloud/" target="_blank" rel="noopener noreferrer"></a>,
},
],
},
];
const menuItemsCollapsed = [
@@ -194,6 +210,11 @@ export default function ProjectDetail() {
icon: <HeartOutlined />,
label: <Link to={`/project/${projectId}/sponsor`}></Link>,
},
{
key: 'about',
icon: <BulbOutlined />,
label: <Link to={`/project/${projectId}/about`}></Link>,
},
{
key: 'world-setting',
icon: <GlobalOutlined />,
@@ -448,7 +469,7 @@ export default function ProjectDetail() {
}}>
<BookOutlined />
</div>
<span style={{ fontWeight: 600, fontSize: 16 }}>MuMuAINovel</span>
<span style={{ fontWeight: 600, fontSize: 16 }}></span>
</div>
}
placement="left"
@@ -544,7 +565,7 @@ export default function ProjectDetail() {
overflow: 'hidden',
textOverflow: 'ellipsis'
}}>
MuMuAINovel
</span>
</div>
<Button
+2 -2
View File
@@ -573,7 +573,7 @@ export default function ProjectList() {
overflow: 'hidden',
textOverflow: 'ellipsis'
}}>
MuMuAINovel
</span>
</div>
<Button
@@ -789,7 +789,7 @@ export default function ProjectList() {
}}>
<BookOutlined />
</div>
<span style={{ fontWeight: 600, fontSize: 16, fontFamily: token.fontFamily }}>MuMuAINovel</span>
<span style={{ fontWeight: 600, fontSize: 16, fontFamily: token.fontFamily }}></span>
</div>
}
placement="left"
+4 -4
View File
@@ -104,13 +104,13 @@ export default function Sponsor() {
color: token.colorWhite
}}>
<Title level={1} style={{ color: token.colorWhite, marginBottom: '8px', fontSize: 'clamp(24px, 5vw, 32px)', fontWeight: 'bold' }}>
MuMuAINovel
</Title>
<Text type="secondary" style={{ color: token.colorWhite, fontSize: 'clamp(11px, 2vw, 13px)', letterSpacing: '2px' }}>
SUPPORT MuMuAINovel
SUPPORT
</Text>
<Title level={4} style={{ color: token.colorWhite, marginTop: '8px', marginBottom: '8px' }}>
📚 MuMuAINovel - AI
📚 - AI
</Title>
</div>
</div>
@@ -222,7 +222,7 @@ export default function Sponsor() {
marginTop: 'auto'
}}>
<Title level={4} style={{ marginBottom: '12px', fontSize: 'clamp(16px, 3vw, 20px)' }}>
💖 MuMuAINovel
💖
</Title>
<Paragraph style={{ fontSize: 'clamp(12px, 2vw, 14px)', color: token.colorTextSecondary, marginBottom: '12px' }}>
AI小说创作体验!
+1 -1
View File
@@ -216,7 +216,7 @@ export default function SystemSettingsPage() {
</Col>
<Col xs={24} md={12}>
<Form.Item name="smtp_from_name" label="发件人名称" rules={[{ required: true, message: '请输入发件人名称' }]}>
<Input placeholder="MuMuAINovel" />
<Input placeholder="墨木灵思" />
</Form.Item>
</Col>
</Row>
+1 -1
View File
@@ -37,7 +37,7 @@ export interface ChangelogEntry {
const GITHUB_API_BASE = 'https://api.github.com';
const REPO_OWNER = 'xiamuceer-j';
const REPO_NAME = 'MuMuAINovel';
const REPO_NAME = '墨木灵思';
/**
* 提交类型映射表
+2 -2
View File
@@ -32,7 +32,7 @@ function compareVersion(v1: string, v2: string): number {
export async function checkLatestVersion(): Promise<VersionCheckResult> {
try {
// 使用 shields.io 的 GitHub release badge API
const badgeUrl = 'https://img.shields.io/github/v/release/xiamuceer-j/MuMuAINovel';
const badgeUrl = 'https://img.shields.io/github/v/release/xiamuceer-j/墨木灵思';
const response = await fetch(badgeUrl, {
method: 'GET',
@@ -63,7 +63,7 @@ export async function checkLatestVersion(): Promise<VersionCheckResult> {
return {
hasUpdate,
latestVersion,
releaseUrl: `https://github.com/xiamuceer-j/MuMuAINovel/releases/tag/v${latestVersion}`,
releaseUrl: `https://github.com/xiamuceer-j/墨木灵思/releases/tag/v${latestVersion}`,
};
}
}