文件最后提交记录最后更新时间
feat: 为 CodingPlan API 添加 ATOMCODE_CODINGPLAN_API_BASE 环境变量覆盖 将 API_BASE 常量替换为通过 OnceLock 缓存的 api_base_url() 函数, 首次调用时读取 ATOMCODE_CODINGPLAN_API_BASE 环境变量(去除前后空白和尾部斜杠), 未设置时回退到默认值 api.gitcode.com/api/v5。 Co-Authored-By: AtomCode (Qwen/Qwen3.6-35B-A3B) <noreply@atomgit.com> 14 天前
feat(plugin): multi-marketplace bootstrap with auto plugin install Support multiple default marketplaces (atomcode-plugins-official + atomcode-skills), auto-install plugins from eligible marketplaces on first bootstrap, and install newly-added plugins on marketplace update. Also update LLM gateway to production URL (pre-llm-api → llm-api). 5 天前
fix(codingplan): open-source build sees "official build required" up-front Previously an open-source build (no codingplan-crypto feature) pointed at the AtomGit LLM gateway would either: 1. Be told CpAuthRequired ("run /codingplan") even though /login can never fix the missing signer — a frustrating dead-end loop. 2. Get NO friendly error at all, because commit 437179ae (send_with_retry_resign) wrapped the per-attempt build_codingplan_headers call in .unwrap_or_default() — any signing failure silently produced empty headers, the gateway returned an opaque 403, and the actionable CpOfficialBuildRequired hint never reached the user. Two coordinated fixes: a) Reorder build_codingplan_headers so signer availability is checked BEFORE auth state. Open-source build → CpOfficialBuildRequired immediately, regardless of whether auth.toml is populated. Official builds (signer_available() == true) fall through to the original auth check, preserving the "official user forgot /login → /codingplan hint" UX the previous ordering was designed for. b) Add a precheck_codingplan_headers call at the top of chat_stream's spawned task, so the friendly error surfaces BEFORE the retry-factory loop that would otherwise swallow it. Signer availability + auth state don't depend on body content, so a zero-byte probe is sufficient. c) New Msg::StatusOfficialBuildRequired status-bar hint (red, highest priority — beats StatusNoProvider, monitor warnings, usage hint, upgrade banner). Surfaces the dead-end at startup so users don't need to send a chat to discover their build can't talk to the gateway. The new ordering required promoting is_atomgit_gateway from pub(crate) to pub and adding pub fn signer_available() cfg-gated on the codingplan-crypto feature. Both are re-exported from coding_plan for the tuix status-bar consumer (status-bar edit committed separately in 7f23417a — note: that commit references these symbols so this commit must land for the branch to compile). Tests: - new open_source_build_errors_official_build_required_before_auth_check pins the signer-first ordering (regression guard). - existing build_signed_headers_errors_when_atomgit_host_* still pass. - new signer_available_reports_{false_in_open_source,true_in_official}_build. 8 天前
fix(coding-plan): 月度额度耗尽时按 quota_exhausted 判定,抑制 0% 滚动窗口误导 服务端在月度满后把月度窗口标记 quota_exhausted=true 但 show_enable=0(隐藏原始 用量行),同时仍显示 5h 滚动窗口的 0%。旧逻辑用 show_enable==1 找耗尽窗口,漏掉 被隐藏的月度窗口,转而渲染滚动窗口的「用量约 0%」,给人「还有额度」的错觉。 - 新增共享判定 blocking_exhausted_window:按 quota_exhausted(而非 show_enable) 识别真正阻塞的长窗口(>5h),/login 与 /status 共用一套规则。 - /status 此前完全未读 rate_limit_windows,仅依赖旧顶层字段;现补上同款分支并 新增 StatusCpMonthlyExhausted 文案(中/英),rate_limit_windows 为空时仍走旧路径。 - 测试:把 render_monthly_exhausted_suppresses_short_window_line 的月度窗口 show_enable 改为 0(贴近真实数据),新增 blocking_exhausted_window 单测。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 3 天前
统一 ATOMCODE_HOME 路径语义:设置 ATOMCODE_HOME 后不再多加 .atomcode 这一级 13 天前
fix(codingplan): 漂移监控按用户实际档位查询模型列表,消除 Lite/Pro 永久误报 models-v2 的 plan_available 是相对所请求的 plan_type 计算的(ModelEntry 文档): setup 用用户实际档位(如 Lite)请求并注册 provider,但漂移监控 spawn_check 硬编码用 PlanType::Max 请求——Max 档下高档模型(如 GLM-5.1)也被标成 plan_available=true, 服务端列表比本地(按实际档位配置)多出来,decide_warning 永久返回 StaleList,状态栏 一直显示"CodingPlan 模型列表更新 — 可执行 /login"。 - types.rs:新增纯函数 PlanType::from_plan_name,把 /status 的 plan_name 映回档位; 无法识别(Free/空)返回 None。 - monitor.rs:spawn_check 先 status_v2() 取真实档位,再以该档位请求 list_models_v2; 无法确定档位时静默跳过,不再用 Max 兜底。升级套餐后自纠正。 新增测试 plan_type_from_plan_name;monitor/coding_plan 既有测试全过。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> 1 天前