[pull] master from Peng-YM:master#5
Open
pull[bot] wants to merge 1453 commits into
Open
Conversation
dd642b3 to
5035712
Compare
b69776e to
e28e440
Compare
6319f40 to
7aa3518
Compare
02eec83 to
730e599
Compare
- 新增 `.node-version`(26.1.0)并在 GitHub Action 中改为按文件读取 Node 版本 - backend 版本号提升到 2.22.27,Mocha 升级到 ^11.7.5 并同步更新 lockfile - 重构 Gist 错误信息提取逻辑,统一返回 `ERROR: HTTP 状态码: 消息`,便于定位 API 问题 - Gist 同步前补充上传摘要日志(文件数、总大小、最大文件),同步失败时输出失败上下文 - 同步异常日志改为输出完整错误栈,便于排查 - 同步到 Gist 的失败场景与新增日志行为补充单测覆盖
Update Egern.yaml
- 将 artifact 同步上传流程改为分批执行,新增 artifactSyncBatchSize 配置项(默认 10,可自定义),避免一次上传量过大 - 提取并复用 Gist 响应日志打印与文件链接解析逻辑(兼容 GitHub/GitLab),减少重复代码 - cron 同步和手动同步都改为调用统一批量上传能力,批次失败时仍继续下一批,提升同步稳定性 - 上传成功/失败数量改为按实际成功上传批次统计,并保留失败明细 - 新增/扩展测试:batch size 归一化、批次上传失败后还能继续处理后续批次
- Resolve Domain Operator 新增并发控制参数 `concurrency`(默认 15,超 20 会 warning),并将解析流程改为基于 worker 池执行,避免重复解析 - 新增域名解析结果缓存命中分流逻辑,命中缓存的域名不再参与并发解析,同时补强并发参数校验与空值兼容 - 调整 Domain Resolver 日志与 Settings 读取,兼容 `$.read(SETTINGS_KEY)` 可能为空的场景 - ClashMeta producer 调整 tailscale 兼容条件,不再把 tailscale 一律过滤掉 - sing-box producer 增加 `control-http-client` 支持映射到 `control_http_client`,新增 `state-dir` 兼容,且在存在 control client 时跳过 legacy 的 `detour`/`dialer-proxy`/`ip_version`/`domain_resolver` 映射以避免字段冲突 - 新增 `resolve-domain.spec.js` 覆盖并发上限、缓存命中、无效参数、告警场景,以及 sing-box 结构化测试补充 tailscale control_http_client 与 legacy 字段互斥校验 - 后端版本号升级到 `2.23.4`,并补充 demo 注释说明 `control_http_client` 的使用方式
The producer (producers/surgemac.js) already supports a merge mode that emits N SOCKS5 listeners + one shared mihomo external process, avoiding the "one mihomo process per node" pattern. However the only way to enable it today is to write a per-proxy script operator that sets `_merge = true`. For users on networks where many subscription nodes are unreachable (e.g. CERNET / 校园网 to overseas VPS), the current default spawns dozens of idle-but-stuck mihomo subprocesses, each accumulating ~8s GFW-timeout outbound attempts that can cause system-wide slowdown. This patch wires two new URL query parameters into `produceOpts`: - `mihomoMerge=true|1` — enables the existing merge mode - `mihomoMergeName=<name>` — optional name for the merged entry Both only take effect when `target=SurgeMac` (i.e. when `useMihomoExternal` is already on). No behavior change for existing requests; default is unchanged.
- 新增 Surge h2-connect 节点解析与导出能力,完整支持 root headers 透传 - 支持 Surge/TrustTunnel/HTTP/HTTPS 的 headers 配置解析,支持占位符文本原样保留 - 统一在输出阶段对 headers 与 h2-connect 做平台能力判断,不支持时默认过滤并输出错误提示 - Egern 的 HTTP/HTTPS 透传 root headers,不再静默丢失 - Mihomo 明确过滤不支持的 h2-connect / TrustTunnel header 变体,并保留 `include-unsupported-proxy` 可选行为 - 修复并扩展 parser/producer 的结构化与文本测试覆盖,覆盖 include-unsupported-proxy 下边界行为 - 补充本次需求的 brainstorm 文档,记录验收标准与兼容性边界
feat(wip): expose mihomoMerge / mihomoMergeName via URL query
- 下载接口新增 SurgeMac 专属参数提取方法,统一处理 `mihomoMerge / mihomoMergeName / mihomoExternal` - `downloadSubscription` 与 `downloadCollection` 都透传这些参数到生成配置逻辑,且保留现有默认行为 - SurgeMac 生产器支持通过 `opts.mihomoExternal` 控制 mihomo 输出,并在 fallback 场景下安全返回空字符串兜底 - `SurgeMac` 日志增加 `mihomoMerge / mihomoMergeName / mihomoExternal` 可观测输出,排障更清晰 - 新增下载路由测试:单订阅与组合订阅下的默认/合并/链接参数场景覆盖
- 解析器增强 Surge headers 的分段与转义处理,修复包含分号、逗号、引号、反斜杠的场景解析失败 - 支持 quoted header key/value 与 `headers="..."` / `headers='...'` 外层包裹的解析,避免误截断 - 生成器输出 headers 时统一加外层引号,并对值内双引号进行转义,降低往返转换不一致风险 - 通过 proxy parser/producers 测试覆盖复杂 headers(嵌套引号、quoted key、quote-start key)并新增 round-trip 校验 - 补充 README Surge 支持列表,加入 HTTPS 与 HTTP/2 CONNECT
- 调整 sing-box 的 network 解析:`_network` 显式为 `tcp/udp` 时直接生效,并提高优先级,避免和 `udp` 冲突。 - 增加 Mihomo 风格兼容:当节点配置 `udp: false` 时,对支持 `network` 的协议写入 `network: "tcp"`。 - 为 shadowTLS 与 SSR 补齐 network 解析,确保这两类协议也能应用 UDP/TCP 映射规则。 - 移除 anytls、tailscale、wireguard 的 network 映射,避免输出不支持的字段导致配置不合法。 - 新增结构化产物测试,验证: - `udp: true/false` 与 `_network` 的行为差异与优先级; - 不支持 network 的协议不会被误加 `network` 字段。 - 更新 demo 注释说明 `_network` 生效协议列表、`udp` 与 `_network` 的关系。
- 新增云配置同步策略:定时任务在缺少 GitHub Token 时会跳过需要上传的条目,但仍执行“仅本地生成”(upload=false)的条目 - 同步逻辑支持 `upload: false`:配置仍会生成和更新时间,但不上传到 Gist,并会清理旧的远端 URL - 上传批次改为仅处理可上传条目;当无可上传条目时直接提示并跳过上传 - 同步日志和通知区分“上传成功/仅生成未上传/因缺少 token 跳过”,统计更准确 - 删除配置的远端删除条件调整为更合理:没有远端 URL 且仅本地运行的条目不会再尝试远端删除 - 新增/扩展测试覆盖了: - cron 同步策略判断 - 批量上传时跳过 `upload: false` - 单条同步时仅更新运行时间且不上传 - 无远端 URL 时删除行为
- 在 SS URI 解析中新增 `gost=` 参数解析,支持 address/port/route/host/path/route 的标准化映射 - `route=ws|wss|websocket` 时自动转换为 `plugin-opts.mode`,并在 wss 场景下启用 tls - 增加 mihomo 风格输出对 `plugin-opts.mux` 的布尔化处理(兼容 0/1、true/false、字符串等输入) - 补充 parser 和 producer 测试:覆盖 gost-plugin 解析、mihomo mux 归一化与保留
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by
pull[bot] (v2.0.0-alpha.4)
Can you help keep this open source service alive? 💖 Please sponsor : )