文件最后提交记录最后更新时间
feat(referral): add invite referral tracking system - Add --invite= / ATOMCODE_INVITE support to install.sh and install.ps1, writing pending_invite file with invite code, install UUID, and timestamp - Create pending_invite.rs module to parse and validate pending_invite file with 30-day expiry and format checks - Add maybe_emit_install_completed() to Telemetry, emitting InstallCompleted event on first launch after referral install - Attach invite_code and install_uuid to LoginSuccess events across CLI login, daemon API login, and codingplan setup paths - Add referral.html landing page with invite code generation, metrics dashboard (devices, active users, conversion rate, settlement), leaderboard and rules 2 天前
feat(referral): add invite referral tracking system - Add --invite= / ATOMCODE_INVITE support to install.sh and install.ps1, writing pending_invite file with invite code, install UUID, and timestamp - Create pending_invite.rs module to parse and validate pending_invite file with 30-day expiry and format checks - Add maybe_emit_install_completed() to Telemetry, emitting InstallCompleted event on first launch after referral install - Attach invite_code and install_uuid to LoginSuccess events across CLI login, daemon API login, and codingplan setup paths - Add referral.html landing page with invite code generation, metrics dashboard (devices, active users, conversion rate, settlement), leaderboard and rules 2 天前
feat(plugin): auto-install default skills marketplace + auto-update on upgrade Two startup-time hooks land in plugin::bootstrap, both default-on and config-gated ([plugin] section, auto_install_default_skills and auto_update_marketplaces). Plan A — first-startup install of atomcode-skills: - Triggered when ~/.atomcode/.plugin_bootstrap_v1 marker is absent. - git clone the default skills marketplace from https://atomgit.com/atomgit_atomcode/atomcode-skills.git. - Marker is touched after the attempt (success OR failure) so the install fires exactly once per host. A later /plugin uninstall is respected — the marker stays, no auto-reinstall. - To force a retry: rm ~/.atomcode/.plugin_bootstrap_v1. Plan B — post-self-upgrade refresh of every installed marketplace: - Gated on ATOMCODE_UPGRADED_FROM env var (set by self_update::re_exec_self after a successful binary upgrade). - git pull --ff-only each installed marketplace so skills stay in lockstep with the binary. - Failures (no network, ff-only conflict, etc.) print a stderr warning and continue — never block startup. Both functions are best-effort: every error path falls through to eprintln! and atomcode boots into a working state. Wiring point: cli/main.rs after Config::load and i18n locale setup, before the TUI / headless runtime starts. Roughly 1-3 s of git subprocess time on the warm path (none on subsequent startups thanks to the marker). 8 Config{} initializers across cli/main.rs, daemon/api_config.rs, modals/onboarding_wizard.rs, coding_plan/setup.rs, vision_preprocessor.rs, tool/parallel_edit.rs, turn/tests.rs, and config/mod.rs gain plugin: Default::default() to satisfy the new mandatory field. 3 unit tests cover marker filename versioning and short-commit formatting. All 54 plugin tests + 124 config tests pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> 13 天前
fix(webui): 编辑模型时支持修改名称 name 是后端 providers map 的主键,此前 PATCH 无重命名路径,故名称输入框在编辑时被禁用。 现在让后端支持改名:PATCH 增加可选 name 字段,校验并按 key 迁移条目,命名冲突返回 409, 并在 default_provider 指向旧名时一并修正。前端放开输入框,仅在改名时传 name,改名后用新名 设默认;编辑模式也执行重复名校验(排除自身原名)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 1 天前
feat(daemon): webui 敏感路由 token 鉴权(仅 webui 模式强制,不破坏 VSCode) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 5 天前
fix(webui): /webui 用 TUI 当前会话播种 LiveSession,续聊后直接落到该会话 atomcode -c 续聊后 ctx.current_session 已是续聊会话,但 /webui 调用的是 ensure_live_session——新建空 LiveSession(空消息 + 随机 LIVE_SESSION_ID),从不把 当前会话搬进去。于是 webui 连 /live 拿到空快照、落到空白新页面而非续聊会话。 - live_api.rs:新增 ensure_live_session_seeded(initial, session_id),新建时用给定消息 播种并复用 session_id(LIVE_SESSION_ID + 执行器 id 一致,后续每轮覆盖同一会话文件、 不产生重复);ensure_live_session 改为空播种封装。lib.rs 导出之。 - commands.rs:/webui 在开浏览器之前先用 ctx.current_session 的消息+id 播种(非空才复用 id;先播种再开浏览器,避免浏览器抢先连 /live 建出空会话)。attach_live_session 加 render_snapshot 参数:/webui 传 false(画面已有该对话,跳过快照回放避免重复刷), /sync 传 true(重新附着补 webui 期间对话)。 live 测试 core(4)/daemon(3) 全过;LiveSession initial 播种本就被 core 测试覆盖。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 18 小时前
fix(webui): /webui 用 TUI 当前会话播种 LiveSession,续聊后直接落到该会话 atomcode -c 续聊后 ctx.current_session 已是续聊会话,但 /webui 调用的是 ensure_live_session——新建空 LiveSession(空消息 + 随机 LIVE_SESSION_ID),从不把 当前会话搬进去。于是 webui 连 /live 拿到空快照、落到空白新页面而非续聊会话。 - live_api.rs:新增 ensure_live_session_seeded(initial, session_id),新建时用给定消息 播种并复用 session_id(LIVE_SESSION_ID + 执行器 id 一致,后续每轮覆盖同一会话文件、 不产生重复);ensure_live_session 改为空播种封装。lib.rs 导出之。 - commands.rs:/webui 在开浏览器之前先用 ctx.current_session 的消息+id 播种(非空才复用 id;先播种再开浏览器,避免浏览器抢先连 /live 建出空会话)。attach_live_session 加 render_snapshot 参数:/webui 传 false(画面已有该对话,跳过快照回放避免重复刷), /sync 传 true(重新附着补 webui 期间对话)。 live 测试 core(4)/daemon(3) 全过;LiveSession initial 播种本就被 core 测试覆盖。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 18 小时前
feat(telemetry): webui chat 上报 mode 区分为 webui webui 此前发往 daemon 的请求不带 X-AtomCode-Client,导致 daemon 按默认值把 mode 归到 ide,无法在上报数据中区分 webui 流量。 - SessionMode 新增 Webui 变体(序列化为 "webui")并补序列化测试 - daemon 启动 match 增加 webui 映射(resolve_client_mode 中的映射随 上一提交已落入 lib.rs) - webui authHeaders() 统一为所有请求带上 X-AtomCode-Client: webui 效果:从 webui 发起的 chat,其 LlmChat(含 token 消耗)上报 mode 字段为 webui,可与 vscode/ide 区分。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 1 天前
feat(daemon): 权限桥接通道 PermissionResponders Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> 5 天前
feat(telemetry): distinguish client source via X-AtomCode-Client header - Add SessionMode::Vscode and SessionMode::AtomcodeAir enum variants - Daemon middleware resolves X-AtomCode-Client header to SessionMode: 'vscode' → Vscode, 'atomcode-air' → AtomcodeAir, else → Ide (fallback) - chat_stream extracts resolved mode from request extensions - daemon_scope helper accepts mode parameter for other handlers - VS Code extension sends X-AtomCode-Client: vscode on all requests - Also: spawn daemon with workspace cwd for correct .mcp.json loading - Also: per-project MCP registry cache (multi-window isolation) 25 天前
feat(webui): /webui stop + dev 重定向 + 文档 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 5 天前