claude-code-best/src/components
IronRookieCoder aaeb662bee fix(agents): reload empty agent definitions in menu
## Bug 详情
生产构建后执行交互式 /agents 时,菜单可能从 AppState 读到空的 agentDefinitions,导致显示 No agents found;同一环境下 bun run dev 可以正常显示 agents。

## 根因
生产 bundle 中底层 agent loader 和内置 agents 均可用,但 /agents 动态菜单只消费启动时注入的 AppState.agentDefinitions。构建产物复现时该状态可能为空,菜单没有现场刷新兜底。

## 修复方案
在 AgentsMenu 打开时检测 allAgents 和 activeAgents 是否同时为空;为空时基于当前 cwd 调用 getAgentDefinitionsWithOverrides 重新加载并写回 AppState,正常已有 agents 的路径直接跳过。

## 变更要点
- 为 AgentsMenu 增加空 agentDefinitions 的 fallback reload
- 使用取消标记避免组件卸载后继续写状态
- 保持现有编辑、删除和正常 dev 路径不变

## 自测
- bun run build
- ./dist/cli-bun.js agents 可列出 27 active agents
- bun run typecheck 仍存在仓库既有类型错误,未新增 AgentsMenu 相关错误
2026-05-16 10:48:31 +08:00
..
__tests__ feat: 添加 Provider Registry、StatusLine、Cache Stats 和其他增强 2026-05-09 23:04:35 +08:00
agents fix(agents): reload empty agent definitions in menu 2026-05-16 10:48:31 +08:00
ClaudeCodeHint style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
CustomSelect style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
design-system chore: 清理临时 rebase 脚本 2026-05-13 10:29:34 +08:00
DesktopUpsell style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
diff style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
FeedbackSurvey chore: 合并社区 upstream/main 代码至 v2.4.2 2026-05-12 11:55:04 +08:00
grove style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
HelpV2 chore: 合并社区 upstream/main 代码至 v2.4.2 2026-05-12 11:55:04 +08:00
HighlightedCode style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
hooks chore: 合并社区 upstream/main 代码至 v2.4.2 2026-05-12 11:55:04 +08:00
LogoV2 merge: 合并 origin/main 到 feat/server-refactor,解决冲突并保留 server 完整实现 2026-05-13 10:27:14 +08:00
LspRecommendation style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
ManagedSettingsSecurityDialog chore: 合并社区 upstream/main 代码至 v2.4.2 2026-05-12 11:55:04 +08:00
mcp fix(mcp): add availability hint for failed servers in list panel 2026-05-15 16:55:02 +08:00
memory style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
messages chore: 清理临时 rebase 脚本 2026-05-13 10:29:34 +08:00
Passes chore: 合并社区 upstream/main 代码至 v2.4.2 2026-05-12 11:55:04 +08:00
permissions chore: 合并社区 upstream/main 代码至 v2.4.2 2026-05-12 11:55:04 +08:00
PromptInput feat(config): add showMemoryPid setting to toggle footer memory/PID display 2026-05-14 17:41:13 +08:00
sandbox chore: 合并社区 upstream/main 代码至 v2.4.2 2026-05-12 11:55:04 +08:00
Settings feat(config): add showMemoryPid setting to toggle footer memory/PID display 2026-05-14 17:41:13 +08:00
shell style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
skills feat: 添加 Provider Registry、StatusLine、Cache Stats 和其他增强 2026-05-09 23:04:35 +08:00
Spinner style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
StructuredDiff style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
tasks chore: 清理临时 rebase 脚本 2026-05-13 10:29:34 +08:00
teams chore: 清理 src 下 113 项未使用导入和死代码 2026-05-05 20:05:15 +08:00
TrustDialog fix: 优化用户交互文案,为错误消息添加可操作提示 2026-05-05 00:05:35 +08:00
ui style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
ultraplan style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
wizard chore: 清理 src 下 113 项未使用导入和死代码 2026-05-05 20:05:15 +08:00
AgentProgressLine.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
AntModelSwitchCallout.tsx fix: 修复 USER_TYPE=ant 时 TUI 无法启动的问题 2026-04-02 20:31:04 +08:00
App.tsx fix: theme switching always defaults to dark mode 2026-04-30 16:15:27 +08:00
ApproveApiKey.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
AutoModeOptInDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
AutoUpdater.tsx fix(update): enhance failure diagnostics and prevent claude symlink deletion 2026-05-15 16:19:13 +08:00
AutoUpdaterWrapper.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
AwsAuthStatusBox.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
BaseTextInput.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
BashModeProgress.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
BridgeDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
BuiltinStatusLine.tsx feat: 添加 Provider Registry、StatusLine、Cache Stats 和其他增强 2026-05-09 23:04:35 +08:00
BypassPermissionsModeDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
ChannelDowngradeDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
ClaudeInChromeOnboarding.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
ClaudeMdExternalIncludesDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
ClickableImageRef.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
CompactSummary.tsx fix: 优化压缩错误消息和自动压缩提示的可理解性 2026-05-05 07:19:19 +08:00
ConfigurableShortcutHint.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
ConsoleOAuthFlow.tsx Merge pull request #85 from y574444354/fix/serve-command-real-impl 2026-05-14 19:14:53 +08:00
ContextSuggestions.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
ContextVisualization.tsx feat: 添加 prompt 缓存命中率检测与警告功能 2026-05-07 10:49:06 +08:00
CoordinatorAgentStatus.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
CostThresholdDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
CtrlOToExpand.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
DesktopHandoff.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
DevBar.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
DevChannelsDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
DiagnosticsDisplay.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
EffortCallout.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
EffortIndicator.ts feat: 添加 UI 组件增强与测试覆盖 2026-04-22 22:38:10 +08:00
ExitFlow.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
ExportDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
FallbackToolUseErrorMessage.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
FallbackToolUseRejectedMessage.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
FastIcon.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
Feedback.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
FileEditToolDiff.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
FileEditToolUpdatedMessage.tsx fix: 恢复消息流中 diff 高亮渲染功能 2026-05-07 08:28:28 +08:00
FileEditToolUseRejectedMessage.tsx fix: 恢复消息流中 diff 高亮渲染功能 2026-05-07 08:28:28 +08:00
FilePathLink.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
FullscreenLayout.tsx chore: 合并社区 upstream/main 代码至 v2.4.2 2026-05-12 11:55:04 +08:00
GlobalSearchDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
HighlightedCode.tsx fix: 优化内存峰值与 CPU 性能,降低 100-300MB 内存占用 2026-05-02 00:45:03 +08:00
HistorySearchDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
IdeAutoConnectDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
IdeOnboardingDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
IdeStatusIndicator.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
IdleReturnDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
InterruptedByUser.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
InvalidConfigDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
InvalidSettingsDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
KeybindingWarnings.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
LanguagePicker.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
LogSelector.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
Markdown.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
MarkdownTable.tsx perf: 表格渲染效率升级 2026-05-03 10:10:47 +08:00
MCPServerApprovalDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
MCPServerDesktopImportDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
MCPServerDialogCopy.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
MCPServerMultiselectDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
MemoryUsageIndicator.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
Message.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
messageActions.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
MessageModel.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
MessageResponse.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
MessageRow.tsx docs: 添加 ToolSearch 设计指南 + 禁用 turn-zero 工具推荐弹窗 2026-05-09 16:45:56 +08:00
Messages.tsx fix: 添加 React Error Boundary 防止生产环境渲染崩溃 2026-05-09 22:02:04 +08:00
MessageSelector.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
MessageTimestamp.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
ModelPicker.tsx fix: 修复CI格式检查失败 2026-05-09 16:21:07 +08:00
NativeAutoUpdater.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
NotebookEditToolUseRejectedMessage.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
OffscreenFreeze.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
Onboarding.tsx chore: 清理 src 下 113 项未使用导入和死代码 2026-05-05 20:05:15 +08:00
OutputStylePicker.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
PackageManagerAutoUpdater.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
PrBadge.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
PressEnterToContinue.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
QuickOpenDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
RemoteCallout.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
RemoteEnvironmentDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
ResumeTask.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
SandboxViolationExpandedView.tsx chore: 清理 src 下 113 项未使用导入和死代码 2026-05-05 20:05:15 +08:00
ScrollKeybindingHandler.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
SearchBox.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
SearchExtraToolsHint.tsx docs: 添加 ToolSearch 设计指南 + 禁用 turn-zero 工具推荐弹窗 2026-05-09 16:45:56 +08:00
SentryErrorBoundary.ts chore: 清理临时 rebase 脚本 2026-05-13 10:29:34 +08:00
SentryErrorBoundary.tsx fix: 添加 React Error Boundary 防止生产环境渲染崩溃 2026-05-09 22:02:04 +08:00
SessionBackgroundHint.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
SessionPreview.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
ShowInIDEPrompt.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
SkillImprovementSurvey.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
Spinner.tsx fix: 修复条件式 hook 调用导致的 "Rendered fewer hooks than expected" 错误 2026-05-08 13:17:25 +08:00
Stats.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
StatusLine.tsx fix: 代码审查修复 — 安全、性能和正确性 2026-05-10 09:39:34 +08:00
StatusNotices.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
StructuredDiff.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
StructuredDiffList.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
TagTabs.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
TaskListV2.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
TeammateViewHeader.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
TeleportError.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
TeleportProgress.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
TeleportRepoMismatchDialog.tsx chore: 合并社区 upstream/main 代码至 v2.4.2 2026-05-12 11:55:04 +08:00
TeleportResumeWrapper.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
TeleportStash.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
TextInput.tsx fix: 修复条件式 hook 调用导致的 "Rendered fewer hooks than expected" 错误 2026-05-08 13:17:25 +08:00
ThemePicker.tsx chore: 合并社区 upstream/main 代码至 v2.4.2 2026-05-12 11:55:04 +08:00
ThinkingToggle.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
TokenWarning.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
ToolUseLoader.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
UndercoverAutoCallout.tsx fix: 修复 USER_TYPE=ant 时 TUI 无法启动的问题 2026-04-02 20:31:04 +08:00
ValidationErrorsList.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
VimTextInput.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00
VirtualMessageList.tsx chore: 合并社区 upstream/main 代码至 v2.4.2 2026-05-12 11:55:04 +08:00
WorkflowMultiselectDialog.tsx chore: 合并社区 upstream/main 代码至 v2.4.2 2026-05-12 11:55:04 +08:00
WorktreeExitDialog.tsx style: 完成所有文件的lint 2026-05-01 21:39:30 +08:00