@yancyyu/openhermit 1.6.39 → 1.6.41
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-Br0X83Jf.js} +3 -3
- package/dist-renderer/assets/{TeamGraphOverlay-DqhQzcTr.js → TeamGraphOverlay-DHMTbZPZ.js} +1 -1
- package/dist-renderer/assets/{_basePickBy-B7kSYPxr.js → _basePickBy-DzIiX7yH.js} +1 -1
- package/dist-renderer/assets/{_baseUniq-CnjxqwAk.js → _baseUniq-6hZuzTLU.js} +1 -1
- package/dist-renderer/assets/{arc-CLeZuINP.js → arc-CXgO6fx_.js} +1 -1
- package/dist-renderer/assets/{architectureDiagram-VXUJARFQ-QKtqaqdY.js → architectureDiagram-VXUJARFQ-DKWgtDHr.js} +1 -1
- package/dist-renderer/assets/{blockDiagram-VD42YOAC-BqdrzO_f.js → blockDiagram-VD42YOAC-DOMUcC40.js} +1 -1
- package/dist-renderer/assets/{c4Diagram-YG6GDRKO-gwPlCxDC.js → c4Diagram-YG6GDRKO-B_k2L7qX.js} +1 -1
- package/dist-renderer/assets/channel-D0XS_akr.js +1 -0
- package/dist-renderer/assets/{chunk-4BX2VUAB-C6XLurL4.js → chunk-4BX2VUAB-BeD_ccFy.js} +1 -1
- package/dist-renderer/assets/{chunk-55IACEB6-Ds6quhEP.js → chunk-55IACEB6-ClZfkA5w.js} +1 -1
- package/dist-renderer/assets/{chunk-B4BG7PRW-5UlA1_e9.js → chunk-B4BG7PRW-5XluxXsn.js} +1 -1
- package/dist-renderer/assets/{chunk-DI55MBZ5-ywFrqIsY.js → chunk-DI55MBZ5-BzIjjNVm.js} +1 -1
- package/dist-renderer/assets/{chunk-FMBD7UC4-C7ifUA17.js → chunk-FMBD7UC4-HgH3MK_H.js} +1 -1
- package/dist-renderer/assets/{chunk-QN33PNHL-BxGCo80U.js → chunk-QN33PNHL-WeC5T3Ba.js} +1 -1
- package/dist-renderer/assets/{chunk-QZHKN3VN-B2CuaZs6.js → chunk-QZHKN3VN-Cu1ApHfW.js} +1 -1
- package/dist-renderer/assets/{chunk-TZMSLE5B-Ds1hInvp.js → chunk-TZMSLE5B-BOhlynJM.js} +1 -1
- package/dist-renderer/assets/classDiagram-2ON5EDUG-D13Ffs0U.js +1 -0
- package/dist-renderer/assets/classDiagram-v2-WZHVMYZB-D13Ffs0U.js +1 -0
- package/dist-renderer/assets/clone-B1ZrxI1D.js +1 -0
- package/dist-renderer/assets/{cose-bilkent-S5V4N54A-Cz1GVtLp.js → cose-bilkent-S5V4N54A-DGZSihDQ.js} +1 -1
- package/dist-renderer/assets/{dagre-6UL2VRFP-BrmR-P4h.js → dagre-6UL2VRFP-CnxwCbku.js} +1 -1
- package/dist-renderer/assets/{diagram-PSM6KHXK-DbNjC5Rg.js → diagram-PSM6KHXK-DsIhoxdI.js} +1 -1
- package/dist-renderer/assets/{diagram-QEK2KX5R-qkRX5_Mq.js → diagram-QEK2KX5R-Cmh9KUF5.js} +1 -1
- package/dist-renderer/assets/{diagram-S2PKOQOG-CyL5rCv2.js → diagram-S2PKOQOG-CKxV456A.js} +1 -1
- package/dist-renderer/assets/{erDiagram-Q2GNP2WA-Dox3-bA5.js → erDiagram-Q2GNP2WA-EnvYjOjc.js} +1 -1
- package/dist-renderer/assets/{flowDiagram-NV44I4VS-BtkaxlDL.js → flowDiagram-NV44I4VS-BmNeWY_A.js} +1 -1
- package/dist-renderer/assets/{ganttDiagram-JELNMOA3-Dhy_d9GK.js → ganttDiagram-JELNMOA3-D30fyK-u.js} +1 -1
- package/dist-renderer/assets/{gitGraphDiagram-V2S2FVAM-B5XRhIQA.js → gitGraphDiagram-V2S2FVAM-CrUNiYg1.js} +1 -1
- package/dist-renderer/assets/{graph-CsoEwUhS.js → graph-CY1gTfTb.js} +1 -1
- package/dist-renderer/assets/{index-Bu2R-Se7.js → index-59r209c1.js} +39 -39
- package/dist-renderer/assets/{index-NhHNs2Oo.js → index-9_hO4N1e.js} +1 -1
- package/dist-renderer/assets/{index-BWPWmJNo.js → index-BC2hXmg_.js} +1 -1
- package/dist-renderer/assets/{index-D-3KgskL.js → index-CaEbzwAU.js} +1 -1
- package/dist-renderer/assets/{index-DGEBzLNT.js → index-D5K-SjBG.js} +1 -1
- package/dist-renderer/assets/{index-h17WuEyf.js → index-DMR9B1UP.js} +1 -1
- package/dist-renderer/assets/index-iyjkpSus.css +32 -0
- package/dist-renderer/assets/{infoDiagram-HS3SLOUP-hMGmNojH.js → infoDiagram-HS3SLOUP-By_XUlcD.js} +1 -1
- package/dist-renderer/assets/{journeyDiagram-XKPGCS4Q-DXV2rBDl.js → journeyDiagram-XKPGCS4Q-BM1LJE9m.js} +1 -1
- package/dist-renderer/assets/{kanban-definition-3W4ZIXB7-Bf99WLRy.js → kanban-definition-3W4ZIXB7-DHIW3aTA.js} +1 -1
- package/dist-renderer/assets/{layout-C3XWrpwo.js → layout-DAKiL_Mo.js} +1 -1
- package/dist-renderer/assets/{linear-OEEcn8KN.js → linear-DwOaRYea.js} +1 -1
- package/dist-renderer/assets/{mindmap-definition-VGOIOE7T-Dpi3S2x4.js → mindmap-definition-VGOIOE7T-b7bJ2cha.js} +1 -1
- package/dist-renderer/assets/{pieDiagram-ADFJNKIX-xTPPhtNx.js → pieDiagram-ADFJNKIX-DxyL9Zr2.js} +1 -1
- package/dist-renderer/assets/{quadrantDiagram-AYHSOK5B-euniyDlz.js → quadrantDiagram-AYHSOK5B-CR33pHlF.js} +1 -1
- package/dist-renderer/assets/{requirementDiagram-UZGBJVZJ-D9Uiw4kF.js → requirementDiagram-UZGBJVZJ-BAiSRSlh.js} +1 -1
- package/dist-renderer/assets/{sankeyDiagram-TZEHDZUN-CySU4nED.js → sankeyDiagram-TZEHDZUN-C8JmDjoa.js} +1 -1
- package/dist-renderer/assets/{sequenceDiagram-WL72ISMW-JVGpET6V.js → sequenceDiagram-WL72ISMW-c1d0Wi1m.js} +1 -1
- package/dist-renderer/assets/{stateDiagram-FKZM4ZOC-B2FY5qqi.js → stateDiagram-FKZM4ZOC-nT8BiH2O.js} +1 -1
- package/dist-renderer/assets/{stateDiagram-v2-4FDKWEC3-DcoMiR8H.js → stateDiagram-v2-4FDKWEC3-Dmibmlso.js} +1 -1
- package/dist-renderer/assets/{timeline-definition-IT6M3QCI-DmycNUUe.js → timeline-definition-IT6M3QCI-DpoRepUA.js} +1 -1
- package/dist-renderer/assets/{treemap-GDKQZRPO-DPq4gZuB.js → treemap-GDKQZRPO-C41UJeIH.js} +1 -1
- package/dist-renderer/assets/{xychartDiagram-PRI3JC2R-J6VVJzRq.js → xychartDiagram-PRI3JC2R-KMjGARKN.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/SessionContextPanel/DirectoryTree/DirectoryTreeNode.tsx +1 -1
- package/src/renderer/components/chat/SessionContextPanel/items/ClaudeMdItem.tsx +1 -1
- package/src/renderer/components/chat/SessionContextPanel/items/MentionedFileItem.tsx +1 -1
- package/src/renderer/components/chat/SessionContextPanel/items/TaskCoordinationItem.tsx +1 -1
- package/src/renderer/components/chat/SessionContextPanel/items/ThinkingTextItem.tsx +1 -1
- package/src/renderer/components/chat/SessionContextPanel/items/ToolOutputItem.tsx +1 -1
- package/src/renderer/components/chat/SessionContextPanel/items/UserMessageItem.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 +8 -8
- 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 +4 -4
- package/src/renderer/components/search/CommandPalette.tsx +4 -4
- package/src/renderer/components/settings/SettingsTabs.tsx +1 -1
- package/src/renderer/components/settings/components/SettingsSelect.tsx +2 -2
- package/src/renderer/components/settings/components/SettingsToggle.tsx +1 -1
- package/src/renderer/components/settings/sections/AdvancedSection.tsx +3 -3
- package/src/renderer/components/settings/sections/CliStatusSection.tsx +1 -1
- package/src/renderer/components/settings/sections/GeneralSection.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/sidebar/taskFiltersState.ts +1 -1
- package/src/renderer/components/system-manager/SystemManagerView.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 +10 -10
- 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/constants/teamColors.ts +5 -5
- package/src/renderer/index.css +18 -18
- package/src/renderer/utils/codemirrorTheme.ts +3 -3
- 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
|
@@ -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
|
)}
|
|
@@ -421,9 +421,9 @@ export const SendMessageDialog = ({
|
|
|
421
421
|
|
|
422
422
|
<div className={quote ? 'flex flex-col' : 'contents'}>
|
|
423
423
|
{quote ? (
|
|
424
|
-
<div className="relative overflow-hidden rounded-t-md border border-b-0 border-
|
|
424
|
+
<div className="relative overflow-hidden rounded-t-md border border-b-0 border-indigo-400/30 bg-blue-100/80 py-2 pl-3 pr-2 dark:border-indigo-500/20 dark:bg-blue-950/20">
|
|
425
425
|
{/* Decorative quotation mark */}
|
|
426
|
-
<span className="pointer-events-none absolute -right-1 top-1/2 -translate-y-1/2 select-none font-serif text-[64px] leading-none text-
|
|
426
|
+
<span className="pointer-events-none absolute -right-1 top-1/2 -translate-y-1/2 select-none font-serif text-[64px] leading-none text-indigo-500/[0.08] dark:text-indigo-400/[0.08]">
|
|
427
427
|
“
|
|
428
428
|
</span>
|
|
429
429
|
|
|
@@ -431,7 +431,7 @@ export const SendMessageDialog = ({
|
|
|
431
431
|
<TooltipTrigger asChild>
|
|
432
432
|
<button
|
|
433
433
|
type="button"
|
|
434
|
-
className="absolute right-1.5 top-1.5 z-10 rounded p-0.5 text-
|
|
434
|
+
className="absolute right-1.5 top-1.5 z-10 rounded p-0.5 text-indigo-400/60 hover:text-indigo-600 dark:text-indigo-300/40 dark:hover:text-blue-200"
|
|
435
435
|
onClick={() => setQuote(undefined)}
|
|
436
436
|
>
|
|
437
437
|
<X size={12} />
|
|
@@ -441,7 +441,7 @@ export const SendMessageDialog = ({
|
|
|
441
441
|
</Tooltip>
|
|
442
442
|
|
|
443
443
|
<div className="mb-1 flex items-center gap-1.5">
|
|
444
|
-
<span className="text-[10px] text-
|
|
444
|
+
<span className="text-[10px] text-indigo-600/70 dark:text-indigo-300/60">
|
|
445
445
|
正在回复
|
|
446
446
|
</span>
|
|
447
447
|
<MemberBadge name={quote.from} color={colorMap.get(quote.from)} size="sm" />
|
|
@@ -458,7 +458,7 @@ export const SendMessageDialog = ({
|
|
|
458
458
|
{isQuoteLong ? (
|
|
459
459
|
<button
|
|
460
460
|
type="button"
|
|
461
|
-
className="mt-0.5 text-[10px] text-
|
|
461
|
+
className="mt-0.5 text-[10px] text-indigo-500 hover:text-blue-700 dark:text-indigo-400/60 dark:hover:text-indigo-300"
|
|
462
462
|
onClick={() => setQuoteExpanded((v) => !v)}
|
|
463
463
|
>
|
|
464
464
|
{quoteExpanded ? '收起' : '展开'}
|
|
@@ -487,7 +487,7 @@ export const SendMessageDialog = ({
|
|
|
487
487
|
cornerAction={
|
|
488
488
|
<button
|
|
489
489
|
type="button"
|
|
490
|
-
className="inline-flex shrink-0 items-center gap-1 rounded-full bg-
|
|
490
|
+
className="inline-flex shrink-0 items-center gap-1 rounded-full bg-indigo-600 px-3 py-1.5 text-[11px] font-medium text-white shadow-sm transition-colors hover:bg-indigo-500 disabled:cursor-not-allowed disabled:opacity-50"
|
|
491
491
|
disabled={!canSend}
|
|
492
492
|
onClick={handleSubmit}
|
|
493
493
|
>
|
|
@@ -33,13 +33,13 @@ export const SkipPermissionsCheckbox: React.FC<SkipPermissionsCheckboxProps> = (
|
|
|
33
33
|
<div
|
|
34
34
|
className="mt-1.5 rounded-md border px-3 py-2 text-xs"
|
|
35
35
|
style={{
|
|
36
|
-
backgroundColor: 'rgba(
|
|
37
|
-
borderColor: 'rgba(
|
|
36
|
+
backgroundColor: 'rgba(99, 102, 241, 0.08)',
|
|
37
|
+
borderColor: 'rgba(99, 102, 241, 0.2)',
|
|
38
38
|
color: 'var(--color-text-secondary)',
|
|
39
39
|
}}
|
|
40
40
|
>
|
|
41
41
|
<div className="flex items-start gap-2">
|
|
42
|
-
<Info className="mt-0.5 size-3.5 shrink-0 text-
|
|
42
|
+
<Info className="mt-0.5 size-3.5 shrink-0 text-indigo-400" />
|
|
43
43
|
<p>启用自主模式后,所有工具都会直接执行,不再逐次请求确认。处理不可信代码时请谨慎。</p>
|
|
44
44
|
</div>
|
|
45
45
|
</div>
|
|
@@ -47,13 +47,13 @@ export const SkipPermissionsCheckbox: React.FC<SkipPermissionsCheckboxProps> = (
|
|
|
47
47
|
<div
|
|
48
48
|
className="mt-1.5 rounded-md border px-3 py-2 text-xs"
|
|
49
49
|
style={{
|
|
50
|
-
backgroundColor: 'rgba(
|
|
51
|
-
borderColor: 'rgba(
|
|
50
|
+
backgroundColor: 'rgba(99, 102, 241, 0.08)',
|
|
51
|
+
borderColor: 'rgba(99, 102, 241, 0.2)',
|
|
52
52
|
color: 'var(--color-text-secondary)',
|
|
53
53
|
}}
|
|
54
54
|
>
|
|
55
55
|
<div className="flex items-start gap-2">
|
|
56
|
-
<Info className="mt-0.5 size-3.5 shrink-0 text-
|
|
56
|
+
<Info className="mt-0.5 size-3.5 shrink-0 text-indigo-400" />
|
|
57
57
|
<p>手动模式:每次工具调用都需要你实时批准或拒绝。</p>
|
|
58
58
|
</div>
|
|
59
59
|
</div>
|
|
@@ -203,7 +203,7 @@ function dotColorForStatus(status: TeamTaskStatus): string {
|
|
|
203
203
|
case 'pending':
|
|
204
204
|
return 'bg-zinc-500';
|
|
205
205
|
case 'in_progress':
|
|
206
|
-
return 'bg-
|
|
206
|
+
return 'bg-indigo-400';
|
|
207
207
|
case 'completed':
|
|
208
208
|
return 'bg-emerald-400';
|
|
209
209
|
case 'deleted':
|
|
@@ -241,7 +241,7 @@ export const TaskAttachments = ({
|
|
|
241
241
|
|
|
242
242
|
{/* Drop zone indicator */}
|
|
243
243
|
{dragOver ? (
|
|
244
|
-
<div className="flex items-center justify-center rounded-md border-2 border-dashed border-
|
|
244
|
+
<div className="flex items-center justify-center rounded-md border-2 border-dashed border-indigo-500/40 bg-indigo-500/5 py-4 text-xs text-indigo-400">
|
|
245
245
|
Drop image here
|
|
246
246
|
</div>
|
|
247
247
|
) : null}
|
|
@@ -228,9 +228,9 @@ export const TaskCommentInput = ({
|
|
|
228
228
|
return (
|
|
229
229
|
<div>
|
|
230
230
|
{replyTo ? (
|
|
231
|
-
<div className="relative overflow-hidden rounded-t-md border border-b-0 border-
|
|
231
|
+
<div className="relative overflow-hidden rounded-t-md border border-b-0 border-indigo-400/30 bg-blue-100/80 py-2 pl-3 pr-2 dark:border-indigo-500/20 dark:bg-blue-950/20">
|
|
232
232
|
{/* Decorative quotation mark */}
|
|
233
|
-
<span className="pointer-events-none absolute -right-1 top-1/2 -translate-y-1/2 select-none font-serif text-[64px] leading-none text-
|
|
233
|
+
<span className="pointer-events-none absolute -right-1 top-1/2 -translate-y-1/2 select-none font-serif text-[64px] leading-none text-indigo-500/[0.08] dark:text-indigo-400/[0.08]">
|
|
234
234
|
“
|
|
235
235
|
</span>
|
|
236
236
|
|
|
@@ -238,7 +238,7 @@ export const TaskCommentInput = ({
|
|
|
238
238
|
<TooltipTrigger asChild>
|
|
239
239
|
<button
|
|
240
240
|
type="button"
|
|
241
|
-
className="absolute right-1.5 top-1.5 z-10 rounded p-0.5 text-
|
|
241
|
+
className="absolute right-1.5 top-1.5 z-10 rounded p-0.5 text-indigo-400/60 hover:text-indigo-600 dark:text-indigo-300/40 dark:hover:text-blue-200"
|
|
242
242
|
onClick={onClearReply}
|
|
243
243
|
>
|
|
244
244
|
<X size={12} />
|
|
@@ -248,7 +248,7 @@ export const TaskCommentInput = ({
|
|
|
248
248
|
</Tooltip>
|
|
249
249
|
|
|
250
250
|
<div className="mb-1 flex items-center gap-1.5">
|
|
251
|
-
<span className="text-[10px] text-
|
|
251
|
+
<span className="text-[10px] text-indigo-600/70 dark:text-indigo-300/60">正在回复</span>
|
|
252
252
|
<MemberBadge name={replyTo.author} color={colorMap.get(replyTo.author)} size="sm" />
|
|
253
253
|
</div>
|
|
254
254
|
<div
|
|
@@ -263,7 +263,7 @@ export const TaskCommentInput = ({
|
|
|
263
263
|
{replyTo.text.length > LONG_QUOTE_THRESHOLD ? (
|
|
264
264
|
<button
|
|
265
265
|
type="button"
|
|
266
|
-
className="mt-0.5 text-[10px] text-
|
|
266
|
+
className="mt-0.5 text-[10px] text-indigo-500 hover:text-blue-700 dark:text-indigo-400/60 dark:hover:text-indigo-300"
|
|
267
267
|
onClick={() => setQuoteExpanded((v) => !v)}
|
|
268
268
|
>
|
|
269
269
|
{quoteExpanded ? '收起' : '展开'}
|
|
@@ -390,7 +390,7 @@ export const TaskCommentInput = ({
|
|
|
390
390
|
</Tooltip>
|
|
391
391
|
<button
|
|
392
392
|
type="button"
|
|
393
|
-
className="inline-flex shrink-0 items-center gap-1 rounded-full bg-
|
|
393
|
+
className="inline-flex shrink-0 items-center gap-1 rounded-full bg-indigo-600 px-3 py-1.5 text-[11px] font-medium text-white shadow-sm transition-colors hover:bg-indigo-500 disabled:cursor-not-allowed disabled:opacity-50"
|
|
394
394
|
disabled={!canSubmit}
|
|
395
395
|
onClick={() => void handleSubmit()}
|
|
396
396
|
>
|
|
@@ -223,7 +223,7 @@ export const TaskCommentsSection = ({
|
|
|
223
223
|
comment.type === 'review_approved'
|
|
224
224
|
? 'border-y border-emerald-500/20 bg-emerald-500/5'
|
|
225
225
|
: comment.type === 'review_request'
|
|
226
|
-
? 'border-y border-
|
|
226
|
+
? 'border-y border-indigo-500/20 bg-indigo-500/5'
|
|
227
227
|
: '',
|
|
228
228
|
].join(' ')}
|
|
229
229
|
style={
|
|
@@ -244,7 +244,7 @@ export const TaskCommentsSection = ({
|
|
|
244
244
|
>
|
|
245
245
|
<div className="mb-1 flex items-center gap-2 text-[10px] text-[var(--color-text-muted)]">
|
|
246
246
|
{unreadCommentIds?.has(comment.id) ? (
|
|
247
|
-
<span className="size-2 shrink-0 rounded-full bg-
|
|
247
|
+
<span className="size-2 shrink-0 rounded-full bg-indigo-500" />
|
|
248
248
|
) : null}
|
|
249
249
|
<MemberBadge
|
|
250
250
|
name={comment.author}
|
|
@@ -257,7 +257,7 @@ export const TaskCommentsSection = ({
|
|
|
257
257
|
已批准
|
|
258
258
|
</span>
|
|
259
259
|
) : comment.type === 'review_request' ? (
|
|
260
|
-
<span className="inline-flex items-center gap-0.5 rounded-full bg-
|
|
260
|
+
<span className="inline-flex items-center gap-0.5 rounded-full bg-indigo-500/15 px-1.5 py-0.5 text-[10px] font-medium text-indigo-600 dark:text-indigo-400">
|
|
261
261
|
<Eye size={10} />
|
|
262
262
|
已请求审查
|
|
263
263
|
</span>
|
|
@@ -440,7 +440,7 @@ export const TaskCommentsSection = ({
|
|
|
440
440
|
cornerAction={
|
|
441
441
|
<button
|
|
442
442
|
type="button"
|
|
443
|
-
className="inline-flex shrink-0 items-center gap-1 rounded-full bg-
|
|
443
|
+
className="inline-flex shrink-0 items-center gap-1 rounded-full bg-indigo-600 px-3 py-1.5 text-[11px] font-medium text-white shadow-sm transition-colors hover:bg-indigo-500 disabled:cursor-not-allowed disabled:opacity-50"
|
|
444
444
|
disabled={!canSubmit}
|
|
445
445
|
onClick={() => void handleSubmit()}
|
|
446
446
|
>
|
|
@@ -821,7 +821,7 @@ export const TaskDetailDialog = ({
|
|
|
821
821
|
className={`flex items-center justify-between rounded-md px-3 py-2 text-xs ${
|
|
822
822
|
currentTask.needsClarification === 'user'
|
|
823
823
|
? 'border border-red-500/20 bg-red-500/10 text-red-400'
|
|
824
|
-
: 'border border-
|
|
824
|
+
: 'border border-indigo-500/20 bg-indigo-500/10 text-indigo-400'
|
|
825
825
|
}`}
|
|
826
826
|
>
|
|
827
827
|
<span className="flex items-center gap-1.5">
|
|
@@ -953,7 +953,7 @@ export const TaskDetailDialog = ({
|
|
|
953
953
|
|
|
954
954
|
{blocksIds.length > 0 ? (
|
|
955
955
|
<div className="flex flex-wrap items-center gap-1.5">
|
|
956
|
-
<span className="inline-flex items-center gap-0.5 text-xs text-
|
|
956
|
+
<span className="inline-flex items-center gap-0.5 text-xs text-indigo-600 dark:text-indigo-400">
|
|
957
957
|
<ArrowRightFromLine size={12} />
|
|
958
958
|
阻塞
|
|
959
959
|
</span>
|
|
@@ -971,7 +971,7 @@ export const TaskDetailDialog = ({
|
|
|
971
971
|
className={`inline-flex items-center rounded px-1.5 py-0.5 text-[10px] font-medium transition-colors ${
|
|
972
972
|
isCompleted
|
|
973
973
|
? 'bg-emerald-500/15 text-emerald-700 hover:bg-emerald-500/25 dark:text-emerald-400'
|
|
974
|
-
: 'bg-
|
|
974
|
+
: 'bg-indigo-500/15 text-indigo-600 hover:bg-indigo-500/25 dark:text-indigo-400'
|
|
975
975
|
} cursor-pointer`}
|
|
976
976
|
onClick={() => handleDependencyClick(id)}
|
|
977
977
|
>
|
|
@@ -589,7 +589,7 @@ const RootDropZone = React.forwardRef<
|
|
|
589
589
|
<div
|
|
590
590
|
ref={combinedRef}
|
|
591
591
|
className={`scrollbar-thin h-full overflow-y-auto transition-colors ${
|
|
592
|
-
isDropTarget ? 'bg-
|
|
592
|
+
isDropTarget ? 'bg-indigo-400/5 ring-1 ring-inset ring-indigo-400/30' : ''
|
|
593
593
|
}`}
|
|
594
594
|
role="tree"
|
|
595
595
|
>
|
|
@@ -709,8 +709,8 @@ const DraggableTreeItem = React.memo(
|
|
|
709
709
|
className={`flex h-full cursor-pointer select-none items-center gap-1 truncate px-2 text-xs transition-colors hover:bg-surface-raised ${
|
|
710
710
|
isSelected ? 'bg-surface-raised text-text' : 'text-text-secondary'
|
|
711
711
|
} ${isDragging ? 'opacity-30' : ''} ${
|
|
712
|
-
isDropTarget ? 'rounded bg-
|
|
713
|
-
} ${isInsideDropTarget && !isDropTarget ? 'border-l-2 border-l-
|
|
712
|
+
isDropTarget ? 'rounded bg-indigo-400/10 ring-2 ring-indigo-400/50' : ''
|
|
713
|
+
} ${isInsideDropTarget && !isDropTarget ? 'border-l-2 border-l-indigo-400/40 bg-indigo-400/5' : ''}`}
|
|
714
714
|
style={{ paddingLeft: `${visualDepth * INDENT_PX + 8}px` }}
|
|
715
715
|
onClick={handleClick}
|
|
716
716
|
onKeyDown={handleKeyDown}
|
|
@@ -843,7 +843,7 @@ const InlineRenameInput = ({
|
|
|
843
843
|
}}
|
|
844
844
|
onBlur={() => requestAnimationFrame(() => inputRef.current?.focus())}
|
|
845
845
|
onClick={(e) => e.stopPropagation()}
|
|
846
|
-
className="min-w-0 flex-1 rounded border border-
|
|
846
|
+
className="min-w-0 flex-1 rounded border border-indigo-400/50 bg-surface px-1 py-0 text-xs text-text outline-none focus:ring-1 focus:ring-indigo-400/50"
|
|
847
847
|
/>
|
|
848
848
|
);
|
|
849
849
|
};
|
|
@@ -76,7 +76,7 @@ const SearchToggleButton = React.memo(function SearchToggleButton({
|
|
|
76
76
|
className={cn(
|
|
77
77
|
'flex size-[22px] items-center justify-center rounded transition-colors',
|
|
78
78
|
active
|
|
79
|
-
? 'bg-
|
|
79
|
+
? 'bg-indigo-500/20 text-indigo-400'
|
|
80
80
|
: 'text-[var(--color-text-muted)] hover:bg-[var(--color-surface-raised)] hover:text-[var(--color-text-secondary)]'
|
|
81
81
|
)}
|
|
82
82
|
onClick={onClick}
|
|
@@ -107,7 +107,7 @@ export const MarkdownSplitView = React.memo(function MarkdownSplitView({
|
|
|
107
107
|
// eslint-disable-next-line jsx-a11y/no-static-element-interactions -- resize handle
|
|
108
108
|
<div
|
|
109
109
|
className={`shrink-0 cursor-col-resize border-x border-border transition-colors ${
|
|
110
|
-
isResizing ? 'bg-
|
|
110
|
+
isResizing ? 'bg-indigo-500/50' : 'hover:bg-indigo-500/30'
|
|
111
111
|
}`}
|
|
112
112
|
style={{ width: HANDLE_WIDTH }}
|
|
113
113
|
onMouseDown={handleMouseDown}
|
|
@@ -121,7 +121,7 @@ export const NewFileDialog = ({
|
|
|
121
121
|
onKeyDown={handleKeyDown}
|
|
122
122
|
onBlur={() => requestAnimationFrame(() => inputRef.current?.focus())}
|
|
123
123
|
placeholder={type === 'file' ? '文件名...' : '文件夹名...'}
|
|
124
|
-
className="min-w-0 flex-1 rounded border border-border-emphasis bg-surface px-1.5 py-0.5 text-xs text-text outline-none focus:border-
|
|
124
|
+
className="min-w-0 flex-1 rounded border border-border-emphasis bg-surface px-1.5 py-0.5 text-xs text-text outline-none focus:border-indigo-500"
|
|
125
125
|
aria-label={type === 'file' ? '新文件名' : '新文件夹名'}
|
|
126
126
|
/>
|
|
127
127
|
</div>
|
|
@@ -720,7 +720,7 @@ export const ProjectEditorOverlay = ({
|
|
|
720
720
|
|
|
721
721
|
{/* External change banner */}
|
|
722
722
|
{activeTabId && externalChanges[activeTabId] && (
|
|
723
|
-
<div className="flex shrink-0 items-center gap-2 border-b border-
|
|
723
|
+
<div className="flex shrink-0 items-center gap-2 border-b border-indigo-400/30 bg-blue-100/50 px-3 py-1.5 text-xs text-blue-700 dark:border-indigo-500/30 dark:bg-indigo-500/10 dark:text-indigo-300">
|
|
724
724
|
<RefreshCw className="size-3.5 shrink-0" />
|
|
725
725
|
<span>
|
|
726
726
|
{externalChanges[activeTabId] === 'delete'
|
|
@@ -193,7 +193,7 @@ export const SearchInFilesPanel = ({
|
|
|
193
193
|
onClick={handleCaseSensitiveToggle}
|
|
194
194
|
className={`rounded px-1.5 py-0.5 text-[10px] font-medium transition-colors ${
|
|
195
195
|
caseSensitive
|
|
196
|
-
? 'bg-
|
|
196
|
+
? 'bg-indigo-500/20 text-indigo-400'
|
|
197
197
|
: 'text-text-muted hover:bg-surface-raised'
|
|
198
198
|
}`}
|
|
199
199
|
aria-label="区分大小写"
|
|
@@ -91,7 +91,7 @@ export const KanbanFilterPopover = ({
|
|
|
91
91
|
>
|
|
92
92
|
<Filter size={14} />
|
|
93
93
|
{activeCount > 0 && (
|
|
94
|
-
<span className="absolute -right-1 -top-1 flex size-4 items-center justify-center rounded-full bg-
|
|
94
|
+
<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">
|
|
95
95
|
{activeCount}
|
|
96
96
|
</span>
|
|
97
97
|
)}
|
|
@@ -111,7 +111,7 @@ export const KanbanFilterPopover = ({
|
|
|
111
111
|
type="button"
|
|
112
112
|
className={`w-full rounded-md px-2 py-1.5 text-left text-xs transition-colors ${
|
|
113
113
|
filter.sessionId === null
|
|
114
|
-
? 'bg-
|
|
114
|
+
? 'bg-indigo-500/15 text-indigo-300'
|
|
115
115
|
: 'text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-raised)]'
|
|
116
116
|
}`}
|
|
117
117
|
onClick={() => handleSessionSelect(null)}
|
|
@@ -128,12 +128,12 @@ export const KanbanFilterPopover = ({
|
|
|
128
128
|
type="button"
|
|
129
129
|
className={`flex w-full items-center gap-1.5 rounded-md px-2 py-1.5 text-left text-xs transition-colors ${
|
|
130
130
|
isSelected
|
|
131
|
-
? 'bg-
|
|
131
|
+
? 'bg-indigo-500/15 text-indigo-300'
|
|
132
132
|
: 'text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-raised)]'
|
|
133
133
|
}`}
|
|
134
134
|
onClick={() => handleSessionSelect(isSelected ? null : session.id)}
|
|
135
135
|
>
|
|
136
|
-
{isLead && <Crown size={11} className="shrink-0 text-
|
|
136
|
+
{isLead && <Crown size={11} className="shrink-0 text-indigo-400" />}
|
|
137
137
|
<span className="truncate">{label}</span>
|
|
138
138
|
</button>
|
|
139
139
|
);
|
|
@@ -228,7 +228,7 @@ const TaskSuggestionItem = React.memo(function TaskSuggestionItem({
|
|
|
228
228
|
case 'pending':
|
|
229
229
|
return 'bg-zinc-500/15 text-zinc-400';
|
|
230
230
|
case 'in_progress':
|
|
231
|
-
return 'bg-
|
|
231
|
+
return 'bg-indigo-500/15 text-indigo-400';
|
|
232
232
|
case 'completed':
|
|
233
233
|
return 'bg-emerald-500/15 text-emerald-400';
|
|
234
234
|
case 'deleted':
|
|
@@ -66,7 +66,7 @@ export const KanbanSortPopover = ({
|
|
|
66
66
|
>
|
|
67
67
|
<ArrowUpDown size={14} />
|
|
68
68
|
{isNonDefault && (
|
|
69
|
-
<span className="absolute -right-1 -top-1 flex size-4 items-center justify-center rounded-full bg-
|
|
69
|
+
<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">
|
|
70
70
|
1
|
|
71
71
|
</span>
|
|
72
72
|
)}
|
|
@@ -90,7 +90,7 @@ export const KanbanSortPopover = ({
|
|
|
90
90
|
className={cn(
|
|
91
91
|
'flex w-full items-center gap-2.5 rounded-md px-2 py-1.5 text-left text-xs transition-colors',
|
|
92
92
|
isSelected
|
|
93
|
-
? 'bg-
|
|
93
|
+
? 'bg-indigo-500/15 text-indigo-300'
|
|
94
94
|
: 'text-[var(--color-text-secondary)] hover:bg-[var(--color-surface-raised)]'
|
|
95
95
|
)}
|
|
96
96
|
onClick={() => onSortChange({ field: option.field })}
|
|
@@ -98,7 +98,7 @@ export const KanbanSortPopover = ({
|
|
|
98
98
|
<span
|
|
99
99
|
className={cn(
|
|
100
100
|
'shrink-0',
|
|
101
|
-
isSelected ? 'text-
|
|
101
|
+
isSelected ? 'text-indigo-400' : 'text-[var(--color-text-muted)]'
|
|
102
102
|
)}
|
|
103
103
|
>
|
|
104
104
|
{option.icon}
|
|
@@ -108,14 +108,14 @@ export const KanbanSortPopover = ({
|
|
|
108
108
|
<div
|
|
109
109
|
className={cn(
|
|
110
110
|
'text-[10px]',
|
|
111
|
-
isSelected ? 'text-
|
|
111
|
+
isSelected ? 'text-indigo-300/70' : 'text-[var(--color-text-muted)]'
|
|
112
112
|
)}
|
|
113
113
|
>
|
|
114
114
|
{option.description}
|
|
115
115
|
</div>
|
|
116
116
|
</div>
|
|
117
117
|
{isSelected && (
|
|
118
|
-
<ArrowDownUp size={12} className="ml-auto shrink-0 text-
|
|
118
|
+
<ArrowDownUp size={12} className="ml-auto shrink-0 text-indigo-400" />
|
|
119
119
|
)}
|
|
120
120
|
</button>
|
|
121
121
|
);
|
|
@@ -63,8 +63,8 @@ const DISPATCH_STATUS_STYLE: Record<string, { bg: string; text: string; label: s
|
|
|
63
63
|
text: 'text-yellow-600 dark:text-yellow-400',
|
|
64
64
|
label: '已派发',
|
|
65
65
|
},
|
|
66
|
-
received: { bg: 'bg-
|
|
67
|
-
in_progress: { bg: 'bg-
|
|
66
|
+
received: { bg: 'bg-indigo-500/15', text: 'text-indigo-600 dark:text-indigo-400', label: '已接收' },
|
|
67
|
+
in_progress: { bg: 'bg-indigo-500/15', text: 'text-indigo-600 dark:text-indigo-400', label: '执行中' },
|
|
68
68
|
completed: {
|
|
69
69
|
bg: 'bg-emerald-500/15',
|
|
70
70
|
text: 'text-emerald-600 dark:text-emerald-400',
|
|
@@ -355,7 +355,7 @@ export const KanbanTaskCard = memo(
|
|
|
355
355
|
className={`mt-1 inline-flex items-center gap-1 rounded-full px-1.5 py-0.5 text-[10px] font-medium ${
|
|
356
356
|
task.needsClarification === 'user'
|
|
357
357
|
? 'bg-red-500/15 text-red-400'
|
|
358
|
-
: 'bg-
|
|
358
|
+
: 'bg-indigo-500/15 text-indigo-600 dark:text-indigo-400'
|
|
359
359
|
}`}
|
|
360
360
|
>
|
|
361
361
|
<HelpCircle size={10} />
|
|
@@ -392,7 +392,7 @@ export const KanbanTaskCard = memo(
|
|
|
392
392
|
|
|
393
393
|
{hasBlocks ? (
|
|
394
394
|
<div className="mb-2 flex flex-wrap items-center gap-1">
|
|
395
|
-
<span className="inline-flex items-center gap-0.5 text-[10px] text-
|
|
395
|
+
<span className="inline-flex items-center gap-0.5 text-[10px] text-indigo-600 dark:text-indigo-400">
|
|
396
396
|
<ArrowRightFromLine size={10} />
|
|
397
397
|
阻塞
|
|
398
398
|
</span>
|
|
@@ -295,7 +295,7 @@ export const MemberDraftRow = ({
|
|
|
295
295
|
)}
|
|
296
296
|
工作流
|
|
297
297
|
{!workflowExpanded && workflowDraft.value.trim() ? (
|
|
298
|
-
<span className="absolute -right-1 -top-1 size-2 rounded-full bg-
|
|
298
|
+
<span className="absolute -right-1 -top-1 size-2 rounded-full bg-indigo-500" />
|
|
299
299
|
) : null}
|
|
300
300
|
</Button>
|
|
301
301
|
) : null}
|