feat: 脚本创作+发布+市场体系

- 数据模型新增: title(必填), description(可选), status(draft/published)
- 新增 API: POST /scripts/:id/publish, GET /api/market (搜索+分页+runtime过滤)
- 前端首页重构: 选语言 → CodeMirror 编辑器(8种语言语法高亮) → 标题/描述 → 草稿/发布
- 新增 /market 页面: 浏览已发布脚本, 搜索+过滤+分页
- 详情页新增: 发布按钮(草稿→市场), title/description 展示
- Shell 类运行时显示 source 命令(继承环境变量)
- backend GetSourceCommand 支持 bash/zsh/sh/fish 四种 shell 格式

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-05-29 14:04:15 +08:00
parent e3d380f9ab
commit e6e4357a28
16 changed files with 1051 additions and 183 deletions

View File

@@ -2,6 +2,7 @@ import { Routes, Route, Link } from 'react-router-dom'
import Home from './pages/Home'
import ScriptDetail from './pages/ScriptDetail'
import DeleteScript from './pages/DeleteScript'
import Market from './pages/Market'
export default function App() {
return (
@@ -11,13 +12,17 @@ export default function App() {
<Link to="/" className="text-xl font-bold tracking-tight hover:text-blue-400 transition-colors">
<span className="text-blue-500"></span> ScriptForge
</Link>
<span className="text-sm text-gray-500"></span>
<nav className="flex gap-4 text-sm">
<Link to="/" className="text-gray-400 hover:text-blue-400 transition-colors"></Link>
<Link to="/market" className="text-gray-400 hover:text-blue-400 transition-colors"></Link>
</nav>
</div>
</header>
<main className="flex-1 max-w-4xl mx-auto px-4 py-8 w-full">
<Routes>
<Route path="/" element={<Home />} />
<Route path="/market" element={<Market />} />
<Route path="/s/:id" element={<ScriptDetail />} />
<Route path="/s/:id/delete" element={<DeleteScript />} />
</Routes>
@@ -28,4 +33,4 @@ export default function App() {
</footer>
</div>
)
}
}