文件最后提交记录最后更新时间
feat: suppress Windows console windows & pass --client mode to daemon - Add process_utils module with CREATE_NO_WINDOW helpers for Windows - Apply suppress_console_window to all child process spawns (git, curl, rg, find, LSP servers, MCP servers, hooks, bash tool, etc.) - Add --client CLI arg to daemon, propagate SessionMode to API handlers - Enhance build_api_system_prompt to align with TUI (instructions, memory, git snapshot, platform rules, model identity) - Bump vscode extension to 0.0.3 24 天前
chore(core): 清理既有编译告警 合并后 cargo check 暴露的存量告警(均在 atomcode-core,与本次合并无关): - 移除未使用 import(glob/bash/hook_test/webhook_test/hook_integration_test) - 去掉多余 mut、未使用变量改 _result(turn/tests、plugin/loader) - 死代码测试辅助函数加 #[allow(dead_code)](engine、config_loader) - RAII Guard 的 TempDir 字段加 #[allow(dead_code)](plugin_integration) - script_runner trait-bound 断言 require_hook::<ScriptHook>(); 改为真正调用, 消除 path_statement 告警 - hook_integration_test::create_test_runner 改 async 并 .await registry.register (register 是 async,原先 future 被丢弃,MockEchoTool 实际从未注册——顺手修掉) 验证:cargo check --workspace --exclude atomcode-codingplan-crypto --tests 零告警零错误。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 2 天前
Merge feat/telemetry-v2 into release/v4.20.1 Integrates the atomcode-telemetry crate (new) with the MCP support, Ollama function-calling, and background-commands features from release. Key resolutions: - CLI Commands enum: kept both Mcp(McpCli) and Telemetry { action } variants - atomcode_tuix::run(): added mcp_registry + mcp_connect_rx + telemetry params - LoopCtx: added both mcp_registry/mcp_connect_rx/mcp_reload and telemetry fields - runner.rs: kept telemetry scope + tel_return! macro; added unwrap_doubly_nested_args from HEAD into v2's ToolCallDone arm; preserved HEAD's async ToolRegistry API - bash.rs: merged HEAD's enhanced netcat/mknod security detection with v2's code structure improvements; added visit_f64 to lenient deserializer - agent/mod.rs: took HEAD's emit_rich_context_stats().await form - daemon/main.rs: kept register_sync form + telemetry Disabled("daemon") init - commands.rs: took HEAD (mcp, background, init; no /fixissue) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 1 个月前
fix: preserve tilde-prefixed relative cd paths 24 天前
fix: require read approval for external diagnostics 24 天前
Auto-commit at turn #1 (8 files changed) 6 天前
Merge feat/telemetry-v2 into release/v4.20.1 Integrates the atomcode-telemetry crate (new) with the MCP support, Ollama function-calling, and background-commands features from release. Key resolutions: - CLI Commands enum: kept both Mcp(McpCli) and Telemetry { action } variants - atomcode_tuix::run(): added mcp_registry + mcp_connect_rx + telemetry params - LoopCtx: added both mcp_registry/mcp_connect_rx/mcp_reload and telemetry fields - runner.rs: kept telemetry scope + tel_return! macro; added unwrap_doubly_nested_args from HEAD into v2's ToolCallDone arm; preserved HEAD's async ToolRegistry API - bash.rs: merged HEAD's enhanced netcat/mknod security detection with v2's code structure improvements; added visit_f64 to lenient deserializer - agent/mod.rs: took HEAD's emit_rich_context_stats().await form - daemon/main.rs: kept register_sync form + telemetry Disabled("daemon") init - commands.rs: took HEAD (mcp, background, init; no /fixissue) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 1 个月前
Auto-commit at turn #57 (9 files changed) 8 天前
Merge remote-tracking branch 'origin/main' into cocreate-find-references-json # Conflicts: # crates/atomcode-core/src/tool/find_references.rs 24 天前
fix(glob): 显式指向 .atomcode/.claude 等 skip 目录时能搜到文件 glob 的 skip 列表(SKIP_DIRS 含 .atomcode/.claude/node_modules…)此前 对结果路径的每一段都生效,导致即使把 glob 显式指向 .atomcode/skills, 只要路径里含 .atomcode 段就被滤掉,永远返回空。 新增 should_skip_below(root, path):skip 检查只作用于搜索根以下的相对 路径段,搜索根自身(derive_search_dir 解出的显式目标)不再被二次过滤。 广度搜索(根=工作区)行为不变——.atomcode 仍是根下子目录,照常剪枝, 且 .hidden(true) 已阻止宽遍历descend进去。 回归测试:显式 pattern/path 指向 .atomcode/ 能搜到;广度 **/*.md 仍跳过。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 1 天前
fix(grep): 修复 Windows 路径分隔符导致的噪声目录跳过失效 grep_walk() 中使用字符串 contains("/target/") 检查路径, 在 Windows 上路径分隔符为反斜杠,导致 target/、node_modules/、 dist/、datalog/ 等噪声目录不会被跳过,造成: 1. 性能严重下降(在 Windows 上搜索数千个构建产物) 2. 搜索结果包含大量无关文件 修复方案:改用 Path::components() 基于路径组件的精确匹配, 同时改用 Path::extension() 检查 .log 后缀,确保跨平台一致。 2 天前
Auto-commit at turn #1 (8 files changed) 6 天前
fix: require read approval for external list_symbols 24 天前
fix(tool): 为 Windows 添加系统敏感路径保护 is_sensitive_path() 仅定义了 Unix 系统保护前缀(/etc、/System、 /var 等),在 Windows 上 C:\Windows、C:\Program Files、 C:\ProgramData 等系统目录同等敏感,但当前没有任何保护。 修复方案: 1. 使用 #[cfg(target_os = "windows")] 为 Windows 定义独立的 SYSTEM_PROTECTED_PREFIXES 和 SYSTEM_PROTECTED_EXCEPTIONS 2. Windows 保护前缀覆盖 C:\Windows、C:\Program Files、 C:\Program Files (x86)、C:\ProgramData、C:\PerfLogs 3. 添加对应平台的单元测试确保覆盖 2 天前
fix(open_file): 加 serde(alias = "path") 保住旧调用方 ce1c344f 把字段 path 改为 file_path 与 read/write/edit 对齐,但没留 后向兼容 shim。任何仍传 path 的请求被 serde 直接拒绝 ("missing field file_path")——讽刺地变成本次重命名想统一掉的同类错误。 影响面: - resume 时携带旧 tool 调用 schema 的 conversation - 模型缓存里仍是旧 schema 的请求 - 切到新版本前已经在飞的 turn 加 #[serde(alias = "path")] 一行兼容一个 release 周期。test 同时 锁住 legacy "path" 和 canonical "file_path" 两条路径都能解析。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> 10 天前
refactor: remove guide subagent system and clean up all related code Remove the guide Q&A subagent infrastructure that was replaced by the skill-based /guide command path. This includes: - Delete agent/guide/ module (knowledge base + mod) - Delete agent/sub_agent/ module (registry, runner, tools, types, context, tests) - Delete tool/agent.rs (invoke_subagent tool) - Delete guide_integration_test.rs - Remove AgentCommand::InvokeSubAgent/InjectGuideResult - Remove AgentEvent::GuideTurnActivity/GuideComplete - Remove subagent_registry, subagent_handles, subagent_cancel_token, subagent_running from AgentLoop - Remove guide_running from UiState - Remove UiLine::GuideStatus/GuideResult and all render implementations - Remove guide-specific spinner code (render_guide_spinner, pop_guide_spinner, guide_status_rows/text) - Clean up || false / if false remnants from event_loop - Remove last_spinner_draw throttle (was only for guide_running) - Remove empty Drop impl for AgentLoop - Remove scopeguard dependency (no longer used) - Remove ~20 guide-specific i18n Msg variants and translations - Update parallel_edit imports from sub_agent:: to parallel_edit:: The /guide command now uses the skill-based path (expand_skill + auto-install). parallel_edit's SubAgentTask/Pool and SubAgentConfig are unaffected. 5 天前
Auto-commit at turn #1 (8 files changed) 6 天前
Merge feat/telemetry-v2 into release/v4.20.1 Integrates the atomcode-telemetry crate (new) with the MCP support, Ollama function-calling, and background-commands features from release. Key resolutions: - CLI Commands enum: kept both Mcp(McpCli) and Telemetry { action } variants - atomcode_tuix::run(): added mcp_registry + mcp_connect_rx + telemetry params - LoopCtx: added both mcp_registry/mcp_connect_rx/mcp_reload and telemetry fields - runner.rs: kept telemetry scope + tel_return! macro; added unwrap_doubly_nested_args from HEAD into v2's ToolCallDone arm; preserved HEAD's async ToolRegistry API - bash.rs: merged HEAD's enhanced netcat/mknod security detection with v2's code structure improvements; added visit_f64 to lenient deserializer - agent/mod.rs: took HEAD's emit_rich_context_stats().await form - daemon/main.rs: kept register_sync form + telemetry Disabled("daemon") init - commands.rs: took HEAD (mcp, background, init; no /fixissue) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 1 个月前
统一 ATOMCODE_HOME 路径语义:设置 ATOMCODE_HOME 后不再多加 .atomcode 这一级 13 天前
Auto-commit at turn #1 (8 files changed) 6 天前
feat(tool): expose TodoTool as public module The TodoTool source file was added in ad6f2ff but never declared as a public module in tool/mod.rs, so it was orphaned — external crates (atomcode-air, atomcode-cli, etc.) couldn't import TodoTool to register it in their ToolRegistry. Add the missing "pub mod todo" line so the tool becomes importable. Drive-by: drop the pub qualifier on TodoTool::format_list because it returns a value that references the private TodoItem struct. The function is only ever called via Self::format_list inside todo.rs itself, so making it private silences the private_interfaces warning without affecting the public API. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> 30 天前
Merge feat/telemetry-v2 into release/v4.20.1 Integrates the atomcode-telemetry crate (new) with the MCP support, Ollama function-calling, and background-commands features from release. Key resolutions: - CLI Commands enum: kept both Mcp(McpCli) and Telemetry { action } variants - atomcode_tuix::run(): added mcp_registry + mcp_connect_rx + telemetry params - LoopCtx: added both mcp_registry/mcp_connect_rx/mcp_reload and telemetry fields - runner.rs: kept telemetry scope + tel_return! macro; added unwrap_doubly_nested_args from HEAD into v2's ToolCallDone arm; preserved HEAD's async ToolRegistry API - bash.rs: merged HEAD's enhanced netcat/mknod security detection with v2's code structure improvements; added visit_f64 to lenient deserializer - agent/mod.rs: took HEAD's emit_rich_context_stats().await form - daemon/main.rs: kept register_sync form + telemetry Disabled("daemon") init - commands.rs: took HEAD (mcp, background, init; no /fixissue) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 1 个月前
Merge feat/telemetry-v2 into release/v4.20.1 Integrates the atomcode-telemetry crate (new) with the MCP support, Ollama function-calling, and background-commands features from release. Key resolutions: - CLI Commands enum: kept both Mcp(McpCli) and Telemetry { action } variants - atomcode_tuix::run(): added mcp_registry + mcp_connect_rx + telemetry params - LoopCtx: added both mcp_registry/mcp_connect_rx/mcp_reload and telemetry fields - runner.rs: kept telemetry scope + tel_return! macro; added unwrap_doubly_nested_args from HEAD into v2's ToolCallDone arm; preserved HEAD's async ToolRegistry API - bash.rs: merged HEAD's enhanced netcat/mknod security detection with v2's code structure improvements; added visit_f64 to lenient deserializer - agent/mod.rs: took HEAD's emit_rich_context_stats().await form - daemon/main.rs: kept register_sync form + telemetry Disabled("daemon") init - commands.rs: took HEAD (mcp, background, init; no /fixissue) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 1 个月前
Merge feat/telemetry-v2 into release/v4.20.1 Integrates the atomcode-telemetry crate (new) with the MCP support, Ollama function-calling, and background-commands features from release. Key resolutions: - CLI Commands enum: kept both Mcp(McpCli) and Telemetry { action } variants - atomcode_tuix::run(): added mcp_registry + mcp_connect_rx + telemetry params - LoopCtx: added both mcp_registry/mcp_connect_rx/mcp_reload and telemetry fields - runner.rs: kept telemetry scope + tel_return! macro; added unwrap_doubly_nested_args from HEAD into v2's ToolCallDone arm; preserved HEAD's async ToolRegistry API - bash.rs: merged HEAD's enhanced netcat/mknod security detection with v2's code structure improvements; added visit_f64 to lenient deserializer - agent/mod.rs: took HEAD's emit_rich_context_stats().await form - daemon/main.rs: kept register_sync form + telemetry Disabled("daemon") init - commands.rs: took HEAD (mcp, background, init; no /fixissue) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 1 个月前
fix(skill): fallback bare skill name to skills: namespace in use_skill tool 1 个月前
fix(web_fetch): 修正 approval() 端对端测试断言 三个 approval() 测试的断言与函数实际行为不符: - approval_auto_approves_localhost_literal: 断言 AutoApprove,但 127.0.0.1 不在 allowlist 中,approval() 实际返回 RequireApproval - approval_auto_approves_file_scheme: 断言 AutoApprove,但 file:// URL 没有 host,approval() 实际返回 RequireApproval - approval_auto_approves_unknown_domain: 断言 AutoApprove,但 example.com 不在 allowlist 中,approval() 实际返回 RequireApproval 这些错误断言掩盖了 approval() 与 execute() SSRF 防护策略之间 的一致性:对非白名单 URL 要求审批,execute() 再做二次校验。 修复方案:更新测试名称和断言以正确反映 approval() 行为。 2 天前
fix(web_search): kill curl on drop + 20s tokio timeout backstop Two cancellation-robustness gaps closed: 1. cmd.kill_on_drop(true) — without it, tokio's default is to leave the spawned curl child running when the tool future is dropped (e.g. when the outer select! picks cancel.cancelled() on Ctrl+C). The output().await future stays structurally Pending until curl finishes on its own, which is why a Ctrl+C during web_search felt unresponsive even though TurnRunner had moved on. 2. tokio::time::timeout(20s, cmd.output()) — belt-and-suspenders on top of curl's own --max-time 15. If curl somehow doesn't honour its flag (DNS wedge, broken-pipe edge cases, child-reap stuck), the tokio-level deadline still pops the future. Matches the reqwest::timeout(20s) backstop web_fetch already uses. The timeout branch returns a graceful ToolResult{success: false} explaining the 20s deadline, so the model gets a usable signal instead of a hung tool. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> 7 天前
Auto-commit at turn #1 (8 files changed) 6 天前