|
|
f917e5bfd6
|
fix(wb): 国际版无独立签到活动,不再调 daily-checkin,详情页展示说明卡
|
2026-10-10 02:34:27 +08:00 |
|
|
|
809b8db2d3
|
fix(wb): 余额与 token 刷新按区域分流(INTL 走 workbuddy.ai,CN 保持 workbuddy.cn/copilot.tencent.com)
|
2026-10-10 01:59:06 +08:00 |
|
|
|
1dd72986f5
|
fix(wb): CN 恢复软件内登录;INTL 从绑定后直接打开系统浏览器并按官方接口轮询回填
|
2026-10-10 01:45:05 +08:00 |
|
|
|
525b91f370
|
feat(login): Trae/WorkBuddy INTL 提供手机浏览器登录并自动回填;Trae CN 保留软件内登录
|
2026-10-10 01:17:56 +08:00 |
|
|
|
dab9b7b272
|
feat(trae): 详情页直接展示 INTL 用量事件,INTL 充值改外部浏览器
|
2026-10-10 00:17:03 +08:00 |
|
|
|
5a12f10d4e
|
feat(trae): INTL 显示美元用量额度 $0.00 / $1.00
- 详情页主余额与首页卡片新增「美元用量额度」行(basic_usage_limit/used)
- 账户信息卡同步展示已用/总额美元额度
- 设备已实测:Free plan / $0.00 / $1.00 + 月请求配额
|
2026-10-09 23:14:52 +08:00 |
|
|
|
6dfb9ecb71
|
fix(trae): 详情页主余额改为 Free plan 月配额展示
- 详情页顶部「当前余额」在 INTL 美元计费时显示套餐名 + 月配额明细,不再显示 0 Credits
- 设备已实测:Free plan / 10次/月 / 50次/月 / 1000次/月 / 5000次/月
|
2026-10-09 22:42:46 +08:00 |
|
|
|
8062a54252
|
fix(trae): 国际版移除签到卡,详情页按美元/月配额展示
- INTL 详细页不再显示每日签到卡(国际版无签到体系),改为说明卡
- Trae 账户信息卡在美元计费时显示套餐名 + Premium 快速/慢速、高级、自动补全月配额
- INTL 不再生成 0 积分权益包计数,避免残留“积分”字样
|
2026-10-09 22:31:20 +08:00 |
|
|
|
cf6f426a36
|
feat(trae): INTL 美元计费展示 + apiHost + 充值入口 + INTL 网关修正
- Trae 凭据新增 apiHost(回调 host 自动保存,如 api-us-east.trae.ai)
- INTL 余额改走官方 v1 计费接口(grow-normal/api-us-east),解析 Free plan 请求额度(Premium fast/slow、高级、自动补全)
- 首页 INTL 不再显示空 0 Credits,改为按月配额展示
- Trae 凭据页新增「充值 / 升级」入口(CN→trae.cn/subscription,INTL→trae.ai/pricing)
- INTL 模型/对话网关修正为 core-normal.trae.ai(实测接口有效)
|
2026-10-09 22:11:48 +08:00 |
|
|
|
deea17bf6e
|
feat(trae): 粘贴回调导入 JWT + 浏览器回调服务器自动回传
- Trae 表单新增「登录回调链接」粘贴框,支持整条 http://127.0.0.1:18080/authorize?... 解析并填入 JWT
- 「在浏览器中打开登录入口」改为启动本地 18081 回调服务器 + 浏览器登录,登录完自动保存(Sub2API 同款)
|
2026-10-09 18:38:01 +08:00 |
|
|
|
68cdbcf0b0
|
fix(trae): 回调兼容 localhost/fragment,pageStarted 兜底拦截
- 识别任意 127.0.0.1/localhost:18080/authorize 回调(http/https、query/fragment)
- shouldOverrideUrlLoading 未触发时在 onPageStarted 拦截并停止加载,避免卡 Authenticating
|
2026-10-09 18:01:06 +08:00 |
|
|
|
9db3e01d49
|
fix(trae): 支持回调仅带 refreshToken 时自动兑换 JWT
- 登录回调不再只认 userJwt;老流程只回传 refreshToken 时调用 ExchangeToken 兑换 Cloud-IDE-JWT
- 兑换失败给出明确提示,不再永远停在 Authenticating
|
2026-10-09 17:21:48 +08:00 |
|
|
|
56969cb879
|
fix(webview): 子资源连接关闭不再误报整页失败
- ERR_CONNECTION_CLOSED 若来自图片/脚本/统计等子资源,忽略并继续等待主页面
- 页面进度继续推进时自动清除瞬时错误提示
|
2026-10-09 17:11:35 +08:00 |
|
|
|
d5a152ef1e
|
fix(wb): 按官方客户端补齐登录请求头并延长 INTL 授权超时
- WorkBuddy auth/state 改用 VSCode(国内)/workbuddy-ai(INTL) platform,与官方客户端一致
- 补齐 Origin/Referer/X-Client-ID/X-Client-Version/X-Product/X-No-Authorization
- INTL 浏览器登录等待时间从 120s 延长到 15 分钟,普通用户邮箱/验证码流程不会再中途超时
|
2026-10-09 16:41:35 +08:00 |
|
|
|
7574c3c7fb
|
fix(login): 页面加载反馈 + WB 凭证解析容错 + 系统浏览器登录入口
- 登录页新增加载进度条、加载失败提示和重试
- 顶部新增「在浏览器打开」:Trae 谷歌登录被 WebView 拦时可走系统浏览器(沿用本机 Chrome 的 Google 登录态)
- WorkBuddy 轮询兼容 accessToken/access_token/token/authToken 等返回结构,失败时打印调试日志
|
2026-10-09 16:32:36 +08:00 |
|
|
|
46b4d457b8
|
fix(login): 每次登录自动清除 WebView 登录态
登录前自动清 Cookie/WebStorage,避免上一个号码的登录态串到新账号。账号凭据本身已按账号 ID 独立保存。
|
2026-10-09 15:35:19 +08:00 |
|
|
|
d6e4d34a42
|
fix(login): INT L 登录走对应域名 + 可清除 WebView 登录态
- Trae INTL 登录改打开 trae.ai 授权页,不再误开 trae.cn
- WorkBuddy auth state/token 按区域切换 copilot.tencent.com / workbuddy.ai
- 登录页新增「清除登录」按钮:清 Cookie/WebStorage 后重开,避免沿用上一个号码的登录态
- 新建账号表单保持留空(确认逻辑已存在),登录结果回填新账号
- 版本升至 1.7.9
|
2026-10-09 15:28:00 +08:00 |
|
|
|
eb4451c4de
|
feat(proxy): CN/INTL 配置与模型列表完全分离
- 模型 Provider 改为按区域独立列表:Trae CN/INTL、WorkBuddy CN/INTL 各自拉取,不再互相覆盖
- 拉模型按区域取账号:未配置该区域账号时返回失败并保留内置兜底
- WorkBuddy 凭据表单补充区域(CN/INTL)选择,解决国际版无处配置的问题
- 账号管理列表显示 CN/INTL 区域徽标,一眼区分
- 版本升至 1.7.8
|
2026-10-09 12:26:12 +08:00 |
|
|
|
1a96bcb105
|
feat(proxy): WorkBuddyModelProvider 增加 supports 判断
供聚合路由按模型匹配 WorkBuddy 供应商。
|
2026-10-09 11:51:24 +08:00 |
|
|
|
597632dad3
|
feat(proxy): 聚合网关——按模型自动选供应商并失败切换
Release / build (push) Waiting to run
- ProviderRouter 重构为聚合路由:请求只写 model,网关自动匹配供应商
- 候选按历史速度排序,上游不可用/HTTP>=400/抛错自动切换下一个
- Sub2API 作为通用兜底;显式前缀 traecn-/wbintl- 仍可强制指定
- 显式前缀转发前自动剥离,避免上游收到 traecn-glm-5.2 这类模型名
- 内存速度/冷却统计:失败供应商冷却 30s 起步、指数退避
- 版本升至 1.7.7
|
2026-10-09 11:49:38 +08:00 |
|
|
|
f13b38c02b
|
feat(proxy): 按代理/区域区分模型列表与选择
Release / build (push) Waiting to run
- 新增“代理”下拉:Trae CN/INTL、WorkBuddy CN/INTL
- WorkBuddyModelProvider 在线拉取 /v2/enterprises/personal/models
- Trae/WorkBuddy 各区域独立记住所选测试模型
- 真实代理转发仍按前缀自动路由,不受测试选择影响
- 版本升至 1.7.6
|
2026-10-09 11:21:53 +08:00 |
|
|
|
0241840f9c
|
feat(proxy): Trae 模型切换 + 在线拉取模型列表
Release / build (push) Waiting to run
- 设置页新增模型下拉选择,内置参考映射兜底
- TraeModelProvider 在线拉取账号可用模型(/api/remote/v1/models)
- 选中模型持久化,作为反代缺省模型
- 常用 OpenAI/Claude 模型名自动映射到 Trae 内部模型
- 修复探针测试请求体混入反斜杠导致 JSON 无效的问题
- 版本升至 1.7.5
|
2026-10-09 11:03:27 +08:00 |
|
|
|
fbbca4a03b
|
feat(proxy): 探针结果结构化摘要,不再刷屏原始参数
Release / build (push) Waiting to run
- 显示:请求行/模型/messages数/stream、HTTP、事件帧数、模型、文本摘要、用量、错误
- 原始请求+响应仍完整保留,点“复制原始”一键复制
- 版本升至 1.7.4
|
2026-10-09 10:46:30 +08:00 |
|
|
|
dcd5cab2b2
|
feat(proxy): 探针输出美化 + 一键复制原始输出
Release / build (push) Waiting to run
- 调试输出改为滚动等宽代码块,状态一眼可读
- 新增“复制全部”按钮,一键把原始输出写入剪贴板
- 版本升至 1.7.3
|
2026-10-09 10:28:19 +08:00 |
|
|
|
ada750df7e
|
fix(proxy): Trae messages.content 转原生块数组,修复 4001
Release / build (push) Waiting to run
- 上游 LLMRawMessage.messages.content 要求 []*LLMRawMessageContent
- 字符串转 [{"type":"text","text":...}],列表块按 text/input_text 归一
- 版本升至 1.7.2
|
2026-10-09 10:21:48 +08:00 |
|
|
|
481c57c535
|
feat(update): 已下载 APK 直接复用 + 安装失败可重试不重下
Release / build (push) Waiting to run
- downloadApk 检测同版本已完成文件,存在则跳过下载
- 下载先写 .part 再改名,避免半截文件被误用
- install 失败保留 Ready(file, error),UI 显示重试安装
- NeedInstallPermission 携带文件,开启权限后可继续安装
|
2026-10-09 10:11:26 +08:00 |
|
|
|
fa796d57b5
|
fix(proxy): 修复 Trae Authorization 头发成字面量 jwt + 补全 SOLO 头
Release / build (push) Waiting to run
- 上一版把 \ 写成了字符串 jwt,Trae 收到 Cloud-IDE-JWT jwt 必然被网关拒绝
- 完整 SOLO 头集合对齐 trae2api-cn:x-app-version/x-lscbd-*/x-ttnet-* 等
- 版本升至 1.7.0
|
2026-10-09 10:02:07 +08:00 |
|
|
|
4597fb0f8e
|
fix(update): canRequestPackageInstalls 包 try/catch,旧包也不闪退
Release / build (push) Waiting to run
- 旧版本未声明 REQUEST_INSTALL_PACKAGES 时调该 API 本身会抛 SecurityException
- 现在降级为 capture 后按 false 处理,引导去系统设置开启未知来源
- 版本升至 1.6.9
|
2026-10-09 09:46:06 +08:00 |
|
|
|
5adf053b6f
|
fix(update): 声明 REQUEST_INSTALL_PACKAGES 权限并加固安装流程
Release / build (push) Waiting to run
- 缺少该权限时部分 ROM 启动系统安装器会被拒绝/闪退
- install() 整体容错:FileProvider URI 失败、ACTION_VIEW 失败均捕获并回退 ACTION_INSTALL_PACKAGE
- 版本升至 1.6.8
|
2026-10-09 09:38:52 +08:00 |
|
|
|
d0b79cf1bd
|
fix(proxy): Trae CN 上游换用 trae-api-cn.mchost.guru,修正 404
Release / build (push) Waiting to run
- trae-api-cn.mchost.guru/api/agent/v3/llm_utils_chat 才是模型网关
- api.trae.cn 只是账号/OAuth 主机,不暴露 IDE 模型路由
- 请求头对齐参考实现:真实 x-app-id / x-ide-version / 设备指纹
- llm_utils_chat body 收敛为 SOLO 结构(config_name/model/function/stream)
|
2026-10-09 09:29:40 +08:00 |
|
|
|
a4d854271f
|
feat(proxy): 设置页新增 Trae/WorkBuddy 流式探针
- 用默认账号直接请求 llm_utils_chat/v2 chat,抓取上游原始 SSE 帧
- 调试输出显示 HTTP 状态、Content-Type 与最多 80 行原始帧
- 为 StreamNormalizer 提供真实协议样本
|
2026-10-09 08:08:47 +08:00 |
|
|
|
67e1f060c5
|
feat(proxy): 网关随机 API Key + 启动失败提示
- SettingsViewModel 每次进程生成随机本机 Key,start 失败时暴露错误信息
- Settings 页显示 API Key 与错误提示
|
2026-10-09 00:04:55 +08:00 |
|
|
|
de95013164
|
feat(proxy): stream=true 实时透传上游 SSE 字节流
- Ktor respondOutputStream 逐块转发上游 body,不再整包缓冲
- 流式/非流式按客户端 body 的 stream 字段分流
- openStreamingChat 入口正式接线
|
2026-10-08 23:52:12 +08:00 |
|
|
|
1609e210bd
|
fix(proxy): 修复 WorkBuddy/Trae 鉴权头、401、模型前缀 + 流式入口骨架
- WorkBuddyChatProxy/TraeChatProxy:Authorization 插值去掉误转义
- KtorLocalProxyServer:authorized() 失败返回 401
- 路由剥离 wbcn-/traecn- 等前缀后再转发,Trae config_name/model_name 不再带前缀
- Sub2ApiChatProxy 去掉 IOException 吞掉逻辑
- 新增 ProxyUpstreamStream 与三个代理的 openStreamingChat 入口(暂未接入实时转发)
|
2026-10-08 23:44:44 +08:00 |
|
|
|
a1605e6993
|
feat(proxy): M2 账号池轮询 + 会话粘性 + 双区域路由
- ProviderRouter:前缀路由到 WorkBuddy CN/INTL、Trae CN/INTL、OpenAI 兼容
- AccountPool:从 CredentialRepository 实时取号,round-robin + 会话粘性(X-Conversation-Id / user)
- 账号按 credential.region 与路由区域匹配,找不到时回退全部账号
- WorkBuddy/Trae 代理支持 forcedRegion 覆盖
- Ktor 路由接入账号池
|
2026-10-08 23:34:35 +08:00 |
|
|
|
11b9065f82
|
feat(proxy): M1b WorkBuddy CN/Trae CN 适配 + 设置页网关开关
- KtorLocalProxyServer:修复审计阻断项(start/stop 加锁、apiKey Bearer 鉴权、IOException 502、请求体上限、错误 JSON 规范化)
- WorkBuddyChatProxy:转发到 copilot.tencent.com/v2/chat/completions,Bearer accessToken + IDE 请求头
- TraeChatProxy:转发到 api.trae.cn/api/agent/v3/llm_utils_chat,Cloud-IDE-JWT 身份/设备头,最小 body 转换
- Credential.WorkBuddyCredential 增加 region 字段(默认 CN,兼容旧数据)
- Settings 页新增代理网关开关(默认 127.0.0.1:8787,本机 Key: rainytoken)
|
2026-10-08 23:23:16 +08:00 |
|
|
|
85c6cf4283
|
feat(proxy): M1a 本地 HTTP 服务 + Sub2API 透传
- 引入 Ktor 3.0.3(server-core / cio / content-negotiation / kotlinx-json)
- Sub2ApiChatProxy:把 /v1/chat/completions 与 /v1/models 透传到用户配置的 Sub2API 实例
- KtorLocalProxyServer:绑定 127.0.0.1:8787,提供 /health、/v1/models、/v1/chat/completions
- NetworkModule 提供 Hilt 注入
|
2026-10-08 22:58:33 +08:00 |
|
|
|
9d3c004617
|
feat(proxy): 新增反代网关骨架与开发路线图
- docs/PROXY-ROADMAP.md:M0-M4 里程碑、Provider 矩阵、风险与参考仓库
- data/proxy/:ProviderKind/ProviderRegion/ProxyModels/ProviderAdapter/AccountPool/RegionRouter/LocalProxyServer 接口骨架
- .gitignore:忽略 _tmp_* 调试文件,防止真实接口响应/账号数据入库
|
2026-10-08 22:22:45 +08:00 |
|
|
|
79f99f5dee
|
fix(credential): 多账号会话凭据按请求账号精确匹配;UI微调
- CredentialRepository 快照新增 requestedAccountId,暂存凭据严格按请求账号匹配,
避免 A 账号刷新期间把暂存凭据误交给默认账号/其他账号
- Dashboard 首页提示与自动签到开关改为卡片样式,开关配色对齐雨晴粉主题
- 默认账号徽标加 maxLines/softWrap 防窄屏换行
|
2026-10-08 22:16:06 +08:00 |
|
|
|
2509ab8a85
|
feat(update): 设置页新增检测更新/下载APK/自动安装;接入Gitea update.json清单
|
2026-10-08 21:42:45 +08:00 |
|
|
|
ceb5e6a268
|
feat(checkin): 签到记录含日期/状态/id/数量,失败可当天重试;同步本地主题与组件改动
|
2026-10-08 21:08:22 +08:00 |
|
|
|
ffc06a38ca
|
feat(account): 多账号体系、Sub2API token 自动刷新与面板按账号隔离
- Trae/WorkBuddy/Sub2API 支持多账号:每账号一张首页卡片、可设默认账号
(小组件/每日自动签到仅作用于默认账号),新增账号管理页
- 每日自动签到按账号执行,签到结果弹窗汇报(含积分变动)
- 移除独立的 UsageStat 页,用量并入服务详情
- Sub2API 面板 token 过期自动用邮箱+密码重登并回写该账号,
自动重登失败才引导手动网页登录;并发 401 按账号互斥去重
- Sub2API 面板管理(Key/分组/兑换码)按当前账号隔离
- 首页恢复每账号一张普通卡片(回退叠放卡组样式)并保留历史排序兼容
- WebView 登录自动识别成功、去掉手动确认弹窗;登录后立即刷新余额
- 修复积分占位符泄漏(%1$s /%2$s 积分)
|
2026-09-15 23:32:51 +08:00 |
|
|
|
1791fa6436
|
fix: 登录后余额不刷新 + 明细中英文本地化
- WebViewLogin 登录成功后 popBackStack 到 SERVICE_DETAIL,让详情页
ON_RESUME 自动刷新余额;back stack 无 SERVICE_DETAIL 时 fallback
到 guardedPop() 避免卡住
- GenericExtrasCard 重写:11 个已知技术 key 映射为三语本地化标签,
布尔值格式化为是/否,consumption_ratio 格式化为百分比
- 三语 strings.xml 新增 13 个 extra_label_* / extra_value_* 字符串
- 移除 WebViewLoginViewModel/Screen 中的调试 Log
|
2026-09-13 16:37:22 +08:00 |
|
|
|
0bed6d626a
|
feat(login): Trae+WorkBuddy 软件内登录
- WebViewLoginViewModel: 新增 Trae OAuth 回调解析(onTraeCallback)
和 WorkBuddy 设备授权流(bindWorkBuddy+pollWorkBuddyToken)
- WebViewLoginScreen: 添加 shouldOverrideUrlLoading 拦截 Trae 回调
(http://127.0.0.1:18080/authorize), loginUrl 为空时显示加载指示器
- CredentialEditScreen: TraeCredentialForm 和 WorkBuddyCredentialForm
顶部添加'软件内登录'按钮(OutlinedButton)
- strings.xml(三语): 新增 action_login_in_app 和 error_login_timeout
- 修复: WorkBuddy 网络请求包裹 withContext(Dispatchers.IO) 防止
NetworkOnMainThreadException
|
2026-09-13 14:57:33 +08:00 |
|
|
|
085a4d722f
|
feat(checkin): 签到语义化结果 + 多语言 + 轮换/并发安全
- Repository 改为返回语义化 CheckinOutcome(不再直出硬编码中文),
UI 经 UiText 按 Locale 解析;补齐三语言文案(含连签/需配置凭据/已签禁用态)
- WorkBuddy authedPost 改 sealed 结果:失败也回传轮换出的新 token,
多候选路径共享轮换状态,避免旧 refreshToken 单次消费后卡死(永久 401)
- 签到的凭据写入改走 RefreshBalanceUseCase.withCredentialSession,
按快照校验提交,避免并发改凭据被旧快照覆盖(lost update)
- Trae 仅在实际被服务端接受时才标记 lastVerifiedAt(400 业务失败不标记)
- DEVICE_BLOCKED 改用 Notice 态:不置灰按钮,与「今日已签到」语义区分
- 新增 TraeRepositoryTest(10) / WorkBuddyRepositoryTest(5),纯 JVM 解析用例
|
2026-09-13 14:01:27 +08:00 |
|
|
|
3b4cd103d0
|
fix(sub2api): tab改纯文字样式;去掉多余「按模型」标题;今天明细按小时
1. 「按模型 / 按 Key」tab 从 FilterChip 按钮改为纯 Text + clickable,
去掉按钮背景和圆角,更像文字标签而非按钮。
2. MODEL tab 下方原来有一行「按模型」小标题(sub2_models_header),
和 tab 本身重复,去掉。
3. 「今天」窗口的每日用量明细从隐藏改为按小时倒序列出,
每行显示 HH:00 + 请求/tokens/费用。
|
2026-09-13 13:14:49 +08:00 |
|
|
|
78f93588f8
|
fix(sub2api): 修复柱状图不显示——接入按小时趋势
详情页「今天」窗口柱状图只有一根按天柱子看不出分布,
原因是 hourlyTrend / onLoadHourlyTrend 参数从未从 Screen 传入 Card。
修复:
- VM 新增 hourlyTrend StateFlow + loadHourlyTrend(date) loader
- Screen 传入 hourlyTrend + onLoadHourlyTrend 回调
- Card 的 onLoadHourlyTrend 改为 (LocalDate) -> Unit,今天窗口时拉取小时趋势
- detailTab 状态去掉 remember(detail) 依赖,避免后台刷新余额时重置 tab 选中
|
2026-09-13 12:18:11 +08:00 |
|
|
|
dc3027417e
|
feat(sub2api): 详情页新增「按 Key」tab;面板管理按钮间距收紧
详情页「按模型」分区改为 tab 切换:按模型 / 按 Key。
按 Key tab 调 GET /api/v1/usage/stats?api_key_id=N 逐个查询,并行拉取;
未使用的 Key(404)显示为 0 而非报错。
面板管理「复制/分组/删除」三个操作从 TextButton 改为可点击 Text,
去掉 58dp 最小宽度带来的过大间隔(用户反馈「间隔有点宽」)。
补齐三语言缺失字符串(sub2_home_spend / sub2_panel_delete_confirm_*
/ sub2_trend_account_scope / sub2_tab_by_* / sub2_no_key_data /
sub2_key_unused)。
|
2026-09-13 11:44:00 +08:00 |
|
|
|
100b698f38
|
feat(sub2api): 面板管理支持删除 Key;用量明细修柱状图与按小时趋势
|
2026-09-13 00:46:04 +08:00 |
|
|
|
bc862df226
|
fix(sub2api): 余额标签与数字同行;请求次数改为「消耗 N 次」
|
2026-09-13 00:02:16 +08:00 |
|