@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.
Files changed (153) hide show
  1. package/dist-renderer/assets/{ProjectEditorOverlay-krO5vQxX.js → ProjectEditorOverlay-Br0X83Jf.js} +3 -3
  2. package/dist-renderer/assets/{TeamGraphOverlay-DqhQzcTr.js → TeamGraphOverlay-DHMTbZPZ.js} +1 -1
  3. package/dist-renderer/assets/{_basePickBy-B7kSYPxr.js → _basePickBy-DzIiX7yH.js} +1 -1
  4. package/dist-renderer/assets/{_baseUniq-CnjxqwAk.js → _baseUniq-6hZuzTLU.js} +1 -1
  5. package/dist-renderer/assets/{arc-CLeZuINP.js → arc-CXgO6fx_.js} +1 -1
  6. package/dist-renderer/assets/{architectureDiagram-VXUJARFQ-QKtqaqdY.js → architectureDiagram-VXUJARFQ-DKWgtDHr.js} +1 -1
  7. package/dist-renderer/assets/{blockDiagram-VD42YOAC-BqdrzO_f.js → blockDiagram-VD42YOAC-DOMUcC40.js} +1 -1
  8. package/dist-renderer/assets/{c4Diagram-YG6GDRKO-gwPlCxDC.js → c4Diagram-YG6GDRKO-B_k2L7qX.js} +1 -1
  9. package/dist-renderer/assets/channel-D0XS_akr.js +1 -0
  10. package/dist-renderer/assets/{chunk-4BX2VUAB-C6XLurL4.js → chunk-4BX2VUAB-BeD_ccFy.js} +1 -1
  11. package/dist-renderer/assets/{chunk-55IACEB6-Ds6quhEP.js → chunk-55IACEB6-ClZfkA5w.js} +1 -1
  12. package/dist-renderer/assets/{chunk-B4BG7PRW-5UlA1_e9.js → chunk-B4BG7PRW-5XluxXsn.js} +1 -1
  13. package/dist-renderer/assets/{chunk-DI55MBZ5-ywFrqIsY.js → chunk-DI55MBZ5-BzIjjNVm.js} +1 -1
  14. package/dist-renderer/assets/{chunk-FMBD7UC4-C7ifUA17.js → chunk-FMBD7UC4-HgH3MK_H.js} +1 -1
  15. package/dist-renderer/assets/{chunk-QN33PNHL-BxGCo80U.js → chunk-QN33PNHL-WeC5T3Ba.js} +1 -1
  16. package/dist-renderer/assets/{chunk-QZHKN3VN-B2CuaZs6.js → chunk-QZHKN3VN-Cu1ApHfW.js} +1 -1
  17. package/dist-renderer/assets/{chunk-TZMSLE5B-Ds1hInvp.js → chunk-TZMSLE5B-BOhlynJM.js} +1 -1
  18. package/dist-renderer/assets/classDiagram-2ON5EDUG-D13Ffs0U.js +1 -0
  19. package/dist-renderer/assets/classDiagram-v2-WZHVMYZB-D13Ffs0U.js +1 -0
  20. package/dist-renderer/assets/clone-B1ZrxI1D.js +1 -0
  21. package/dist-renderer/assets/{cose-bilkent-S5V4N54A-Cz1GVtLp.js → cose-bilkent-S5V4N54A-DGZSihDQ.js} +1 -1
  22. package/dist-renderer/assets/{dagre-6UL2VRFP-BrmR-P4h.js → dagre-6UL2VRFP-CnxwCbku.js} +1 -1
  23. package/dist-renderer/assets/{diagram-PSM6KHXK-DbNjC5Rg.js → diagram-PSM6KHXK-DsIhoxdI.js} +1 -1
  24. package/dist-renderer/assets/{diagram-QEK2KX5R-qkRX5_Mq.js → diagram-QEK2KX5R-Cmh9KUF5.js} +1 -1
  25. package/dist-renderer/assets/{diagram-S2PKOQOG-CyL5rCv2.js → diagram-S2PKOQOG-CKxV456A.js} +1 -1
  26. package/dist-renderer/assets/{erDiagram-Q2GNP2WA-Dox3-bA5.js → erDiagram-Q2GNP2WA-EnvYjOjc.js} +1 -1
  27. package/dist-renderer/assets/{flowDiagram-NV44I4VS-BtkaxlDL.js → flowDiagram-NV44I4VS-BmNeWY_A.js} +1 -1
  28. package/dist-renderer/assets/{ganttDiagram-JELNMOA3-Dhy_d9GK.js → ganttDiagram-JELNMOA3-D30fyK-u.js} +1 -1
  29. package/dist-renderer/assets/{gitGraphDiagram-V2S2FVAM-B5XRhIQA.js → gitGraphDiagram-V2S2FVAM-CrUNiYg1.js} +1 -1
  30. package/dist-renderer/assets/{graph-CsoEwUhS.js → graph-CY1gTfTb.js} +1 -1
  31. package/dist-renderer/assets/{index-Bu2R-Se7.js → index-59r209c1.js} +39 -39
  32. package/dist-renderer/assets/{index-NhHNs2Oo.js → index-9_hO4N1e.js} +1 -1
  33. package/dist-renderer/assets/{index-BWPWmJNo.js → index-BC2hXmg_.js} +1 -1
  34. package/dist-renderer/assets/{index-D-3KgskL.js → index-CaEbzwAU.js} +1 -1
  35. package/dist-renderer/assets/{index-DGEBzLNT.js → index-D5K-SjBG.js} +1 -1
  36. package/dist-renderer/assets/{index-h17WuEyf.js → index-DMR9B1UP.js} +1 -1
  37. package/dist-renderer/assets/index-iyjkpSus.css +32 -0
  38. package/dist-renderer/assets/{infoDiagram-HS3SLOUP-hMGmNojH.js → infoDiagram-HS3SLOUP-By_XUlcD.js} +1 -1
  39. package/dist-renderer/assets/{journeyDiagram-XKPGCS4Q-DXV2rBDl.js → journeyDiagram-XKPGCS4Q-BM1LJE9m.js} +1 -1
  40. package/dist-renderer/assets/{kanban-definition-3W4ZIXB7-Bf99WLRy.js → kanban-definition-3W4ZIXB7-DHIW3aTA.js} +1 -1
  41. package/dist-renderer/assets/{layout-C3XWrpwo.js → layout-DAKiL_Mo.js} +1 -1
  42. package/dist-renderer/assets/{linear-OEEcn8KN.js → linear-DwOaRYea.js} +1 -1
  43. package/dist-renderer/assets/{mindmap-definition-VGOIOE7T-Dpi3S2x4.js → mindmap-definition-VGOIOE7T-b7bJ2cha.js} +1 -1
  44. package/dist-renderer/assets/{pieDiagram-ADFJNKIX-xTPPhtNx.js → pieDiagram-ADFJNKIX-DxyL9Zr2.js} +1 -1
  45. package/dist-renderer/assets/{quadrantDiagram-AYHSOK5B-euniyDlz.js → quadrantDiagram-AYHSOK5B-CR33pHlF.js} +1 -1
  46. package/dist-renderer/assets/{requirementDiagram-UZGBJVZJ-D9Uiw4kF.js → requirementDiagram-UZGBJVZJ-BAiSRSlh.js} +1 -1
  47. package/dist-renderer/assets/{sankeyDiagram-TZEHDZUN-CySU4nED.js → sankeyDiagram-TZEHDZUN-C8JmDjoa.js} +1 -1
  48. package/dist-renderer/assets/{sequenceDiagram-WL72ISMW-JVGpET6V.js → sequenceDiagram-WL72ISMW-c1d0Wi1m.js} +1 -1
  49. package/dist-renderer/assets/{stateDiagram-FKZM4ZOC-B2FY5qqi.js → stateDiagram-FKZM4ZOC-nT8BiH2O.js} +1 -1
  50. package/dist-renderer/assets/{stateDiagram-v2-4FDKWEC3-DcoMiR8H.js → stateDiagram-v2-4FDKWEC3-Dmibmlso.js} +1 -1
  51. package/dist-renderer/assets/{timeline-definition-IT6M3QCI-DmycNUUe.js → timeline-definition-IT6M3QCI-DpoRepUA.js} +1 -1
  52. package/dist-renderer/assets/{treemap-GDKQZRPO-DPq4gZuB.js → treemap-GDKQZRPO-C41UJeIH.js} +1 -1
  53. package/dist-renderer/assets/{xychartDiagram-PRI3JC2R-J6VVJzRq.js → xychartDiagram-PRI3JC2R-KMjGARKN.js} +1 -1
  54. package/dist-renderer/index.html +2 -2
  55. package/package.json +1 -1
  56. package/src/renderer/components/chat/ChatHistoryItem.tsx +1 -1
  57. package/src/renderer/components/chat/SessionContextPanel/DirectoryTree/DirectoryTreeNode.tsx +1 -1
  58. package/src/renderer/components/chat/SessionContextPanel/items/ClaudeMdItem.tsx +1 -1
  59. package/src/renderer/components/chat/SessionContextPanel/items/MentionedFileItem.tsx +1 -1
  60. package/src/renderer/components/chat/SessionContextPanel/items/TaskCoordinationItem.tsx +1 -1
  61. package/src/renderer/components/chat/SessionContextPanel/items/ThinkingTextItem.tsx +1 -1
  62. package/src/renderer/components/chat/SessionContextPanel/items/ToolOutputItem.tsx +1 -1
  63. package/src/renderer/components/chat/SessionContextPanel/items/UserMessageItem.tsx +1 -1
  64. package/src/renderer/components/chat/items/SubagentItem.tsx +2 -2
  65. package/src/renderer/components/chat/viewers/MermaidDiagram.tsx +2 -2
  66. package/src/renderer/components/common/ErrorBoundary.tsx +1 -1
  67. package/src/renderer/components/dashboard/CliStatusBanner.tsx +8 -8
  68. package/src/renderer/components/extensions/ExtensionStoreView.tsx +1 -1
  69. package/src/renderer/components/extensions/common/ExtensionToast.tsx +3 -3
  70. package/src/renderer/components/extensions/common/SourceBadge.tsx +1 -1
  71. package/src/renderer/components/extensions/plugins/CategoryChips.tsx +1 -1
  72. package/src/renderer/components/extensions/plugins/PluginCard.tsx +1 -1
  73. package/src/renderer/components/extensions/plugins/PluginDetailDialog.tsx +2 -2
  74. package/src/renderer/components/extensions/skills/SkillEditorDialog.tsx +1 -1
  75. package/src/renderer/components/layout/PaneResizeHandle.tsx +2 -2
  76. package/src/renderer/components/layout/Sidebar.tsx +2 -2
  77. package/src/renderer/components/layout/SortableTab.tsx +2 -2
  78. package/src/renderer/components/report/sections/CostSection.tsx +2 -2
  79. package/src/renderer/components/report/sections/InsightsSection.tsx +1 -1
  80. package/src/renderer/components/runtime/ProviderRuntimeBackendSelector.tsx +4 -4
  81. package/src/renderer/components/search/CommandPalette.tsx +4 -4
  82. package/src/renderer/components/settings/SettingsTabs.tsx +1 -1
  83. package/src/renderer/components/settings/components/SettingsSelect.tsx +2 -2
  84. package/src/renderer/components/settings/components/SettingsToggle.tsx +1 -1
  85. package/src/renderer/components/settings/sections/AdvancedSection.tsx +3 -3
  86. package/src/renderer/components/settings/sections/CliStatusSection.tsx +1 -1
  87. package/src/renderer/components/settings/sections/GeneralSection.tsx +1 -1
  88. package/src/renderer/components/sidebar/SessionFiltersPopover.tsx +1 -1
  89. package/src/renderer/components/sidebar/SessionItem.tsx +3 -3
  90. package/src/renderer/components/sidebar/SidebarSessions.tsx +2 -2
  91. package/src/renderer/components/sidebar/WorkspaceBrowser.tsx +1 -1
  92. package/src/renderer/components/sidebar/taskFiltersState.ts +1 -1
  93. package/src/renderer/components/system-manager/SystemManagerView.tsx +1 -1
  94. package/src/renderer/components/team/CcSessionsSection.tsx +5 -5
  95. package/src/renderer/components/team/ClaudeLogsFilterPopover.tsx +1 -1
  96. package/src/renderer/components/team/ClaudeLogsPanel.tsx +1 -1
  97. package/src/renderer/components/team/CollapsibleTeamSection.tsx +1 -1
  98. package/src/renderer/components/team/ProcessesSection.tsx +2 -2
  99. package/src/renderer/components/team/TaskTooltip.tsx +2 -2
  100. package/src/renderer/components/team/TeamDetailView.tsx +1 -1
  101. package/src/renderer/components/team/TeamListFilterPopover.tsx +1 -1
  102. package/src/renderer/components/team/TeamListView.tsx +2 -2
  103. package/src/renderer/components/team/TeamSessionsSection.tsx +6 -6
  104. package/src/renderer/components/team/UnreadCommentsBadge.tsx +1 -1
  105. package/src/renderer/components/team/activity/ActivityItem.tsx +10 -10
  106. package/src/renderer/components/team/activity/ActivityTimeline.tsx +5 -5
  107. package/src/renderer/components/team/activity/LeadThoughtsGroup.tsx +3 -3
  108. package/src/renderer/components/team/activity/ReplyQuoteBlock.tsx +4 -4
  109. package/src/renderer/components/team/dialogs/CreateTaskDialog.tsx +2 -2
  110. package/src/renderer/components/team/dialogs/LaunchTeamDialog.tsx +1 -1
  111. package/src/renderer/components/team/dialogs/PlatformBindingDialog.tsx +1 -1
  112. package/src/renderer/components/team/dialogs/PlatformManualForm.tsx +1 -1
  113. package/src/renderer/components/team/dialogs/PlatformSetupQR.tsx +4 -4
  114. package/src/renderer/components/team/dialogs/SendMessageDialog.tsx +6 -6
  115. package/src/renderer/components/team/dialogs/SkipPermissionsCheckbox.tsx +6 -6
  116. package/src/renderer/components/team/dialogs/StatusHistoryTimeline.tsx +1 -1
  117. package/src/renderer/components/team/dialogs/TaskAttachments.tsx +1 -1
  118. package/src/renderer/components/team/dialogs/TaskCommentInput.tsx +6 -6
  119. package/src/renderer/components/team/dialogs/TaskCommentsSection.tsx +4 -4
  120. package/src/renderer/components/team/dialogs/TaskDetailDialog.tsx +3 -3
  121. package/src/renderer/components/team/editor/EditorFileTree.tsx +4 -4
  122. package/src/renderer/components/team/editor/EditorSearchPanel.tsx +1 -1
  123. package/src/renderer/components/team/editor/MarkdownSplitView.tsx +1 -1
  124. package/src/renderer/components/team/editor/NewFileDialog.tsx +1 -1
  125. package/src/renderer/components/team/editor/ProjectEditorOverlay.tsx +1 -1
  126. package/src/renderer/components/team/editor/SearchInFilesPanel.tsx +1 -1
  127. package/src/renderer/components/team/kanban/KanbanFilterPopover.tsx +4 -4
  128. package/src/renderer/components/team/kanban/KanbanSearchInput.tsx +1 -1
  129. package/src/renderer/components/team/kanban/KanbanSortPopover.tsx +5 -5
  130. package/src/renderer/components/team/kanban/KanbanTaskCard.tsx +4 -4
  131. package/src/renderer/components/team/members/MemberDraftRow.tsx +1 -1
  132. package/src/renderer/components/team/members/MemberStatsTab.tsx +2 -2
  133. package/src/renderer/components/team/members/MemberWorkspaceTab.tsx +1 -1
  134. package/src/renderer/components/team/messages/MessageComposer.tsx +2 -2
  135. package/src/renderer/components/team/messages/MessagesFilterPopover.tsx +1 -1
  136. package/src/renderer/components/team/messages/MessagesPanel.tsx +7 -7
  137. package/src/renderer/components/team/review/ChangeReviewDialog.tsx +1 -1
  138. package/src/renderer/components/team/schedule/ScheduleStatusBadge.tsx +1 -1
  139. package/src/renderer/components/team/sidebar/TeamSidebarRail.tsx +4 -4
  140. package/src/renderer/components/team/tasks/TaskRow.tsx +1 -1
  141. package/src/renderer/components/team/tools/SkillChip.tsx +1 -1
  142. package/src/renderer/components/team/tools/ToolsSection.tsx +1 -1
  143. package/src/renderer/components/ui/MemberSelect.tsx +2 -2
  144. package/src/renderer/components/ui/MentionSuggestionList.tsx +2 -2
  145. package/src/renderer/components/ui/MentionableTextarea.tsx +3 -3
  146. package/src/renderer/constants/teamColors.ts +5 -5
  147. package/src/renderer/index.css +18 -18
  148. package/src/renderer/utils/codemirrorTheme.ts +3 -3
  149. package/dist-renderer/assets/channel-DpMHF50r.js +0 -1
  150. package/dist-renderer/assets/classDiagram-2ON5EDUG-CBYCBVRl.js +0 -1
  151. package/dist-renderer/assets/classDiagram-v2-WZHVMYZB-CBYCBVRl.js +0 -1
  152. package/dist-renderer/assets/clone-DcMF6Psb.js +0 -1
  153. 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-blue-600/30 dark:bg-blue-400/30" />
766
- <span className="whitespace-nowrap text-[11px] font-medium text-blue-600 dark:text-blue-400">
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-blue-600/30 dark:bg-blue-400/30" />
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-blue-600/30 dark:bg-blue-400/30" />
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-blue-600/30 dark:bg-blue-400/30" />
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-blue-500/50 group-hover:opacity-100"
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-blue-500/50 group-hover:opacity-100"
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-blue-500/50 group-hover:opacity-100"
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-blue-400/20 bg-blue-100/40 py-2 pl-3 pr-2 dark:border-blue-500/20 dark:bg-blue-950/20">
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-blue-600/[0.08] dark:text-blue-400/[0.08]">
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
  &ldquo;
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-blue-600/60 dark:text-blue-300/60">Replying to</span>
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-blue-600/60 hover:text-blue-700 dark:text-blue-400/60 dark:hover:text-blue-300"
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-blue-500/15 text-blue-300'
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-blue-400 bg-blue-500/30 text-blue-300'
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-blue-600 px-2 py-0.5 text-[11px] font-medium text-white transition-colors hover:bg-blue-500"
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-blue-600 dark:text-blue-400',
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-blue-600 focus:ring-blue-500 dark:border-gray-600"
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-blue-500" />
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-blue-500">
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-blue-500">
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-blue-500" />
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-blue-400/30 bg-blue-100/80 py-2 pl-3 pr-2 dark:border-blue-500/20 dark:bg-blue-950/20">
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-blue-500/[0.08] dark:text-blue-400/[0.08]">
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
  &ldquo;
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-blue-400/60 hover:text-blue-600 dark:text-blue-300/40 dark:hover:text-blue-200"
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-blue-600/70 dark:text-blue-300/60">
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-blue-500 hover:text-blue-700 dark:text-blue-400/60 dark:hover:text-blue-300"
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-blue-600 px-3 py-1.5 text-[11px] font-medium text-white shadow-sm transition-colors hover:bg-blue-500 disabled:cursor-not-allowed disabled:opacity-50"
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(59, 130, 246, 0.08)',
37
- borderColor: 'rgba(59, 130, 246, 0.2)',
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-blue-400" />
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(59, 130, 246, 0.08)',
51
- borderColor: 'rgba(59, 130, 246, 0.2)',
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-blue-400" />
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-blue-400';
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-blue-500/40 bg-blue-500/5 py-4 text-xs text-blue-400">
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-blue-400/30 bg-blue-100/80 py-2 pl-3 pr-2 dark:border-blue-500/20 dark:bg-blue-950/20">
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-blue-500/[0.08] dark:text-blue-400/[0.08]">
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
  &ldquo;
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-blue-400/60 hover:text-blue-600 dark:text-blue-300/40 dark:hover:text-blue-200"
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-blue-600/70 dark:text-blue-300/60">正在回复</span>
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-blue-500 hover:text-blue-700 dark:text-blue-400/60 dark:hover:text-blue-300"
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-blue-600 px-3 py-1.5 text-[11px] font-medium text-white shadow-sm transition-colors hover:bg-blue-500 disabled:cursor-not-allowed disabled:opacity-50"
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-blue-500/20 bg-blue-500/5'
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-blue-500" />
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-blue-500/15 px-1.5 py-0.5 text-[10px] font-medium text-blue-600 dark:text-blue-400">
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-blue-600 px-3 py-1.5 text-[11px] font-medium text-white shadow-sm transition-colors hover:bg-blue-500 disabled:cursor-not-allowed disabled:opacity-50"
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-blue-500/20 bg-blue-500/10 text-blue-400'
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-blue-600 dark:text-blue-400">
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-blue-500/15 text-blue-600 hover:bg-blue-500/25 dark:text-blue-400'
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-blue-400/5 ring-1 ring-inset ring-blue-400/30' : ''
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-blue-400/10 ring-2 ring-blue-400/50' : ''
713
- } ${isInsideDropTarget && !isDropTarget ? 'border-l-2 border-l-blue-400/40 bg-blue-400/5' : ''}`}
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-blue-400/50 bg-surface px-1 py-0 text-xs text-text outline-none focus:ring-1 focus:ring-blue-400/50"
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-blue-500/20 text-blue-400'
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-blue-500/50' : 'hover:bg-blue-500/30'
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-blue-500"
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-blue-400/30 bg-blue-100/50 px-3 py-1.5 text-xs text-blue-700 dark:border-blue-500/30 dark:bg-blue-500/10 dark:text-blue-300">
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-blue-500/20 text-blue-400'
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-blue-500 text-[10px] font-medium text-white">
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-blue-500/15 text-blue-300'
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-blue-500/15 text-blue-300'
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-blue-400" />}
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-blue-500/15 text-blue-400';
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-blue-500 text-[10px] font-medium text-white">
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-blue-500/15 text-blue-300'
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-blue-400' : 'text-[var(--color-text-muted)]'
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-blue-300/70' : 'text-[var(--color-text-muted)]'
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-blue-400" />
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-blue-500/15', text: 'text-blue-600 dark:text-blue-400', label: '已接收' },
67
- in_progress: { bg: 'bg-blue-500/15', text: 'text-blue-600 dark:text-blue-400', label: '执行中' },
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-blue-500/15 text-blue-600 dark:text-blue-400'
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-blue-600 dark:text-blue-400">
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-blue-500" />
298
+ <span className="absolute -right-1 -top-1 size-2 rounded-full bg-indigo-500" />
299
299
  ) : null}
300
300
  </Button>
301
301
  ) : null}