mirror of
https://github.com/tiennm99/goclaw.git
synced 2026-10-13 04:14:56 +00:00
fix(ui): remove USER_PREDEFINED from summoning, refine canvas dots, require team members
- Remove USER_PREDEFINED.md from summoning file list (web + desktop) - Soften canvas-dots pattern (smaller dots, wider spacing) - Require at least 1 member when creating a team - Prevent removing the last non-lead member from team
This commit is contained in:
1 parent
39ffe6e78f
commit
343ad0c2b1
17 files changed
+17
-22
No files matched your search
@@ -6,7 +6,6 @@ import { getWsClient } from '../../lib/ws'
|
||||
const SUMMONING_FILE_KEYS = [
|
||||
{ name: 'SOUL.md', required: true, labelKey: 'summoning.fileLabelSOUL' },
|
||||
{ name: 'IDENTITY.md', required: true, labelKey: 'summoning.fileLabelIDENTITY' },
|
||||
{ name: 'USER_PREDEFINED.md', required: false, labelKey: 'summoning.fileLabelUSER_PREDEFINED' },
|
||||
]
|
||||
|
||||
interface SummoningModalProps {
|
||||
|
||||
@@ -286,8 +286,7 @@
|
||||
"retrying": "Retrying...",
|
||||
"done": "done",
|
||||
"fileLabelSOUL": "Soul & Personality",
|
||||
"fileLabelIDENTITY": "Identity Card",
|
||||
"fileLabelUSER_PREDEFINED": "Default User Context"
|
||||
"fileLabelIDENTITY": "Identity Card"
|
||||
},
|
||||
"configGroups": {
|
||||
"core": "Core",
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
"wait": "This may take a moment",
|
||||
"fileLabelSOUL": "Core personality",
|
||||
"fileLabelIDENTITY": "Identity & knowledge",
|
||||
"fileLabelUSER_PREDEFINED": "User context",
|
||||
"agentReady": "{{name}} is ready!",
|
||||
"retrying": "Retrying..."
|
||||
},
|
||||
|
||||
@@ -286,8 +286,7 @@
|
||||
"retrying": "Đang thử lại...",
|
||||
"done": "xong",
|
||||
"fileLabelSOUL": "Linh hồn & Tính cách",
|
||||
"fileLabelIDENTITY": "Thẻ danh tính",
|
||||
"fileLabelUSER_PREDEFINED": "Ngữ cảnh người dùng mặc định"
|
||||
"fileLabelIDENTITY": "Thẻ danh tính"
|
||||
},
|
||||
"configGroups": {
|
||||
"core": "Cốt lõi",
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
"wait": "Có thể mất một lúc",
|
||||
"fileLabelSOUL": "Tính cách cốt lõi",
|
||||
"fileLabelIDENTITY": "Danh tính & kiến thức",
|
||||
"fileLabelUSER_PREDEFINED": "Ngữ cảnh người dùng",
|
||||
"agentReady": "{{name}} đã sẵn sàng!",
|
||||
"retrying": "Đang thử lại..."
|
||||
},
|
||||
|
||||
@@ -286,8 +286,7 @@
|
||||
"retrying": "重试中...",
|
||||
"done": "完成",
|
||||
"fileLabelSOUL": "灵魂与个性",
|
||||
"fileLabelIDENTITY": "身份卡",
|
||||
"fileLabelUSER_PREDEFINED": "默认用户上下文"
|
||||
"fileLabelIDENTITY": "身份卡"
|
||||
},
|
||||
"configGroups": {
|
||||
"core": "核心",
|
||||
|
||||
@@ -25,7 +25,6 @@
|
||||
"wait": "这可能需要一点时间",
|
||||
"fileLabelSOUL": "核心个性",
|
||||
"fileLabelIDENTITY": "身份与知识",
|
||||
"fileLabelUSER_PREDEFINED": "用户上下文",
|
||||
"agentReady": "{{name}} 已就绪!",
|
||||
"retrying": "重试中..."
|
||||
},
|
||||
|
||||
@@ -68,11 +68,11 @@
|
||||
|
||||
/* Floating panel design system */
|
||||
.canvas-dots {
|
||||
background-image: radial-gradient(circle, oklch(0.26 0.02 45) 0.8px, transparent 0.8px);
|
||||
background-size: 28px 28px;
|
||||
background-image: radial-gradient(circle, oklch(0.22 0.01 45) 0.5px, transparent 0.5px);
|
||||
background-size: 36px 36px;
|
||||
}
|
||||
:root:not(.dark) .canvas-dots {
|
||||
background-image: radial-gradient(circle, oklch(0.86 0.01 70) 0.8px, transparent 0.8px);
|
||||
background-image: radial-gradient(circle, oklch(0.90 0.005 70) 0.5px, transparent 0.5px);
|
||||
}
|
||||
.floating-panel {
|
||||
background: var(--color-surface-secondary);
|
||||
|
||||
@@ -533,8 +533,7 @@
|
||||
"retrying": "Retrying...",
|
||||
"done": "done",
|
||||
"fileLabelSOUL": "Soul & Personality",
|
||||
"fileLabelIDENTITY": "Identity Card",
|
||||
"fileLabelUSER_PREDEFINED": "Default User Context"
|
||||
"fileLabelIDENTITY": "Identity Card"
|
||||
},
|
||||
"configGroups": {
|
||||
"core": "Core",
|
||||
|
||||
@@ -310,6 +310,7 @@
|
||||
"noActiveAgents": "No active agents found. Create agents first.",
|
||||
"members": "Members",
|
||||
"membersTooltip": "Only predefined agents can be added as team members. Open agents are per-user and lack shared context needed for team collaboration.",
|
||||
"needMembers": "Select at least 1 member for the team",
|
||||
"searchMembers": "Search and add members...",
|
||||
"displayName": "Display Name",
|
||||
"displayNamePlaceholder": "Support Team",
|
||||
|
||||
@@ -533,8 +533,7 @@
|
||||
"retrying": "Đang thử lại...",
|
||||
"done": "xong",
|
||||
"fileLabelSOUL": "Linh hồn & Tính cách",
|
||||
"fileLabelIDENTITY": "Thẻ danh tính",
|
||||
"fileLabelUSER_PREDEFINED": "Ngữ cảnh người dùng mặc định"
|
||||
"fileLabelIDENTITY": "Thẻ danh tính"
|
||||
},
|
||||
"configGroups": {
|
||||
"core": "Cốt lõi",
|
||||
|
||||
@@ -310,6 +310,7 @@
|
||||
"noActiveAgents": "Không tìm thấy agent hoạt động. Hãy tạo agent trước.",
|
||||
"members": "Thành viên",
|
||||
"membersTooltip": "Chỉ có agent được định nghĩa sẵn mới có thể được thêm vào nhóm. Agent mở là per-user và thiếu ngữ cảnh dùng chung.",
|
||||
"needMembers": "Chọn ít nhất 1 thành viên cho nhóm",
|
||||
"searchMembers": "Tìm kiếm và thêm thành viên...",
|
||||
"displayName": "Tên hiển thị",
|
||||
"displayNamePlaceholder": "Support Team",
|
||||
|
||||
@@ -533,8 +533,7 @@
|
||||
"retrying": "重试中...",
|
||||
"done": "完成",
|
||||
"fileLabelSOUL": "灵魂与个性",
|
||||
"fileLabelIDENTITY": "身份卡",
|
||||
"fileLabelUSER_PREDEFINED": "默认用户上下文"
|
||||
"fileLabelIDENTITY": "身份卡"
|
||||
},
|
||||
"configGroups": {
|
||||
"core": "核心",
|
||||
|
||||
@@ -310,6 +310,7 @@
|
||||
"noActiveAgents": "未找到活跃Agent,请先创建Agent。",
|
||||
"members": "成员",
|
||||
"membersTooltip": "只有预定义Agent才能作为Team成员添加。开放Agent是按用户划分的,缺乏Team协作所需的共享上下文。",
|
||||
"needMembers": "请至少选择1名团队成员",
|
||||
"searchMembers": "搜索并添加成员...",
|
||||
"displayName": "显示名称",
|
||||
"displayNamePlaceholder": "支持Team",
|
||||
|
||||
@@ -24,7 +24,6 @@ interface SummoningModalProps {
|
||||
const SUMMONING_FILES = [
|
||||
{ name: "SOUL.md", required: true },
|
||||
{ name: "IDENTITY.md", required: true },
|
||||
{ name: "USER_PREDEFINED.md", required: false },
|
||||
];
|
||||
|
||||
export function SummoningModal({
|
||||
|
||||
@@ -57,7 +57,7 @@ export function MemberList({ members, onRemove }: MemberListProps) {
|
||||
{member.role}
|
||||
</Badge>
|
||||
<div className="flex justify-center">
|
||||
{member.role !== "lead" && onRemove && (
|
||||
{member.role !== "lead" && onRemove && members.filter((m) => m.role !== "lead").length > 1 && (
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => onRemove(member.agent_id)}
|
||||
|
||||
@@ -193,13 +193,16 @@ export function TeamCreateDialog({ open, onOpenChange, onCreate }: TeamCreateDia
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
{lead && members.length === 0 && memberOptions.length > 0 && (
|
||||
<p className="text-xs text-amber-600 dark:text-amber-400">{t("create.needMembers")}</p>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<DialogFooter>
|
||||
<Button variant="outline" onClick={() => onOpenChange(false)} disabled={loading}>
|
||||
{t("create.cancel")}
|
||||
</Button>
|
||||
<Button onClick={handleCreate} disabled={!name.trim() || !leadOptions.some((o) => o.value === lead) || loading} className="gap-1">
|
||||
<Button onClick={handleCreate} disabled={!name.trim() || !leadOptions.some((o) => o.value === lead) || members.length === 0 || loading} className="gap-1">
|
||||
{loading && <Loader2 className="h-3.5 w-3.5 animate-spin" />}
|
||||
{loading ? t("create.creating") : t("create.create")}
|
||||
</Button>
|
||||
|
||||
Reference in new issue
Block a user