@yancyyu/openhermit 1.6.39 → 1.6.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist-renderer/assets/{ProjectEditorOverlay-krO5vQxX.js → ProjectEditorOverlay-CemDOX-3.js} +3 -3
- package/dist-renderer/assets/{TeamGraphOverlay-DqhQzcTr.js → TeamGraphOverlay-hPY770Db.js} +1 -1
- package/dist-renderer/assets/{_basePickBy-B7kSYPxr.js → _basePickBy-BHHrJT1i.js} +1 -1
- package/dist-renderer/assets/{_baseUniq-CnjxqwAk.js → _baseUniq-CWErBtke.js} +1 -1
- package/dist-renderer/assets/{arc-CLeZuINP.js → arc-C_o2_Uv8.js} +1 -1
- package/dist-renderer/assets/{architectureDiagram-VXUJARFQ-QKtqaqdY.js → architectureDiagram-VXUJARFQ-DUW0LI3t.js} +1 -1
- package/dist-renderer/assets/{blockDiagram-VD42YOAC-BqdrzO_f.js → blockDiagram-VD42YOAC-CWbCE9hQ.js} +1 -1
- package/dist-renderer/assets/{c4Diagram-YG6GDRKO-gwPlCxDC.js → c4Diagram-YG6GDRKO-BjLadrfV.js} +1 -1
- package/dist-renderer/assets/channel-DyP9YlCF.js +1 -0
- package/dist-renderer/assets/{chunk-4BX2VUAB-C6XLurL4.js → chunk-4BX2VUAB-CPnvjZl9.js} +1 -1
- package/dist-renderer/assets/{chunk-55IACEB6-Ds6quhEP.js → chunk-55IACEB6-OlL47yXQ.js} +1 -1
- package/dist-renderer/assets/{chunk-B4BG7PRW-5UlA1_e9.js → chunk-B4BG7PRW-DTasjbm8.js} +1 -1
- package/dist-renderer/assets/{chunk-DI55MBZ5-ywFrqIsY.js → chunk-DI55MBZ5-C5_Xaqkk.js} +1 -1
- package/dist-renderer/assets/{chunk-FMBD7UC4-C7ifUA17.js → chunk-FMBD7UC4-NdoM4DMR.js} +1 -1
- package/dist-renderer/assets/{chunk-QN33PNHL-BxGCo80U.js → chunk-QN33PNHL-C8Fybejy.js} +1 -1
- package/dist-renderer/assets/{chunk-QZHKN3VN-B2CuaZs6.js → chunk-QZHKN3VN-E98TYFXJ.js} +1 -1
- package/dist-renderer/assets/{chunk-TZMSLE5B-Ds1hInvp.js → chunk-TZMSLE5B-h4lFgkIq.js} +1 -1
- package/dist-renderer/assets/classDiagram-2ON5EDUG-BqffFTae.js +1 -0
- package/dist-renderer/assets/classDiagram-v2-WZHVMYZB-BqffFTae.js +1 -0
- package/dist-renderer/assets/clone-MPcKWs2O.js +1 -0
- package/dist-renderer/assets/{cose-bilkent-S5V4N54A-Cz1GVtLp.js → cose-bilkent-S5V4N54A-DtQ7fkrs.js} +1 -1
- package/dist-renderer/assets/{dagre-6UL2VRFP-BrmR-P4h.js → dagre-6UL2VRFP-CN-nL_z4.js} +1 -1
- package/dist-renderer/assets/{diagram-PSM6KHXK-DbNjC5Rg.js → diagram-PSM6KHXK-DVJtqmm-.js} +1 -1
- package/dist-renderer/assets/{diagram-QEK2KX5R-qkRX5_Mq.js → diagram-QEK2KX5R-DlxHxyXh.js} +1 -1
- package/dist-renderer/assets/{diagram-S2PKOQOG-CyL5rCv2.js → diagram-S2PKOQOG-7dpzO6x6.js} +1 -1
- package/dist-renderer/assets/{erDiagram-Q2GNP2WA-Dox3-bA5.js → erDiagram-Q2GNP2WA-GP1TqsHi.js} +1 -1
- package/dist-renderer/assets/{flowDiagram-NV44I4VS-BtkaxlDL.js → flowDiagram-NV44I4VS-C7ZLETuH.js} +1 -1
- package/dist-renderer/assets/{ganttDiagram-JELNMOA3-Dhy_d9GK.js → ganttDiagram-JELNMOA3-CvPB68dH.js} +1 -1
- package/dist-renderer/assets/{gitGraphDiagram-V2S2FVAM-B5XRhIQA.js → gitGraphDiagram-V2S2FVAM-B5yOm3w7.js} +1 -1
- package/dist-renderer/assets/{graph-CsoEwUhS.js → graph-smeyY1YZ.js} +1 -1
- package/dist-renderer/assets/{index-BWPWmJNo.js → index-BJx8XvG1.js} +1 -1
- package/dist-renderer/assets/{index-h17WuEyf.js → index-CQaXUAua.js} +1 -1
- package/dist-renderer/assets/{index-DGEBzLNT.js → index-CajRpxO2.js} +1 -1
- package/dist-renderer/assets/{index-Bu2R-Se7.js → index-ChG4rE-E.js} +35 -35
- package/dist-renderer/assets/index-DUd0uw9C.css +32 -0
- package/dist-renderer/assets/{index-D-3KgskL.js → index-IhmXZWqf.js} +1 -1
- package/dist-renderer/assets/{index-NhHNs2Oo.js → index-x_JkoDRH.js} +1 -1
- package/dist-renderer/assets/{infoDiagram-HS3SLOUP-hMGmNojH.js → infoDiagram-HS3SLOUP-D-hWRQGY.js} +1 -1
- package/dist-renderer/assets/{journeyDiagram-XKPGCS4Q-DXV2rBDl.js → journeyDiagram-XKPGCS4Q-Bb6W8rUG.js} +1 -1
- package/dist-renderer/assets/{kanban-definition-3W4ZIXB7-Bf99WLRy.js → kanban-definition-3W4ZIXB7-CnHdUX0q.js} +1 -1
- package/dist-renderer/assets/{layout-C3XWrpwo.js → layout-pqss_zkI.js} +1 -1
- package/dist-renderer/assets/{linear-OEEcn8KN.js → linear-B1mFITNh.js} +1 -1
- package/dist-renderer/assets/{mindmap-definition-VGOIOE7T-Dpi3S2x4.js → mindmap-definition-VGOIOE7T-DTD9q7-D.js} +1 -1
- package/dist-renderer/assets/{pieDiagram-ADFJNKIX-xTPPhtNx.js → pieDiagram-ADFJNKIX-Df3mhrn7.js} +1 -1
- package/dist-renderer/assets/{quadrantDiagram-AYHSOK5B-euniyDlz.js → quadrantDiagram-AYHSOK5B-B1FZ09vH.js} +1 -1
- package/dist-renderer/assets/{requirementDiagram-UZGBJVZJ-D9Uiw4kF.js → requirementDiagram-UZGBJVZJ-aEO78thZ.js} +1 -1
- package/dist-renderer/assets/{sankeyDiagram-TZEHDZUN-CySU4nED.js → sankeyDiagram-TZEHDZUN-6Ui--jp-.js} +1 -1
- package/dist-renderer/assets/{sequenceDiagram-WL72ISMW-JVGpET6V.js → sequenceDiagram-WL72ISMW-DF4Q1cAM.js} +1 -1
- package/dist-renderer/assets/{stateDiagram-FKZM4ZOC-B2FY5qqi.js → stateDiagram-FKZM4ZOC-BqA2BI8C.js} +1 -1
- package/dist-renderer/assets/{stateDiagram-v2-4FDKWEC3-DcoMiR8H.js → stateDiagram-v2-4FDKWEC3-Cs2ZtUD2.js} +1 -1
- package/dist-renderer/assets/{timeline-definition-IT6M3QCI-DmycNUUe.js → timeline-definition-IT6M3QCI-DoOkw_A8.js} +1 -1
- package/dist-renderer/assets/{treemap-GDKQZRPO-DPq4gZuB.js → treemap-GDKQZRPO-DUe26QdD.js} +1 -1
- package/dist-renderer/assets/{xychartDiagram-PRI3JC2R-J6VVJzRq.js → xychartDiagram-PRI3JC2R-BKCnj5Xn.js} +1 -1
- package/dist-renderer/index.html +2 -2
- package/package.json +1 -1
- package/src/renderer/components/chat/ChatHistoryItem.tsx +1 -1
- package/src/renderer/components/chat/items/SubagentItem.tsx +2 -2
- package/src/renderer/components/chat/viewers/MermaidDiagram.tsx +2 -2
- package/src/renderer/components/common/ErrorBoundary.tsx +1 -1
- package/src/renderer/components/dashboard/CliStatusBanner.tsx +7 -7
- package/src/renderer/components/extensions/ExtensionStoreView.tsx +1 -1
- package/src/renderer/components/extensions/common/ExtensionToast.tsx +3 -3
- package/src/renderer/components/extensions/common/SourceBadge.tsx +1 -1
- package/src/renderer/components/extensions/plugins/CategoryChips.tsx +1 -1
- package/src/renderer/components/extensions/plugins/PluginCard.tsx +1 -1
- package/src/renderer/components/extensions/plugins/PluginDetailDialog.tsx +2 -2
- package/src/renderer/components/extensions/skills/SkillEditorDialog.tsx +1 -1
- package/src/renderer/components/layout/PaneResizeHandle.tsx +2 -2
- package/src/renderer/components/layout/Sidebar.tsx +2 -2
- package/src/renderer/components/layout/SortableTab.tsx +2 -2
- package/src/renderer/components/report/sections/CostSection.tsx +2 -2
- package/src/renderer/components/report/sections/InsightsSection.tsx +1 -1
- package/src/renderer/components/runtime/ProviderRuntimeBackendSelector.tsx +2 -2
- package/src/renderer/components/search/CommandPalette.tsx +4 -4
- package/src/renderer/components/settings/sections/CliStatusSection.tsx +1 -1
- package/src/renderer/components/sidebar/SessionFiltersPopover.tsx +1 -1
- package/src/renderer/components/sidebar/SessionItem.tsx +3 -3
- package/src/renderer/components/sidebar/SidebarSessions.tsx +2 -2
- package/src/renderer/components/sidebar/WorkspaceBrowser.tsx +1 -1
- package/src/renderer/components/team/CcSessionsSection.tsx +5 -5
- package/src/renderer/components/team/ClaudeLogsFilterPopover.tsx +1 -1
- package/src/renderer/components/team/ClaudeLogsPanel.tsx +1 -1
- package/src/renderer/components/team/CollapsibleTeamSection.tsx +1 -1
- package/src/renderer/components/team/ProcessesSection.tsx +2 -2
- package/src/renderer/components/team/TaskTooltip.tsx +2 -2
- package/src/renderer/components/team/TeamDetailView.tsx +1 -1
- package/src/renderer/components/team/TeamListFilterPopover.tsx +1 -1
- package/src/renderer/components/team/TeamListView.tsx +2 -2
- package/src/renderer/components/team/TeamSessionsSection.tsx +6 -6
- package/src/renderer/components/team/UnreadCommentsBadge.tsx +1 -1
- package/src/renderer/components/team/activity/ActivityItem.tsx +9 -9
- package/src/renderer/components/team/activity/ActivityTimeline.tsx +5 -5
- package/src/renderer/components/team/activity/LeadThoughtsGroup.tsx +3 -3
- package/src/renderer/components/team/activity/ReplyQuoteBlock.tsx +4 -4
- package/src/renderer/components/team/dialogs/CreateTaskDialog.tsx +2 -2
- package/src/renderer/components/team/dialogs/LaunchTeamDialog.tsx +1 -1
- package/src/renderer/components/team/dialogs/PlatformBindingDialog.tsx +1 -1
- package/src/renderer/components/team/dialogs/PlatformManualForm.tsx +1 -1
- package/src/renderer/components/team/dialogs/PlatformSetupQR.tsx +4 -4
- package/src/renderer/components/team/dialogs/SendMessageDialog.tsx +6 -6
- package/src/renderer/components/team/dialogs/SkipPermissionsCheckbox.tsx +6 -6
- package/src/renderer/components/team/dialogs/StatusHistoryTimeline.tsx +1 -1
- package/src/renderer/components/team/dialogs/TaskAttachments.tsx +1 -1
- package/src/renderer/components/team/dialogs/TaskCommentInput.tsx +6 -6
- package/src/renderer/components/team/dialogs/TaskCommentsSection.tsx +4 -4
- package/src/renderer/components/team/dialogs/TaskDetailDialog.tsx +3 -3
- package/src/renderer/components/team/editor/EditorFileTree.tsx +4 -4
- package/src/renderer/components/team/editor/EditorSearchPanel.tsx +1 -1
- package/src/renderer/components/team/editor/MarkdownSplitView.tsx +1 -1
- package/src/renderer/components/team/editor/NewFileDialog.tsx +1 -1
- package/src/renderer/components/team/editor/ProjectEditorOverlay.tsx +1 -1
- package/src/renderer/components/team/editor/SearchInFilesPanel.tsx +1 -1
- package/src/renderer/components/team/kanban/KanbanFilterPopover.tsx +4 -4
- package/src/renderer/components/team/kanban/KanbanSearchInput.tsx +1 -1
- package/src/renderer/components/team/kanban/KanbanSortPopover.tsx +5 -5
- package/src/renderer/components/team/kanban/KanbanTaskCard.tsx +4 -4
- package/src/renderer/components/team/members/MemberDraftRow.tsx +1 -1
- package/src/renderer/components/team/members/MemberStatsTab.tsx +2 -2
- package/src/renderer/components/team/members/MemberWorkspaceTab.tsx +1 -1
- package/src/renderer/components/team/messages/MessageComposer.tsx +2 -2
- package/src/renderer/components/team/messages/MessagesFilterPopover.tsx +1 -1
- package/src/renderer/components/team/messages/MessagesPanel.tsx +7 -7
- package/src/renderer/components/team/review/ChangeReviewDialog.tsx +1 -1
- package/src/renderer/components/team/schedule/ScheduleStatusBadge.tsx +1 -1
- package/src/renderer/components/team/sidebar/TeamSidebarRail.tsx +4 -4
- package/src/renderer/components/team/tasks/TaskRow.tsx +1 -1
- package/src/renderer/components/team/tools/SkillChip.tsx +1 -1
- package/src/renderer/components/team/tools/ToolsSection.tsx +1 -1
- package/src/renderer/components/ui/MemberSelect.tsx +2 -2
- package/src/renderer/components/ui/MentionSuggestionList.tsx +2 -2
- package/src/renderer/components/ui/MentionableTextarea.tsx +3 -3
- package/src/renderer/index.css +17 -17
- package/dist-renderer/assets/channel-DpMHF50r.js +0 -1
- package/dist-renderer/assets/classDiagram-2ON5EDUG-CBYCBVRl.js +0 -1
- package/dist-renderer/assets/classDiagram-v2-WZHVMYZB-CBYCBVRl.js +0 -1
- package/dist-renderer/assets/clone-DcMF6Psb.js +0 -1
- package/dist-renderer/assets/index-CnWV3BhG.css +0 -32
|
@@ -97,7 +97,7 @@ export const CostSection = ({
|
|
|
97
97
|
<div className="mb-1.5 flex h-3 w-full overflow-hidden rounded-full">
|
|
98
98
|
<div
|
|
99
99
|
className="h-full"
|
|
100
|
-
style={{ width: `${parentPct}%`, backgroundColor: '#
|
|
100
|
+
style={{ width: `${parentPct}%`, backgroundColor: '#818cf8' }}
|
|
101
101
|
/>
|
|
102
102
|
<div
|
|
103
103
|
className="h-full"
|
|
@@ -108,7 +108,7 @@ export const CostSection = ({
|
|
|
108
108
|
<div className="flex items-center gap-1.5">
|
|
109
109
|
<span
|
|
110
110
|
className="inline-block size-2 rounded-full"
|
|
111
|
-
style={{ backgroundColor: '#
|
|
111
|
+
style={{ backgroundColor: '#818cf8' }}
|
|
112
112
|
/>
|
|
113
113
|
<span className="text-text-secondary">主会话:{fmt(data.parentCostUsd)}</span>
|
|
114
114
|
</div>
|
|
@@ -153,7 +153,7 @@ export const InsightsSection = ({
|
|
|
153
153
|
<div className="mb-2 text-xs font-medium text-text-muted">
|
|
154
154
|
Agent Tree ({agentTree.agentCount} agent{agentTree.agentCount !== 1 ? 's' : ''})
|
|
155
155
|
{agentTree.hasTeamMode && (
|
|
156
|
-
<span className="ml-2 rounded px-1.5 py-0.5 text-xs" style={{ color: '#
|
|
156
|
+
<span className="ml-2 rounded px-1.5 py-0.5 text-xs" style={{ color: '#818cf8' }}>
|
|
157
157
|
Team Mode
|
|
158
158
|
</span>
|
|
159
159
|
)}
|
|
@@ -191,7 +191,7 @@ export const ProviderRuntimeBackendSelector = ({
|
|
|
191
191
|
className="shrink-0 rounded-full px-1.5 py-0.5 text-[10px]"
|
|
192
192
|
style={{
|
|
193
193
|
color: '#93c5fd',
|
|
194
|
-
backgroundColor: 'rgba(
|
|
194
|
+
backgroundColor: 'rgba(99, 102, 241, 0.14)',
|
|
195
195
|
}}
|
|
196
196
|
>
|
|
197
197
|
{getProviderRuntimeBackendAudienceLabel(option)}
|
|
@@ -259,7 +259,7 @@ export const ProviderRuntimeBackendSelector = ({
|
|
|
259
259
|
className="rounded-full px-1.5 py-0.5 text-[10px]"
|
|
260
260
|
style={{
|
|
261
261
|
color: '#93c5fd',
|
|
262
|
-
backgroundColor: 'rgba(
|
|
262
|
+
backgroundColor: 'rgba(99, 102, 241, 0.14)',
|
|
263
263
|
}}
|
|
264
264
|
>
|
|
265
265
|
{selectedAudienceLabel}
|
|
@@ -117,7 +117,7 @@ const SessionResultItemInner = ({
|
|
|
117
117
|
<div className="flex items-start gap-3">
|
|
118
118
|
<div
|
|
119
119
|
className={`mt-0.5 shrink-0 ${
|
|
120
|
-
result.messageType === 'user' ? 'text-
|
|
120
|
+
result.messageType === 'user' ? 'text-indigo-400' : 'text-green-400'
|
|
121
121
|
}`}
|
|
122
122
|
>
|
|
123
123
|
{result.messageType === 'user' ? <User className="size-4" /> : <Bot className="size-4" />}
|
|
@@ -125,8 +125,8 @@ const SessionResultItemInner = ({
|
|
|
125
125
|
<div className="min-w-0 flex-1">
|
|
126
126
|
{showProjectName && projectName && (
|
|
127
127
|
<div className="mb-1 flex items-center gap-2">
|
|
128
|
-
<FolderGit2 className="size-3 text-
|
|
129
|
-
<span className="truncate text-xs font-medium text-
|
|
128
|
+
<FolderGit2 className="size-3 text-indigo-400" />
|
|
129
|
+
<span className="truncate text-xs font-medium text-indigo-400">{projectName}</span>
|
|
130
130
|
</div>
|
|
131
131
|
)}
|
|
132
132
|
<div className="mb-1 flex items-center gap-2">
|
|
@@ -486,7 +486,7 @@ export const CommandPalette = (): React.JSX.Element | null => {
|
|
|
486
486
|
onClick={() => setGlobalSearchEnabled(!globalSearchEnabled)}
|
|
487
487
|
className={`flex items-center gap-1.5 rounded px-2 py-1 text-xs transition-colors ${
|
|
488
488
|
globalSearchEnabled
|
|
489
|
-
? 'bg-
|
|
489
|
+
? 'bg-indigo-500/20 text-indigo-400 hover:bg-indigo-500/30'
|
|
490
490
|
: 'text-text-muted hover:bg-surface-raised hover:text-text'
|
|
491
491
|
}`}
|
|
492
492
|
title={
|
|
@@ -64,7 +64,7 @@ export const SessionFiltersPopover = ({
|
|
|
64
64
|
>
|
|
65
65
|
<Filter size={14} />
|
|
66
66
|
{activeCount > 0 && (
|
|
67
|
-
<span className="absolute -right-1 -top-1 flex size-4 items-center justify-center rounded-full bg-
|
|
67
|
+
<span className="absolute -right-1 -top-1 flex size-4 items-center justify-center rounded-full bg-indigo-500 text-[10px] font-medium text-white">
|
|
68
68
|
{activeCount}
|
|
69
69
|
</span>
|
|
70
70
|
)}
|
|
@@ -292,18 +292,18 @@ export const SessionItem = ({
|
|
|
292
292
|
checked={isSelected ?? false}
|
|
293
293
|
onChange={() => onToggleSelect?.()}
|
|
294
294
|
onClick={(e) => e.stopPropagation()}
|
|
295
|
-
className="size-3.5 shrink-0 accent-
|
|
295
|
+
className="size-3.5 shrink-0 accent-indigo-500"
|
|
296
296
|
/>
|
|
297
297
|
)}
|
|
298
298
|
{session.isOngoing && <OngoingIndicator />}
|
|
299
|
-
{isPinned && <Pin className="size-2.5 shrink-0 text-
|
|
299
|
+
{isPinned && <Pin className="size-2.5 shrink-0 text-indigo-400" />}
|
|
300
300
|
{isHidden && <EyeOff className="size-2.5 shrink-0 text-zinc-500" />}
|
|
301
301
|
{isTeam ? (
|
|
302
302
|
<span
|
|
303
303
|
className="flex items-center gap-1.5 truncate text-[13px] font-medium leading-tight"
|
|
304
304
|
style={{ color: isActive ? 'var(--color-text)' : 'var(--color-text-muted)' }}
|
|
305
305
|
>
|
|
306
|
-
<Users className="size-3 shrink-0 text-
|
|
306
|
+
<Users className="size-3 shrink-0 text-indigo-400" />
|
|
307
307
|
<span className="truncate">{parsed.displayText}</span>
|
|
308
308
|
</span>
|
|
309
309
|
) : (
|
|
@@ -657,7 +657,7 @@ const SessionRow = ({
|
|
|
657
657
|
<span
|
|
658
658
|
className={
|
|
659
659
|
session.lastMessage.role === 'user'
|
|
660
|
-
? 'text-
|
|
660
|
+
? 'text-indigo-400'
|
|
661
661
|
: 'text-[var(--color-text-muted)]'
|
|
662
662
|
}
|
|
663
663
|
>
|
|
@@ -714,7 +714,7 @@ const SessionRow = ({
|
|
|
714
714
|
<span
|
|
715
715
|
className={`shrink-0 text-[10px] font-medium ${
|
|
716
716
|
msg.role === 'user'
|
|
717
|
-
? 'text-
|
|
717
|
+
? 'text-indigo-400'
|
|
718
718
|
: 'text-[var(--color-text-muted)]'
|
|
719
719
|
}`}
|
|
720
720
|
>
|
|
@@ -150,7 +150,7 @@ const TeamWorkspace = ({
|
|
|
150
150
|
{projectPath}
|
|
151
151
|
</span>
|
|
152
152
|
</span>
|
|
153
|
-
<span className="shrink-0 rounded bg-
|
|
153
|
+
<span className="shrink-0 rounded bg-indigo-500/20 px-1.5 py-0.5 text-[10px] font-medium text-indigo-400">
|
|
154
154
|
当前
|
|
155
155
|
</span>
|
|
156
156
|
</button>
|
|
@@ -320,7 +320,7 @@ function CcSessionRow({
|
|
|
320
320
|
<div
|
|
321
321
|
className={`group relative rounded-xl border transition-colors ${
|
|
322
322
|
isExpanded
|
|
323
|
-
? 'border-
|
|
323
|
+
? 'border-indigo-500/20 bg-indigo-500/[0.04]'
|
|
324
324
|
: session.live
|
|
325
325
|
? 'border-emerald-500/20 bg-emerald-500/[0.04] hover:bg-emerald-500/[0.08]'
|
|
326
326
|
: 'border-transparent bg-[var(--color-surface)] hover:border-[var(--color-border)] hover:bg-[var(--color-surface-raised)]'
|
|
@@ -340,7 +340,7 @@ function CcSessionRow({
|
|
|
340
340
|
{session.live ? (
|
|
341
341
|
<Radio size={12} className="animate-pulse text-emerald-400" />
|
|
342
342
|
) : session.active ? (
|
|
343
|
-
<Wifi size={12} className="text-
|
|
343
|
+
<Wifi size={12} className="text-indigo-400" />
|
|
344
344
|
) : (
|
|
345
345
|
<WifiOff size={12} className="text-[var(--color-text-muted)] opacity-50" />
|
|
346
346
|
)}
|
|
@@ -371,7 +371,7 @@ function CcSessionRow({
|
|
|
371
371
|
<span
|
|
372
372
|
className={
|
|
373
373
|
session.lastMessage.role === 'user'
|
|
374
|
-
? 'text-
|
|
374
|
+
? 'text-indigo-400'
|
|
375
375
|
: 'text-[var(--color-text-muted)]'
|
|
376
376
|
}
|
|
377
377
|
>
|
|
@@ -425,14 +425,14 @@ function CcSessionRow({
|
|
|
425
425
|
key={`${msg.timestamp}-${i}`}
|
|
426
426
|
className={`rounded-lg px-3 py-2 text-[11px] leading-relaxed ${
|
|
427
427
|
isUserMessage
|
|
428
|
-
? 'bg-
|
|
428
|
+
? 'bg-indigo-500/10 text-[var(--color-text)]'
|
|
429
429
|
: 'bg-[var(--color-surface-raised)] text-[var(--color-text)]'
|
|
430
430
|
}`}
|
|
431
431
|
>
|
|
432
432
|
<div className="mb-1 flex items-center gap-2">
|
|
433
433
|
<span
|
|
434
434
|
className={`shrink-0 text-[10px] font-medium ${
|
|
435
|
-
isUserMessage ? 'text-
|
|
435
|
+
isUserMessage ? 'text-indigo-400' : 'text-[var(--color-text-muted)]'
|
|
436
436
|
}`}
|
|
437
437
|
>
|
|
438
438
|
{isUserMessage ? '用户' : 'Agent'}
|
|
@@ -112,7 +112,7 @@ export const ClaudeLogsFilterPopover = ({
|
|
|
112
112
|
>
|
|
113
113
|
<Filter size={14} />
|
|
114
114
|
{activeCount > 0 && (
|
|
115
|
-
<span className="absolute -right-1 -top-1 flex size-4 items-center justify-center rounded-full bg-
|
|
115
|
+
<span className="absolute -right-1 -top-1 flex size-4 items-center justify-center rounded-full bg-indigo-500 text-[10px] font-medium text-white">
|
|
116
116
|
{activeCount}
|
|
117
117
|
</span>
|
|
118
118
|
)}
|
|
@@ -115,7 +115,7 @@ export const ClaudeLogsPanel = ({
|
|
|
115
115
|
<Button
|
|
116
116
|
variant="outline"
|
|
117
117
|
size="sm"
|
|
118
|
-
className="h-7 border-
|
|
118
|
+
className="h-7 border-indigo-500/30 bg-indigo-600 px-2 text-xs text-white hover:bg-indigo-500"
|
|
119
119
|
onClick={applyPending}
|
|
120
120
|
>
|
|
121
121
|
+{pendingNewCount} 条新日志
|
|
@@ -122,7 +122,7 @@ export const CollapsibleTeamSection = ({
|
|
|
122
122
|
</span>
|
|
123
123
|
)}
|
|
124
124
|
{secondaryBadge != null && secondaryBadge > 0 && (
|
|
125
|
-
<span className="text-[10px] tabular-nums text-
|
|
125
|
+
<span className="text-[10px] tabular-nums text-indigo-400 opacity-70" title={`${secondaryBadge} unread`}>
|
|
126
126
|
+{secondaryBadge}
|
|
127
127
|
</span>
|
|
128
128
|
)}
|
|
@@ -130,7 +130,7 @@ export const ProcessesSection = memo(function ProcessesSection({
|
|
|
130
130
|
{proc.url && (
|
|
131
131
|
<button
|
|
132
132
|
type="button"
|
|
133
|
-
className="text-[var(--color-text-secondary)] underline decoration-dotted underline-offset-2 transition-colors hover:text-
|
|
133
|
+
className="text-[var(--color-text-secondary)] underline decoration-dotted underline-offset-2 transition-colors hover:text-indigo-400"
|
|
134
134
|
onClick={() => void api.openExternal(proc.url!)}
|
|
135
135
|
title={proc.url}
|
|
136
136
|
>
|
|
@@ -156,7 +156,7 @@ export const ProcessesSection = memo(function ProcessesSection({
|
|
|
156
156
|
{alive && proc.url && (
|
|
157
157
|
<button
|
|
158
158
|
type="button"
|
|
159
|
-
className="flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] text-
|
|
159
|
+
className="flex items-center gap-1 rounded px-1.5 py-0.5 text-[10px] text-indigo-400 transition-colors hover:bg-indigo-500/10"
|
|
160
160
|
onClick={() => void api.openExternal(proc.url!)}
|
|
161
161
|
title="在浏览器中打开"
|
|
162
162
|
>
|
|
@@ -18,8 +18,8 @@ import type { TeamTaskWithKanban } from '@shared/types';
|
|
|
18
18
|
* Matches the kanban column palette from KanbanBoard.tsx.
|
|
19
19
|
*/
|
|
20
20
|
const STATUS_COLORS: Record<string, { text: string; bg: string }> = {
|
|
21
|
-
pending: { text: '#
|
|
22
|
-
todo: { text: '#
|
|
21
|
+
pending: { text: '#818cf8', bg: 'rgba(99, 102, 241, 0.15)' }, // blue
|
|
22
|
+
todo: { text: '#818cf8', bg: 'rgba(99, 102, 241, 0.15)' },
|
|
23
23
|
in_progress: { text: '#facc15', bg: 'rgba(234, 179, 8, 0.15)' }, // yellow
|
|
24
24
|
completed: { text: '#4ade80', bg: 'rgba(34, 197, 94, 0.15)' }, // green
|
|
25
25
|
done: { text: '#4ade80', bg: 'rgba(34, 197, 94, 0.15)' },
|
|
@@ -2142,7 +2142,7 @@ export const TeamDetailView = ({
|
|
|
2142
2142
|
</div>
|
|
2143
2143
|
<div className="flex items-center gap-3 py-2">
|
|
2144
2144
|
<p className="text-sm font-medium text-text">{draftDisplayName}</p>
|
|
2145
|
-
<span className="rounded-full bg-
|
|
2145
|
+
<span className="rounded-full bg-indigo-500/20 px-2 py-0.5 text-[10px] font-medium text-indigo-400">
|
|
2146
2146
|
{getCommandForHarness()}
|
|
2147
2147
|
</span>
|
|
2148
2148
|
</div>
|
|
@@ -93,7 +93,7 @@ export const TeamListFilterPopover = ({
|
|
|
93
93
|
>
|
|
94
94
|
<Filter size={14} />
|
|
95
95
|
{activeCount > 0 && (
|
|
96
|
-
<span className="absolute -right-1 -top-1 flex size-4 items-center justify-center rounded-full bg-
|
|
96
|
+
<span className="absolute -right-1 -top-1 flex size-4 items-center justify-center rounded-full bg-indigo-500 text-[10px] font-medium text-white">
|
|
97
97
|
{activeCount}
|
|
98
98
|
</span>
|
|
99
99
|
)}
|
|
@@ -974,7 +974,7 @@ export const TeamListView = (): React.JSX.Element => {
|
|
|
974
974
|
{template.members.map((member) => (
|
|
975
975
|
<span
|
|
976
976
|
key={member.name}
|
|
977
|
-
className="rounded bg-
|
|
977
|
+
className="rounded bg-indigo-500/10 px-1.5 py-0.5 text-[10px] text-indigo-300"
|
|
978
978
|
>
|
|
979
979
|
{member.name}
|
|
980
980
|
{member.role ? ` · ${formatTeamRoleLabel(member.role)}` : ''}
|
|
@@ -1233,7 +1233,7 @@ export const TeamListView = (): React.JSX.Element => {
|
|
|
1233
1233
|
<div className="mt-2 flex items-center gap-1.5 pl-[42px] text-[10px] tabular-nums">
|
|
1234
1234
|
{team.stats && team.stats.sessions > 0 ? (
|
|
1235
1235
|
<>
|
|
1236
|
-
<span className="text-
|
|
1236
|
+
<span className="text-indigo-400">{team.stats.sessions} sessions</span>
|
|
1237
1237
|
<span className="text-[var(--color-text-muted)] opacity-30">·</span>
|
|
1238
1238
|
<span className="text-emerald-400">{formatTokensCompact(team.stats.tokens)}</span>
|
|
1239
1239
|
{team.stats.durationMs > 0 && (
|
|
@@ -128,7 +128,7 @@ export const TeamSessionsSection = ({
|
|
|
128
128
|
{selectedSessionId !== null && (
|
|
129
129
|
<button
|
|
130
130
|
type="button"
|
|
131
|
-
className="flex w-full items-center gap-1.5 rounded-md px-2.5 py-1.5 text-xs text-
|
|
131
|
+
className="flex w-full items-center gap-1.5 rounded-md px-2.5 py-1.5 text-xs text-indigo-600 transition-colors hover:bg-indigo-500/10 dark:text-indigo-400"
|
|
132
132
|
onClick={() => onSelectSession(null)}
|
|
133
133
|
>
|
|
134
134
|
<FilterX size={12} />
|
|
@@ -176,10 +176,10 @@ const SessionRow = ({
|
|
|
176
176
|
return (
|
|
177
177
|
<div
|
|
178
178
|
className={`group flex w-full items-center gap-2 rounded-md px-2.5 py-2 text-left text-xs transition-colors hover:bg-[var(--color-surface-raised)] ${
|
|
179
|
-
isLead ? 'border border-
|
|
180
|
-
} ${isSelected ? 'bg-
|
|
179
|
+
isLead ? 'border border-indigo-500/20 bg-indigo-500/5' : ''
|
|
180
|
+
} ${isSelected ? 'bg-indigo-500/10 ring-1 ring-indigo-400/50' : ''}`}
|
|
181
181
|
>
|
|
182
|
-
{isLead && <Crown size={12} className="shrink-0 text-
|
|
182
|
+
{isLead && <Crown size={12} className="shrink-0 text-indigo-400" />}
|
|
183
183
|
|
|
184
184
|
<button type="button" className="min-w-0 flex-1 text-left" onClick={onClick}>
|
|
185
185
|
<div className="flex items-center gap-1.5">
|
|
@@ -199,7 +199,7 @@ const SessionRow = ({
|
|
|
199
199
|
{isLead && (
|
|
200
200
|
<>
|
|
201
201
|
<span style={{ opacity: 0.5 }}>·</span>
|
|
202
|
-
<span className="text-
|
|
202
|
+
<span className="text-indigo-600 dark:text-indigo-400">负责人</span>
|
|
203
203
|
</>
|
|
204
204
|
)}
|
|
205
205
|
</div>
|
|
@@ -210,7 +210,7 @@ const SessionRow = ({
|
|
|
210
210
|
<TooltipTrigger asChild>
|
|
211
211
|
<button
|
|
212
212
|
type="button"
|
|
213
|
-
className={`rounded p-0.5 text-[var(--color-text-muted)] transition-opacity hover:text-
|
|
213
|
+
className={`rounded p-0.5 text-[var(--color-text-muted)] transition-opacity hover:text-indigo-400 ${
|
|
214
214
|
isSelected ? 'opacity-100' : 'opacity-0 group-hover:opacity-100'
|
|
215
215
|
}`}
|
|
216
216
|
onClick={(e) => {
|
|
@@ -21,7 +21,7 @@ export const UnreadCommentsBadge = ({
|
|
|
21
21
|
{totalCount}
|
|
22
22
|
</span>
|
|
23
23
|
{unreadCount > 0 ? (
|
|
24
|
-
<span className="absolute -right-1 -top-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-
|
|
24
|
+
<span className="absolute -right-1 -top-1 flex h-4 min-w-4 items-center justify-center rounded-full bg-indigo-500 px-1 text-[8px] font-bold leading-none text-white shadow-sm">
|
|
25
25
|
{unreadCount}
|
|
26
26
|
</span>
|
|
27
27
|
) : null}
|
|
@@ -223,7 +223,7 @@ const SessionSourceBadge = ({ message }: { message: InboxMessage }): React.JSX.E
|
|
|
223
223
|
className="inline-flex max-w-[180px] items-center truncate rounded-full px-1.5 py-0.5 text-[10px] font-medium"
|
|
224
224
|
title={`${platform}${label}${session?.key ? ` (${session.key})` : ''}`}
|
|
225
225
|
style={{
|
|
226
|
-
backgroundColor: 'rgba(
|
|
226
|
+
backgroundColor: 'rgba(99, 102, 241, 0.12)',
|
|
227
227
|
color: '#93c5fd',
|
|
228
228
|
}}
|
|
229
229
|
>
|
|
@@ -578,7 +578,7 @@ function linkifyTaskIds(text: string, onClick: (taskId: string) => void): React.
|
|
|
578
578
|
<TaskTooltip key={i} taskId={taskId}>
|
|
579
579
|
<button
|
|
580
580
|
type="button"
|
|
581
|
-
className="inline cursor-pointer font-medium text-
|
|
581
|
+
className="inline cursor-pointer font-medium text-indigo-600 hover:underline dark:text-indigo-400"
|
|
582
582
|
onClick={(e) => {
|
|
583
583
|
e.stopPropagation();
|
|
584
584
|
onClick(taskId);
|
|
@@ -636,7 +636,7 @@ const TaskRecipientBadge = ({
|
|
|
636
636
|
className="inline-flex items-center rounded px-1.5 py-0.5 text-[10px] font-medium tracking-wide"
|
|
637
637
|
style={{
|
|
638
638
|
backgroundColor: 'rgba(96, 165, 250, 0.14)',
|
|
639
|
-
color: '#
|
|
639
|
+
color: '#818cf8',
|
|
640
640
|
border: '1px solid rgba(96, 165, 250, 0.3)',
|
|
641
641
|
}}
|
|
642
642
|
>
|
|
@@ -1209,7 +1209,7 @@ export const ActivityItem = memo(
|
|
|
1209
1209
|
<div className="flex min-w-0 flex-1 items-center gap-2 overflow-hidden">
|
|
1210
1210
|
{isUnread ? (
|
|
1211
1211
|
<span
|
|
1212
|
-
className="size-2 shrink-0 rounded-full bg-
|
|
1212
|
+
className="size-2 shrink-0 rounded-full bg-indigo-500"
|
|
1213
1213
|
title="未读"
|
|
1214
1214
|
aria-hidden
|
|
1215
1215
|
/>
|
|
@@ -1239,7 +1239,7 @@ export const ActivityItem = memo(
|
|
|
1239
1239
|
<button
|
|
1240
1240
|
type="button"
|
|
1241
1241
|
aria-label="展开消息"
|
|
1242
|
-
className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-
|
|
1242
|
+
className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-indigo-500/50 group-hover:opacity-100"
|
|
1243
1243
|
style={{ color: CARD_ICON_MUTED }}
|
|
1244
1244
|
onClick={(e) => {
|
|
1245
1245
|
e.stopPropagation();
|
|
@@ -1279,7 +1279,7 @@ export const ActivityItem = memo(
|
|
|
1279
1279
|
<div className="flex min-w-0 items-center gap-2">
|
|
1280
1280
|
{isUnread ? (
|
|
1281
1281
|
<span
|
|
1282
|
-
className="size-2 shrink-0 rounded-full bg-
|
|
1282
|
+
className="size-2 shrink-0 rounded-full bg-indigo-500"
|
|
1283
1283
|
title="未读"
|
|
1284
1284
|
aria-hidden
|
|
1285
1285
|
/>
|
|
@@ -1322,7 +1322,7 @@ export const ActivityItem = memo(
|
|
|
1322
1322
|
<button
|
|
1323
1323
|
type="button"
|
|
1324
1324
|
aria-label="展开消息"
|
|
1325
|
-
className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-
|
|
1325
|
+
className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-indigo-500/50 group-hover:opacity-100"
|
|
1326
1326
|
style={{ color: CARD_ICON_MUTED }}
|
|
1327
1327
|
onClick={(e) => {
|
|
1328
1328
|
e.stopPropagation();
|
|
@@ -1361,7 +1361,7 @@ export const ActivityItem = memo(
|
|
|
1361
1361
|
<>
|
|
1362
1362
|
{isUnread ? (
|
|
1363
1363
|
<span
|
|
1364
|
-
className="size-2 shrink-0 rounded-full bg-
|
|
1364
|
+
className="size-2 shrink-0 rounded-full bg-indigo-500"
|
|
1365
1365
|
title="未读"
|
|
1366
1366
|
aria-hidden
|
|
1367
1367
|
/>
|
|
@@ -1406,7 +1406,7 @@ export const ActivityItem = memo(
|
|
|
1406
1406
|
<button
|
|
1407
1407
|
type="button"
|
|
1408
1408
|
aria-label="展开消息"
|
|
1409
|
-
className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-
|
|
1409
|
+
className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-indigo-500/50 group-hover:opacity-100"
|
|
1410
1410
|
style={{ color: CARD_ICON_MUTED }}
|
|
1411
1411
|
onClick={(e) => {
|
|
1412
1412
|
e.stopPropagation();
|
|
@@ -762,11 +762,11 @@ export const ActivityTimeline = React.memo(function ActivityTimeline({
|
|
|
762
762
|
className="flex items-center gap-3"
|
|
763
763
|
style={{ paddingTop: 45, paddingBottom: 45 }}
|
|
764
764
|
>
|
|
765
|
-
<div className="h-px flex-1 bg-
|
|
766
|
-
<span className="whitespace-nowrap text-[11px] font-medium text-
|
|
765
|
+
<div className="h-px flex-1 bg-indigo-600/30 dark:bg-indigo-400/30" />
|
|
766
|
+
<span className="whitespace-nowrap text-[11px] font-medium text-indigo-600 dark:text-indigo-400">
|
|
767
767
|
New session
|
|
768
768
|
</span>
|
|
769
|
-
<div className="h-px flex-1 bg-
|
|
769
|
+
<div className="h-px flex-1 bg-indigo-600/30 dark:bg-indigo-400/30" />
|
|
770
770
|
</div>
|
|
771
771
|
);
|
|
772
772
|
case 'compaction-divider':
|
|
@@ -933,7 +933,7 @@ export const ActivityTimeline = React.memo(function ActivityTimeline({
|
|
|
933
933
|
<span className="text-[11px] tabular-nums text-[var(--color-text-muted)]">
|
|
934
934
|
+{hiddenCount} older
|
|
935
935
|
</span>
|
|
936
|
-
<span className="h-3 w-px bg-
|
|
936
|
+
<span className="h-3 w-px bg-indigo-600/30 dark:bg-indigo-400/30" />
|
|
937
937
|
<button
|
|
938
938
|
onClick={handleShowMore}
|
|
939
939
|
className="rounded-full px-2.5 py-0.5 text-[11px] font-medium text-[var(--color-text-secondary)] transition-all hover:bg-[rgba(255,255,255,0.08)] hover:text-[var(--color-text)]"
|
|
@@ -942,7 +942,7 @@ export const ActivityTimeline = React.memo(function ActivityTimeline({
|
|
|
942
942
|
</button>
|
|
943
943
|
{hiddenCount > MESSAGES_PAGE_SIZE && (
|
|
944
944
|
<>
|
|
945
|
-
<span className="h-3 w-px bg-
|
|
945
|
+
<span className="h-3 w-px bg-indigo-600/30 dark:bg-indigo-400/30" />
|
|
946
946
|
<button
|
|
947
947
|
onClick={handleShowAll}
|
|
948
948
|
className="rounded-full px-2.5 py-0.5 text-[11px] text-[var(--color-text-muted)] transition-all hover:bg-[rgba(255,255,255,0.08)] hover:text-[var(--color-text-secondary)]"
|
|
@@ -848,7 +848,7 @@ const LeadThoughtsGroupRowComponent = ({
|
|
|
848
848
|
<button
|
|
849
849
|
type="button"
|
|
850
850
|
aria-label="Expand thoughts"
|
|
851
|
-
className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-
|
|
851
|
+
className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-indigo-500/50 group-hover:opacity-100"
|
|
852
852
|
style={{ color: CARD_ICON_MUTED }}
|
|
853
853
|
onClick={(e) => {
|
|
854
854
|
e.stopPropagation();
|
|
@@ -933,7 +933,7 @@ const LeadThoughtsGroupRowComponent = ({
|
|
|
933
933
|
<button
|
|
934
934
|
type="button"
|
|
935
935
|
aria-label="Expand thoughts"
|
|
936
|
-
className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-
|
|
936
|
+
className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-indigo-500/50 group-hover:opacity-100"
|
|
937
937
|
style={{ color: CARD_ICON_MUTED }}
|
|
938
938
|
onClick={(e) => {
|
|
939
939
|
e.stopPropagation();
|
|
@@ -1032,7 +1032,7 @@ const LeadThoughtsGroupRowComponent = ({
|
|
|
1032
1032
|
<button
|
|
1033
1033
|
type="button"
|
|
1034
1034
|
aria-label="Expand thoughts"
|
|
1035
|
-
className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-
|
|
1035
|
+
className="absolute right-0 top-1/2 -translate-y-1/2 rounded p-0.5 opacity-0 transition-opacity focus-visible:opacity-100 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-indigo-500/50 group-hover:opacity-100"
|
|
1036
1036
|
style={{ color: CARD_ICON_MUTED }}
|
|
1037
1037
|
onClick={(e) => {
|
|
1038
1038
|
e.stopPropagation();
|
|
@@ -34,15 +34,15 @@ export const ReplyQuoteBlock = ({
|
|
|
34
34
|
return (
|
|
35
35
|
<div className="space-y-2">
|
|
36
36
|
{/* Quote block — styled like SendMessageDialog */}
|
|
37
|
-
<div className="relative overflow-hidden rounded-md border border-
|
|
37
|
+
<div className="relative overflow-hidden rounded-md border border-indigo-400/20 bg-blue-100/40 py-2 pl-3 pr-2 dark:border-indigo-500/20 dark:bg-blue-950/20">
|
|
38
38
|
{/* Decorative quotation mark */}
|
|
39
|
-
<span className="pointer-events-none absolute -right-1 top-1/2 -translate-y-1/2 select-none font-serif text-[48px] leading-none text-
|
|
39
|
+
<span className="pointer-events-none absolute -right-1 top-1/2 -translate-y-1/2 select-none font-serif text-[48px] leading-none text-indigo-600/[0.08] dark:text-indigo-400/[0.08]">
|
|
40
40
|
“
|
|
41
41
|
</span>
|
|
42
42
|
|
|
43
43
|
{/* "Replying to" + MemberBadge */}
|
|
44
44
|
<div className="mb-1 flex items-center gap-1.5">
|
|
45
|
-
<span className="text-[10px] text-
|
|
45
|
+
<span className="text-[10px] text-indigo-600/60 dark:text-indigo-300/60">Replying to</span>
|
|
46
46
|
<MemberBadge name={reply.agentName} color={memberColor} size="sm" />
|
|
47
47
|
</div>
|
|
48
48
|
|
|
@@ -59,7 +59,7 @@ export const ReplyQuoteBlock = ({
|
|
|
59
59
|
{isLong ? (
|
|
60
60
|
<button
|
|
61
61
|
type="button"
|
|
62
|
-
className="mt-0.5 text-[10px] text-
|
|
62
|
+
className="mt-0.5 text-[10px] text-indigo-600/60 hover:text-blue-700 dark:text-indigo-400/60 dark:hover:text-indigo-300"
|
|
63
63
|
onClick={() => setExpanded((v) => !v)}
|
|
64
64
|
>
|
|
65
65
|
{expanded ? 'less' : 'more'}
|
|
@@ -342,7 +342,7 @@ export const CreateTaskDialog = ({
|
|
|
342
342
|
type="button"
|
|
343
343
|
className={`flex w-full items-center gap-2 rounded px-2 py-1.5 text-left text-xs transition-colors ${
|
|
344
344
|
isSelected
|
|
345
|
-
? 'bg-
|
|
345
|
+
? 'bg-indigo-500/15 text-indigo-300'
|
|
346
346
|
: 'text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-raised)]'
|
|
347
347
|
}`}
|
|
348
348
|
onClick={() => toggleBlockedBy(t.id)}
|
|
@@ -350,7 +350,7 @@ export const CreateTaskDialog = ({
|
|
|
350
350
|
<span
|
|
351
351
|
className={`flex size-3.5 shrink-0 items-center justify-center rounded-sm border text-[9px] ${
|
|
352
352
|
isSelected
|
|
353
|
-
? 'border-
|
|
353
|
+
? 'border-indigo-400 bg-indigo-500/30 text-indigo-300'
|
|
354
354
|
: 'border-[var(--color-border-emphasis)]'
|
|
355
355
|
}`}
|
|
356
356
|
>
|
|
@@ -2819,7 +2819,7 @@ export const LaunchTeamDialog = (props: LaunchTeamDialogProps): React.JSX.Elemen
|
|
|
2819
2819
|
) ? (
|
|
2820
2820
|
<button
|
|
2821
2821
|
type="button"
|
|
2822
|
-
className="shrink-0 rounded bg-
|
|
2822
|
+
className="shrink-0 rounded bg-indigo-600 px-2 py-0.5 text-[11px] font-medium text-white transition-colors hover:bg-indigo-500"
|
|
2823
2823
|
onClick={() => {
|
|
2824
2824
|
closeDialog();
|
|
2825
2825
|
openDashboard();
|
|
@@ -25,7 +25,7 @@ const PLATFORM_OPTIONS: PlatformOption[] = [
|
|
|
25
25
|
{
|
|
26
26
|
key: 'feishu',
|
|
27
27
|
label: '飞书 / Lark',
|
|
28
|
-
color: 'bg-blue-50 dark:bg-blue-900/30 text-
|
|
28
|
+
color: 'bg-blue-50 dark:bg-blue-900/30 text-indigo-600 dark:text-indigo-400',
|
|
29
29
|
icon: 'qr',
|
|
30
30
|
},
|
|
31
31
|
{
|
|
@@ -148,7 +148,7 @@ function FieldInput({
|
|
|
148
148
|
type="checkbox"
|
|
149
149
|
checked={!!value}
|
|
150
150
|
onChange={(e) => onChange(e.target.checked)}
|
|
151
|
-
className="h-4 w-4 rounded border-gray-300 text-
|
|
151
|
+
className="h-4 w-4 rounded border-gray-300 text-indigo-600 focus:ring-indigo-500 dark:border-gray-600"
|
|
152
152
|
/>
|
|
153
153
|
<span className="text-sm text-gray-700 dark:text-gray-300">{field.label}</span>
|
|
154
154
|
{field.hint && <span className="text-[11px] text-gray-400">({field.hint})</span>}
|
|
@@ -224,7 +224,7 @@ export default function PlatformSetupQR({
|
|
|
224
224
|
|
|
225
225
|
{phase === 'loading' && (
|
|
226
226
|
<div className="flex flex-col items-center gap-3 py-8">
|
|
227
|
-
<Loader2 size={32} className="animate-spin text-
|
|
227
|
+
<Loader2 size={32} className="animate-spin text-indigo-500" />
|
|
228
228
|
<p className="text-sm text-gray-500">正在生成二维码...</p>
|
|
229
229
|
</div>
|
|
230
230
|
)}
|
|
@@ -247,12 +247,12 @@ export default function PlatformSetupQR({
|
|
|
247
247
|
</div>
|
|
248
248
|
)}
|
|
249
249
|
{phase === 'scanned' && (
|
|
250
|
-
<div className="flex items-center gap-2 text-xs text-
|
|
250
|
+
<div className="flex items-center gap-2 text-xs text-indigo-500">
|
|
251
251
|
<Loader2 size={12} className="animate-spin" /> 等待确认...
|
|
252
252
|
</div>
|
|
253
253
|
)}
|
|
254
254
|
{phase === 'saving' && (
|
|
255
|
-
<div className="flex items-center gap-2 text-xs text-
|
|
255
|
+
<div className="flex items-center gap-2 text-xs text-indigo-500">
|
|
256
256
|
<Loader2 size={12} className="animate-spin" /> 正在保存配置...
|
|
257
257
|
</div>
|
|
258
258
|
)}
|
|
@@ -286,7 +286,7 @@ export default function PlatformSetupQR({
|
|
|
286
286
|
|
|
287
287
|
{phase === 'restarting' && (
|
|
288
288
|
<div className="flex flex-col items-center gap-3 py-4">
|
|
289
|
-
<Loader2 size={32} className="animate-spin text-
|
|
289
|
+
<Loader2 size={32} className="animate-spin text-indigo-500" />
|
|
290
290
|
<p className="text-sm text-gray-600 dark:text-gray-400">正在重启服务...</p>
|
|
291
291
|
</div>
|
|
292
292
|
)}
|