Skip to content

Commit eb51df5

Browse files
committed
feat: 登录页回车提交、GitBot 任务类型修复等
- 登录页:按回车与点击登录按钮效果一致 - git-bot-tasks: 修复 fetchTasks 返回类型为 Promise<void> - add-project: 移除多余代码 Made-with: Cursor
1 parent c0ff9ea commit eb51df5

File tree

5 files changed

+108
-67
lines changed

5 files changed

+108
-67
lines changed

frontend/package.json

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
"clsx": "^2.1.1",
4949
"cmdk": "^1.1.1",
5050
"dayjs": "^1.11.19",
51+
"dev": "^0.1.3",
5152
"diff": "^8.0.3",
5253
"gray-matter": "^4.0.3",
5354
"jszip": "^3.10.1",
@@ -67,17 +68,16 @@
6768
"remark": "^15.0.1",
6869
"remark-frontmatter": "^5.0.0",
6970
"remark-gfm": "^4.0.1",
70-
"yaml": "^2.4.0",
7171
"sonner": "^2.0.7",
7272
"streamsaver": "^2.0.6",
7373
"strip-markdown": "^6.0.0",
7474
"tailwind-merge": "^3.4.0",
7575
"tailwindcss": "^4.1.17",
7676
"uuid": "^13.0.0",
77-
"vaul": "^1.1.2"
77+
"vaul": "^1.1.2",
78+
"yaml": "^2.4.0"
7879
},
7980
"devDependencies": {
80-
"vite-plugin-node-polyfills": "^0.23.0",
8181
"@eslint/js": "^9.39.1",
8282
"@types/node": "^24.10.0",
8383
"@types/react": "^19.2.2",
@@ -93,6 +93,7 @@
9393
"tw-animate-css": "^1.4.0",
9494
"typescript": "~5.9.3",
9595
"typescript-eslint": "^8.46.3",
96-
"vite": "^7.2.2"
96+
"vite": "^7.2.2",
97+
"vite-plugin-node-polyfills": "^0.23.0"
9798
}
9899
}

frontend/pnpm-lock.yaml

Lines changed: 38 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/src/components/console/git-bot/git-bot-tasks.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { apiRequest } from "@/utils/requestUtils"
99
import { IconAlertTriangle, IconCircleCheck, IconFolder, IconLoader, IconReload } from "@tabler/icons-react"
1010
import dayjs from "dayjs"
1111
import { BookOpenIcon } from "lucide-react"
12-
import React, { forwardRef, useCallback, useImperativeHandle, useEffect, useRef, useState } from "react"
12+
import { forwardRef, useCallback, useImperativeHandle, useEffect, useRef, useState } from "react"
1313
import { toast } from "sonner"
1414

1515
const PAGE_SIZE = 24;
@@ -52,7 +52,7 @@ export const GitBotTasks = forwardRef<GitBotTasksRef>(function GitBotTasks(_, re
5252
})
5353
}, [])
5454

55-
const fetchTasks = useCallback(() => {
55+
const fetchTasks = useCallback(async () => {
5656
setPage(1)
5757
setHasMore(true)
5858
fetchTasksImpl(1, false)

frontend/src/components/console/project/add-project.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import {
1111
import {
1212
Command,
1313
CommandEmpty,
14-
CommandGroup,
1514
CommandInput,
1615
CommandItem,
1716
CommandList,
@@ -34,7 +33,6 @@ import { cn } from "@/lib/utils"
3433
import { getGitPlatformIcon } from "@/utils/common"
3534
import { apiRequest } from "@/utils/requestUtils"
3635
import { IconCheck, IconChevronDown, IconGitBranch, IconLoader } from "@tabler/icons-react"
37-
import Icon from "@/components/common/Icon"
3836
import { useCallback, useEffect, useMemo, useState } from "react"
3937
import { useNavigate } from "react-router-dom"
4038
import { toast } from "sonner"

frontend/src/pages/login.tsx

Lines changed: 63 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -107,38 +107,39 @@ export default function LoginPage({
107107
</TabsList>
108108

109109
<TabsContent value="user" className="mt-4">
110-
<FieldGroup>
111-
<Field>
112-
<FieldLabel htmlFor="user-email">账号</FieldLabel>
113-
<Input
114-
value={userEmail}
115-
placeholder="monkeycode@example.com"
116-
onChange={(e) => setUserEmail(e.target.value)}
117-
id="user-email"
118-
type="email"
119-
required
120-
disabled={logging}
121-
/>
122-
</Field>
123-
<Field>
124-
<div className="flex flex-row items-center justify-between">
125-
<FieldLabel htmlFor="user-password">密码</FieldLabel>
126-
<Link to="/findpassword" className="text-sm text-muted-foreground hover:underline">
127-
找回密码
128-
</Link>
129-
</div>
130-
<Input
131-
value={userPassword}
132-
placeholder="************"
133-
onChange={(e) => setUserPassword(e.target.value)}
134-
id="user-password"
135-
type="password"
136-
required
137-
disabled={logging}
138-
/>
139-
</Field>
140-
<Field>
141-
<Button onClick={handleUserLogin} disabled={logging} variant="outline">
110+
<form onSubmit={(e) => { e.preventDefault(); handleUserLogin(); }}>
111+
<FieldGroup>
112+
<Field>
113+
<FieldLabel htmlFor="user-email">账号</FieldLabel>
114+
<Input
115+
value={userEmail}
116+
placeholder="monkeycode@example.com"
117+
onChange={(e) => setUserEmail(e.target.value)}
118+
id="user-email"
119+
type="email"
120+
required
121+
disabled={logging}
122+
/>
123+
</Field>
124+
<Field>
125+
<div className="flex flex-row items-center justify-between">
126+
<FieldLabel htmlFor="user-password">密码</FieldLabel>
127+
<Link to="/findpassword" className="text-sm text-muted-foreground hover:underline">
128+
找回密码
129+
</Link>
130+
</div>
131+
<Input
132+
value={userPassword}
133+
placeholder="************"
134+
onChange={(e) => setUserPassword(e.target.value)}
135+
id="user-password"
136+
type="password"
137+
required
138+
disabled={logging}
139+
/>
140+
</Field>
141+
<Field>
142+
<Button type="submit" disabled={logging} variant="outline">
142143
{logging && <Spinner className="mr-2" />}
143144
登录
144145
</Button>
@@ -153,40 +154,43 @@ export default function LoginPage({
153154
</Button>
154155
</div>
155156
</FieldGroup>
157+
</form>
156158
</TabsContent>
157159
<TabsContent value="manager" className="mt-4">
158-
<FieldGroup>
159-
<Field>
160-
<FieldLabel htmlFor="email">账号</FieldLabel>
161-
<Input
162-
value={teamManagerEmail}
163-
placeholder="monkeycode@example.com"
164-
onChange={(e) => setTeamManagerEmail(e.target.value)}
165-
id="email"
166-
type="email"
167-
required
168-
disabled={logging}
169-
/>
170-
</Field>
171-
<Field>
172-
<FieldLabel htmlFor="password">密码</FieldLabel>
173-
<Input
174-
id="password"
175-
placeholder="************"
176-
type="password"
177-
required
178-
disabled={logging}
179-
value={teamManagerPassword}
180-
onChange={(e) => setTeamManagerPassword(e.target.value)}
181-
/>
182-
</Field>
183-
<Field>
184-
<Button onClick={handleTeamManagerLogin} disabled={logging}>
160+
<form onSubmit={(e) => { e.preventDefault(); handleTeamManagerLogin(); }}>
161+
<FieldGroup>
162+
<Field>
163+
<FieldLabel htmlFor="email">账号</FieldLabel>
164+
<Input
165+
value={teamManagerEmail}
166+
placeholder="monkeycode@example.com"
167+
onChange={(e) => setTeamManagerEmail(e.target.value)}
168+
id="email"
169+
type="email"
170+
required
171+
disabled={logging}
172+
/>
173+
</Field>
174+
<Field>
175+
<FieldLabel htmlFor="password">密码</FieldLabel>
176+
<Input
177+
id="password"
178+
placeholder="************"
179+
type="password"
180+
required
181+
disabled={logging}
182+
value={teamManagerPassword}
183+
onChange={(e) => setTeamManagerPassword(e.target.value)}
184+
/>
185+
</Field>
186+
<Field>
187+
<Button type="submit" disabled={logging}>
185188
{logging && <Spinner />}
186189
登录
187190
</Button>
188191
</Field>
189192
</FieldGroup>
193+
</form>
190194
</TabsContent>
191195
</Tabs>
192196
</CardContent>

0 commit comments

Comments
 (0)