| Files | Last commit | Last update |
|---|---|---|
feat(eval): add reliable headless model benchmarking Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 months ago | |
chore(release): finish v5.1.0 reference cleanup and fix y18n lockfile The v5.1.0 bump missed the follow-up cleanup that v5.0.9 had (eda3e3ef), leaving 5.0.9 test fixtures behind: - version_check.rs / updater lib.rs: version-compare fixtures - retained.rs / event_loop commands.rs: release branch refs - vscode process.ts / daemon-identity.test.ts: daemon identity Also revert a bogus dependency bump: the v5.0.9 release commit rewrote y18n from 5.0.8 to 5.0.9, a version that does not exist on npmjs or npmmirror (latest is 5.0.8), while keeping the 5.0.8 integrity hash. Restore 5.0.8 in both lockfiles. Co-Authored-By: AtomCode (deepseek-flash) <duxin@csdn.net> | 1 month ago | |
feat(config): make every server address configurable Service addresses are consts spread across eight crates — the auth broker, the CodingPlan control plane and LLM gateway, the update manifest and download base, the desktop link, the relay, the default plugin marketplaces, and the git hosts trusted enough to receive an OAuth token. Running the client against anything else means editing source in eight places. Add atomcode-config::endpoints as the single place each one resolves, and route the existing call sites through it. Each address is its own variable holding a complete URL, with today's value as the default. Deliberately no single "domain" knob the rest derive from. That would only work for a deployment that copied our subdomain layout; a real one has its auth broker at sso.corp.example, its gateway at ai.corp.example/v1, its mirror on an IP and port. Whole URLs make no assumption. This is additive. With nothing configured every address is byte-identical to the const it replaced, and nothing_configured_keeps_the_hosted_addresses pins that so a regression is a test failure rather than a support ticket. Two details were needed to keep that true: - The TLS-1.2 fallback set and the token-trust set look alike but are not. The fallback has only ever covered api.gitcode.com, while token trust covers gitcode.com and its subdomains. Sharing one list between them would have quietly widened the fallback to every gitcode.com host, so they stay separate and a test pins the difference. - Host matching does not normalize a trailing root dot. url already lowercases a parsed host but keeps atomgit.com. distinct, and that was previously untrusted. Widening a trust check is not a change to make in passing. One deliberate behaviour change: an env var that is *set but empty* now falls back to the default instead of being used verbatim. Today ATOMCODE_PLATFORM_SERVER="" builds the base URL http: — format! yields http://, then the trailing-slash strip eats both slashes — and every login request goes to http:/auth/login and fails, with nothing in the error naming the empty variable as the cause. Container environments produce empty values routinely (an optional configMap key, a bare docker run -e VAR, $UNSET in a shell script). The CodingPlan readers in client.rs and setup.rs already .filter(|v| !v.is_empty()); only oauth.rs did not, so this aligns it with the convention the repo already follows rather than introducing a new one. Two settings come along because they belong beside the addresses: - ATOMCODE_ENABLE_RELAY gates /app, defaulting to on. A deployment with no relay of its own turns the whole path off rather than letting /app reach an unrelated relay and download a client binary from a host the operator does not run. - ATOMCODE_TRUSTED_HOSTS replaces the trusted-domain set rather than adding to it. A deployment that has moved off the hosted service should stop trusting it, not accumulate both. List-valued settings distinguish absent from empty: present-but-empty means "none", which is how a deployment opts out of default marketplaces entirely. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 3 months ago | |
feat(webui): @ 提及支持递归模糊匹配(复用 CLI 的 FileIndex + /fs/search) webui 聊天框的 @ 提及此前只能逐级选目录、单层前缀匹配,输入 @applystock 直接 "No files found";CLI 的 @ 弹窗早已支持递归、gitignore 感知、跨层子串。 两边共用同一套 walk 引擎补齐 web 端: - 抽共享:FileIndex 从 atomcode-tuix 平移到 atomcode-capabilities(tools feature 下),tuix 侧留一行 re-export shim,调用点零改;新增 filter_entries (单一匹配实现)+ search_blocking(一次性全量遍历,供 daemon 无缓存调用)。 唯一耦合 crate::platform::home_dir() → dirs::home_dir()。 - daemon 新增 GET /fs/search?path=&q=:spawn_blocking 跑共享索引,返回 {path,is_dir};/fs/list 不动。daemon 依赖显式加 tools feature。 - webui:api.ts 加 searchFiles;Chat.tsx 有过滤词走 /fs/search(debounce 150ms + AbortController),无过滤词保留 listDir 逐级浏览。搜索根用 atTargetDir 以支持绝对/~ 作用域,结果补回作用域前缀后整体插入。 - 用派生的 atSearchFor 陈旧判断替代单独的 loading 布尔:消除一帧旧结果闪烁、 避免 loading 标志卡死、搜索模式下 guard 掉多余的 /fs/list 请求。 修 code-review 的 P0:from_entries 原为 #[cfg(test)],跨 crate 后 tuix 测试 二进制链接的是非 test rlib 会缺失该构造器 → 改为无条件 pub。 验证:capabilities file_index 43 绿 / daemon search_at_mention 绿 / tuix 测试 二进制可编译 / webui tsc 干净 + 217 测试全绿。未真机。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 months ago | |
fix: harden runtime lifecycle and client recovery Make session transitions and runtime terminals authoritative and fail closed across kernel, coding runtime, daemon, TUI, VS Code, and WebUI. Preserve queue and recovery state while adding regression coverage for abnormal terminals and tool-loop guards. | 3 months ago | |
Auto-commit at turn #1 (385 files changed) | 3 months ago | |
style: cargo fmt --all(bump 前存量格式债清偿) | 1 month ago | |
feat(tui): add safe rewind workflow Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 3 months ago | |
Auto-commit at turn #1 (385 files changed) | 3 months ago | |
refactor(openrouter): code-review 低危项 #5-#8/#10 #5 浏览器打不开时把授权 URL 显给用户(新 AwaitingBrowser 事件)—— headless/无 DISPLAY 不再干等超时。 #6 回调 code percent-decode(含 %2B 等),防编码字符致 401;加测试。 #7 has_codingplan legacy 分支补 base_url 检查,与新 schema 口径一致, 避免自定义命名的 CodingPlan provider 被漏判误弹 nudge。 #8 streaming 相 ESC 也置 openrouter_cancel(回合中并存的连接可取消)。 #10 两处逐字重复的 select! 事件臂抽成 handle_openrouter_connect_event, 改一处漏另一处的风险消除。 跳过: #9 编码器替换(percent-encoding 非直接依赖,手写正确且已测)、 LocalCallback/oauth accept 合并(过侵入)、ProvisionOutcome 瘦身(纯 churn)。 auth openrouter 15 + tuix 2098 全绿。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 months ago | |
feat(eval): add reliable headless model benchmarking Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 months ago | |
feat(tui): allow-all-bash danger option + transparent approval reason Add a session-scoped "allow ALL Bash (incl. destructive)" danger option to the approval panel for bash tool calls only, emitting the grant_scope:all payload that ApprovalMiddleware records under BASH_ALLOW_ALL_KEY. Also render ApprovalRequest.reason as a muted context line above the options so users can see why a re-approval is being asked. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 1 month ago | |
fix(tuix): 用量窗口重置后右下角提示不消失(过期守卫) Token 用量提示只由「最后一次抓取的 UsageInfo」驱动,无任何新鲜度判断。 slot 只在启动/切 provider/每回合结束(30s 冷却)时刷新,空闲用户在窗口 重置后不会触发 refetch,于是旧的 95%+旧重置时刻一直渲染。 修复:slot 改存 (UsageInfo, Instant) 带上抓取时刻,build_usage_hint 用 「已过秒数 >= seconds_until_reset」判定过期并抑制。用相对时长而非解析 绝对 reset_at 比对本地时钟,时区无关(服务端不会按客户端时区本地化 reset_at,解析法会对非服务端时区用户永久误抑制);> 0 守卫挡掉 placeholder 的 0 值。新增 4 个过期测试,tuix 2064 全绿。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Provider-URL: https://gitcode.com/atomgit_atomcode/atomcode | 2 months ago |
| Files | Last commit | Last update |
|---|---|---|
| 2 months ago | ||
| 1 month ago | ||
| 3 months ago | ||
| 2 months ago | ||
| 3 months ago | ||
| 3 months ago | ||
| 1 month ago | ||
| 3 months ago | ||
| 3 months ago | ||
| 2 months ago | ||
| 2 months ago | ||
| 1 month ago | ||
| 2 months ago |