✨ 新功能 (Features)
- install: 下载优先级“本地代理 → 镜像 → 直连”,每源重试 3 次、单次超时 60 秒
- install-online.ps1:
- 本地代理探测:HTTPS_PROXY / HTTP_PROXY / ALL_PROXY(http)> 系统代理(ProxyEnable=1,解析 http=/https= 分项)> PAC;
- 端口 3 秒内能建立 TCP 连接才使用,配置了却没启动的代理不再把每个请求拖到超时
- 路线:经本地代理直连 GitHub → 6 个镜像 → 直连 GitHub;每个请求超时 60 秒(建连与读写分别计时),每条路线最多 3 次,
- 间隔 2 秒;HTTP 4xx(该镜像不支持此地址)直接换源,超时 / 断流 / 5xx / 429 / 校验不符才重试;全部失败输出汇总后结束
- 实测 wget.la 偶发中途断流却按正常结束返回截断内容:按 Content-Length 核对长度,截断按传输失败重试
- 证书始终校验(下载的是可执行补丁与安装包;跳过校验后中间人可同时替换安装包与 SHA256 清单)
- 新增内部参数 -InjectedProxy:由 DLL 注入代理补丁后启动时传入,路线为 GitHub(经代理)→ 镜像(经代理)
- DLL(IdeExtensionPrompt.cpp):
- 在线安装前用 Hooks::IsProxyReachable()(新增,复用 ConnectTcpToProxyServer)检测 config.json 中的代理:
- 可连 → 注入本 DLL 并传 -InjectedProxy;不可连 → 不注入(否则窗口内所有连接都会被转到不可用的代理),由脚本自行尝试本机代理 → 镜像 → 直连
- 确认框按两种情况说明下载方式;日志记录代理是否可连
- IdeExtensionLogic.hpp:BuildOnlineInstallCommand 增加 injectedProxy 参数;新增 FormatProxyAddress(IPv6 加方括号),附单测
- 验证:ctest 9/9、doctor 91/91、PS 5.1 / 7 解析通过。脚本:本地代理可用 6 秒装好;代理端口不通 → 跳过 → 镜像装好;
- 不存在的版本 → 各源按规则重试 / 换源后汇总失败。IDE 2.6.0 隔离副本:config 代理可连 → 注入 + -InjectedProxy → 13 秒装好;
- config 代理不可连 → 不注入 → 经 wget.la 装好。
- ide-extension: 新增左侧活动栏侧边栏视图并优化底部状态栏展示
- 新增左侧活动栏侧边栏视图,分组展示实时代理状态与快捷操作命令。
- 优化底部状态栏,连通态使用自定义护盾图标并展示实时网络延迟。
- 状态栏与侧边栏新增连通性探测旋转动效,悬浮卡片增加彩色徽章与快捷链接。
- 更新插件主图标为双层护盾方案,新增活动栏单色自适应图标及自定义图标字体。
- 补充相关新增文案的多语言翻译,构建脚本增加 SVG 文件的 MIME 类型支持。
- core: 插件安装提示改为系统通知;只装了 DLL 时可确认后在线安装插件
- IdeExtensionPrompt.cpp:模态询问框改为 Shell_NotifyIconW 系统通知(Win10/11 为通知卡片,不抢焦点);
- 后台线程内建 HWND_MESSAGE 窗口 + 消息循环,user32 / shell32 全部动态加载(version.dll 仍只静态链接 ws2_32 / winhttp)。
- 托盘图标保留 90 秒,点击卡片 / 通知中心 / 托盘图标即同意,到期未点击视为忽略;每个 DLL 版本只提示一次,
- 通知区域不可用时不写标记、下次再提示
- DLL 同目录有 VSIX:点击即本地静默安装(沿用 antigravity-ide.cmd --install-extension)
- 只装了 DLL:不再跳过。点击通知后弹确认框完整展示将执行的命令,同意后打开可见的 Windows PowerShell 5.1 窗口运行
- install-online.ps1 -ExtensionOnly(透传扩展目录 / 用户数据目录;try/catch + Read-Host,出错窗口不会一闪而过)。
- 窗口以挂起方式创建后主动注入本 DLL,下载与 IDE 一样走 config.json 中的代理(SOCKS5 / HTTP 均可)——
- 实测不注入时直连 GitHub 超时、镜像不代理 api.github.com,安装必然失败
- 每一步写日志:通知显示 / 收起 / 点击 / 忽略、确认或取消、执行的命令、窗口进程号、注入结果、窗口退出码与最终是否装上
- IdeExtensionLogic.hpp:QuotePsSingle(含 PowerShell 视为单引号的 U+2018~U+201B)与 BuildOnlineInstallCommand,附单测
- install-online.ps1:新增 -ExtensionOnly / -ExtensionsDir / -UserDataDir:只下载 Release 中的插件 VSIX(PK 魔数 + SHA256 校验,
- 失败换源),用 IDE 命令行安装(stderr 告警不中断,只按退出码判定),不动 DLL 与 config.json;抽出 Get-VerifiedAsset 复用下载校验
- docs/ide-extension.md:第 7 节按新流程重写,已知限制补充勿扰模式说明
- 验证:ctest 9/9;PS 5.1 / 7 解析通过;-ExtensionOnly 实测下载 v2.5 插件、SHA256 通过并安装;
- IDE 2.6.0 隔离副本(DLL 改指向本地脚本服务):通知显示与收起回调 → 点击 → 确认框内容 → PowerShell 窗口经 SOCKS5
- 访问 api.github.com / github.com / release-assets 下载安装成功 → 关窗后记录结果;有 VSIX 时点击 1 秒内本地装好;
- 忽略 90 秒后写标记,重启不再提示。
- ide-extension: 状态栏提示 target_processes 缺少 agy.exe 并一键补齐
- lib/configHealth.js(新):findMissingTargets 检查必需的后端进程(agy.exe,大小写不敏感);
- 空列表与 inherit 模式会注入全部子进程,不报告;withTargetsAdded 不修改原对象,缺失项放在最前
- 状态栏:缺少时显示「代理 · 缺少 agy.exe」(warning 背景,优先级高于“待重启”),悬浮提示提供「一键补齐」
- 命令 antigravityProxy.fixTargets(仅悬浮提示链接调用):沿用面板保存流程(备份 → 原子写入),随后标记待重启并提示立即重启
- i18n:sb.targetsMissing / targetsMissingSummary / linkFixTargets、ext.targetsFixed / targetsFixFailed 三语
- 测试:configHealth.test.js 5 项,node 单测全部通过;IDE 2.6.0 隔离副本经 CDP 实测:
- 「Proxy · missing agy.exe」→ 点「Add missing」→ config.json 补齐 agy.exe、旧配置备份到插件存储 → 「Proxy · restart needed」。
- doctor: 探测代理端口协议、检查 agy.exe 目标进程
- Test-ProxyProtocol:先发 SOCKS5 问候(05 01 00,应答首字节 0x05 即 SOCKS5),否则发 CONNECT(应答以 HTTP/ 开头即 HTTP);
- 混合端口两者皆可。体检时端口可达但与 proxy.type 不符报 ProxyTypeMismatch(Fail,并进入结论);
- Setup 生成配置时按探测结果填写类型(ProxyTypeDetected),https 规范化为 http
- 未写 child_injection_mode 时按 DLL 默认值 filtered 处理(此前会跳过目标进程检查)
- 新增 TargetProcessesMissingAgy:安装目录有 Antigravity IDE.exe 但 target_processes 缺少后端 agy.exe 时报 Fail(#159)
- FakeIP 提示改为指向真正原因:报错中的 198.18.x.x 被拒绝 / 超时通常是连代理失败(端口或 proxy.type 不对)
- docs/doctor.md:判定码表补充 ProxyTypeMismatch / TargetProcessesMissingAgy
- 测试:test-doctor.ps1 新增伪造 SOCKS5 / HTTP 代理(TcpListener)的协议探测、错配、https 规范化、Setup 自动类型与 agy.exe 用例,
- PS 5.1 下 91/91 通过。
🐛 Bug 修复 (Bug Fixes)
- network: FakeIP 直连修复、代理协议错配提示、UDP ASSOCIATE 失败退避
- 针对 issue 中“其他代理软件用不了 / 198.18.x.x 被拒绝”的高频反馈,从源码定位到三处根因:
- FakeIP 直连(Hooks.cpp):端口白名单外(ROUTE-2)、DNS 53 与 ConnectEx 路径此前直接连 198.18.x.x 虚拟地址,必然失败;
- 统一经 ResolveDirectTarget 重解析为真实地址再直连(日志「FakeIP 已重解析直连」,失败时 Warn)。
- proxy.port=0(禁用代理)时不再分配 FakeIP(ShouldAllocFakeIp),此前会导致所有域名连接失败
- 协议错配提示:Socks5.hpp 握手超时/被断开时提示“该端口可能是 HTTP 代理端口”,收到 HTTP 响应时明确指出;
- HttpConnect.hpp 收到 0x05 应答或被断开时提示“可能是 SOCKS5 端口”;记录日志后恢复 WSA 错误码,不影响调用方
- UDP ASSOCIATE 退避(UdpAssociateBackoff.hpp):代理未开 UDP 时,60 秒窗口内不再重复尝试,每个窗口只告警一次
- (提示 QUIC 会回落 TCP、可在代理软件开启 UDP),避免每个 QUIC 包都触发一次 TCP 握手与告警刷屏;成功后清零
- 测试:新增 udp_associate_backoff_tests(ctest 9/9);IDE 2.6.0 隔离副本实测 SOCKS5 隧道正常。
📝 文档更新 (Documentation)
- README 三语与排障文档同步网络策略改进
- README / README_EN / README_RU:在线安装参数增加 -ExtensionOnly,注明兼容 Windows 10/11 自带的 Windows PowerShell 5.1 与 PowerShell 7;
- 插件安装方式改为“系统通知 + 有安装包本地装 / 只有 DLL 时确认后在线装”;状态栏表增加「缺少 agy.exe」;
- 常见问题新增「报错里出现 198.18.x.x 被拒绝 / 超时」(= 连代理失败,检查端口与 proxy.type),10060/10061 行补充协议错配日志提示
- docs/troubleshooting.md:日志关键行补充协议错配、UDP 不可用退避、FakeIP 重解析直连三类日志(文案与源码一致),并说明 198.18.x.x 的含义
🔧 杂项 (Chores)
- 版本号 2.6(插件 VSIX 随之为 2.6.0) (
65bf164)