feat: 添加 esaxx-rs 依赖并更新 Windows 构建配置

- 添加 esaxx-rs 依赖库 (0.1.10)
- 更新 zip 依赖从 7.2.0 到 8.5.1
- 更新 crc-catalog 依赖从 2.4.0 到 2.5.0
- 为 Windows MSVC 目标添加构建配置,禁用静态 CRT 链接
- 移除本地 vendor 路径补丁,改用 crates.io 版本

chore(aha-ui): 更新前端项目配置和界面

- 将 CSS 文件路径从 src/App.css 改为 src/index.css
- 更新 HTML 标签语言属性为 zh-CN
- 修改页面标题为"AHA 模型启动器"
- 移除默认的 vite 图标链接
- 为前端添加 Windows 构建配置

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
PoRi
2026-04-25 15:36:37 +08:00
parent 5ca96c4092
commit 5ee15165df
18 changed files with 9896 additions and 196 deletions
+90
View File
@@ -0,0 +1,90 @@
import { Package, Play, Settings } from "lucide-react"
import { cn } from "../lib/utils"
export type PageView = "models" | "launch"
interface SidebarProps {
activePage: PageView
onNavigate: (page: PageView) => void
address: string
port: string
onAddressChange: (v: string) => void
onPortChange: (v: string) => void
}
const navItems: { id: PageView; label: string; icon: typeof Package }[] = [
{ id: "models", label: "模型列表", icon: Package },
{ id: "launch", label: "启动服务", icon: Play },
]
export default function Sidebar({
activePage,
onNavigate,
address,
port,
onAddressChange,
onPortChange,
}: SidebarProps) {
return (
<aside className="w-64 border-r bg-sidebar-background flex flex-col h-full">
{/* Logo */}
<div className="p-4 border-b">
<h1 className="text-lg font-bold flex items-center gap-2">
<Play className="w-5 h-5 text-primary" />
AHA Launcher
</h1>
<p className="text-xs text-muted-foreground mt-0.5"></p>
</div>
{/* Navigation */}
<nav className="p-2 space-y-1">
{navItems.map((item) => {
const Icon = item.icon
return (
<button
key={item.id}
onClick={() => onNavigate(item.id)}
className={cn(
"w-full flex items-center gap-2.5 px-3 py-2 rounded-md text-sm transition-colors cursor-pointer",
activePage === item.id
? "bg-sidebar-accent text-sidebar-accent-foreground font-medium"
: "text-sidebar-foreground hover:bg-sidebar-accent/50"
)}
>
<Icon className="w-4 h-4" />
{item.label}
</button>
)
})}
</nav>
{/* Settings */}
<div className="mt-auto p-4 border-t">
<div className="flex items-center gap-2 text-sm font-medium mb-3 text-muted-foreground">
<Settings className="w-4 h-4" />
</div>
<div className="space-y-3">
<div>
<label className="block text-xs text-muted-foreground mb-1"></label>
<input
value={port}
onChange={(e) => onPortChange(e.target.value)}
className="w-full h-8 px-2.5 rounded-md border bg-background text-xs
focus:outline-none focus:ring-2 focus:ring-ring"
/>
</div>
<div>
<label className="block text-xs text-muted-foreground mb-1"></label>
<input
value={address}
onChange={(e) => onAddressChange(e.target.value)}
className="w-full h-8 px-2.5 rounded-md border bg-background text-xs
focus:outline-none focus:ring-2 focus:ring-ring"
/>
</div>
</div>
</div>
</aside>
)
}