Skip to content

Commit 4c00c08

Browse files
committed
Add welcome client downloads section
1 parent 81216a0 commit 4c00c08

4 files changed

Lines changed: 97 additions & 9 deletions

File tree

frontend/doc.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,19 @@ MonkeyCode 是面向研发团队的企业级 AI 开发平台,覆盖 **需求
1010

1111
**入口说明**:首页(`/`)顶部导航含「控制台」(已登录时)、「广场」(`/playground`)、「使用文档」等;开发者广场(`/playground`)、发布内容(`/playground/create`)、公开任务(`/tasks/public`)可直接访问对应路径。登录后个人控制台默认进入 **新任务页**`/console/tasks`,顶栏面包屑显示为「新任务」)。
1212

13+
### 客户端下载
14+
15+
MonkeyCode 当前提供以下客户端:
16+
17+
- **Windows**
18+
- **macOS**
19+
- **Android**
20+
- **iOS**
21+
22+
你可以在首页的 **全平台客户端** 区块点击对应平台卡片,或直接访问 GitHub Releases 页面下载最新版本:
23+
24+
- `https://github.com/chaitin/MonkeyCode/releases`
25+
1326
---
1427

1528
## 二、登录与账号
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import {
2+
IconArrowUpRight,
3+
IconBrandApple,
4+
IconBrandAndroid,
5+
IconBrandWindows,
6+
IconDeviceMobile,
7+
} from "@tabler/icons-react";
8+
9+
const RELEASE_URL = "https://github.com/chaitin/MonkeyCode/releases";
10+
11+
const clients = [
12+
{
13+
name: "Windows",
14+
description: "Windows 客户端",
15+
icon: IconBrandWindows,
16+
},
17+
{
18+
name: "macOS",
19+
description: "macOS 客户端",
20+
icon: IconBrandApple,
21+
},
22+
{
23+
name: "Android",
24+
description: "Android 客户端",
25+
icon: IconBrandAndroid,
26+
},
27+
{
28+
name: "iOS",
29+
description: "iPhone / iPad 客户端",
30+
icon: IconDeviceMobile,
31+
},
32+
];
33+
34+
const Downloads = () => {
35+
return (
36+
<section className="w-full py-16 md:py-24 px-6 sm:px-10 bg-primary text-background" id="downloads">
37+
<div className="w-full max-w-[1200px] mx-auto flex flex-col gap-6">
38+
<div className="max-w-2xl mx-auto text-center">
39+
<h1 className="text-balance text-2xl md:text-4xl font-bold text-center">
40+
全平台客户端
41+
</h1>
42+
</div>
43+
<div className="grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-4 gap-4 mt-6 md:mt-10">
44+
{clients.map((client) => (
45+
<a
46+
key={client.name}
47+
href={RELEASE_URL}
48+
target="_blank"
49+
rel="noreferrer"
50+
className="group flex h-full flex-col justify-between rounded-xl border border-background/20 bg-background/5 p-4 hover:border-background/40 hover:bg-background/10 hover:-translate-y-0.5 transition-all"
51+
>
52+
<div className="flex items-center gap-3">
53+
<div className="size-12 rounded-lg bg-background/10 text-background flex items-center justify-center shrink-0">
54+
<client.icon className="size-7" />
55+
</div>
56+
<div className="min-w-0">
57+
<h3 className="text-lg font-semibold leading-none">{client.name}</h3>
58+
<p className="text-sm text-background/70 mt-2 leading-relaxed">
59+
{client.description}
60+
</p>
61+
</div>
62+
</div>
63+
<div className="mt-5 flex items-center justify-between border-t border-background/15 pt-3">
64+
<p className="text-sm font-medium text-background">
65+
下载
66+
</p>
67+
<IconArrowUpRight className="size-4 text-background/60 transition-transform group-hover:translate-x-0.5 group-hover:-translate-y-0.5" />
68+
</div>
69+
</a>
70+
))}
71+
</div>
72+
</div>
73+
</section>
74+
);
75+
};
76+
77+
export default Downloads;

frontend/src/components/welcome/task.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const Task = () => {
2323
];
2424

2525
return (
26-
<div className="w-full px-6 sm:px-10 py-16 sm:py-20 bg-primary text-background" id="task">
26+
<div className="w-full px-6 sm:px-10 py-16 sm:py-20 bg-background" id="task">
2727
<div className="w-full max-w-[1200px] mx-auto flex flex-col gap-8">
2828
<h1 className="text-balance text-center text-3xl sm:text-4xl font-bold">
2929
智能任务模式
@@ -33,11 +33,11 @@ const Task = () => {
3333
</div>
3434
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
3535
{features.map((feature, index) => (
36-
<div key={index} className="border border-background/30 rounded-lg p-4 flex gap-3 hover:border-background/50 transition-colors">
37-
<IconBulbFilled className="size-6 text-background/50 flex-shrink-0 mt-0.5" />
36+
<div key={index} className="border rounded-lg p-4 flex gap-3 bg-card/40 hover:bg-card hover:shadow-sm transition-all">
37+
<IconBulbFilled className="size-6 text-primary/70 flex-shrink-0 mt-0.5" />
3838
<div className="min-w-0 flex-1">
3939
<div className="font-medium mb-1">{feature.title}</div>
40-
<div className="text-sm text-background/70 leading-relaxed">{feature.description}</div>
40+
<div className="text-sm text-muted-foreground leading-relaxed">{feature.description}</div>
4141
</div>
4242
</div>
4343
))}
@@ -72,4 +72,4 @@ const Task = () => {
7272
)
7373
};
7474

75-
export default Task;
75+
export default Task;

frontend/src/pages/welcome.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ import { useEffect } from "react";
22
import { useSearchParams } from "react-router-dom";
33
import Header from "@/components/welcome/header"
44
import Banner from "@/components/welcome/banner"
5+
import Downloads from "@/components/welcome/downloads"
56
import Highlights from "@/components/welcome/highlights"
67
import Task from "@/components/welcome/task";
78
import Footer from "@/components/welcome/footer";
89
import Pricing from "@/components/welcome/pricing";
910
import GitBot from "@/components/welcome/git-bot";
10-
import SDD from "@/components/welcome/sdd";
1111
import { AuthProvider } from "@/components/auth-provider";
1212

1313
const WelcomePage = () => {
@@ -27,8 +27,8 @@ const WelcomePage = () => {
2727
<main className="flex flex-col w-full">
2828
<Banner />
2929
<Highlights />
30+
<Downloads />
3031
<Task />
31-
<SDD />
3232
<GitBot />
3333
<Pricing />
3434
</main>
@@ -39,5 +39,3 @@ const WelcomePage = () => {
3939
}
4040

4141
export default WelcomePage
42-
43-

0 commit comments

Comments
 (0)