mihomo-cli 2.5.0 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.6.0] - 2026-05-03
4
+
5
+ ### 改进
6
+
7
+ - **统一使用 mixed-port**:用 `mixed-port: 7890` 替代原来的 `port: 7890` + `socks-port: 7891`,单端口同时支持 HTTP 和 SOCKS5
8
+ - **BASE_CONFIG 优化**:新增 `unified-delay`、`tcp-concurrent`、`global-client-fingerprint`、`geo-auto-update`、`profile.store-selected`,不再依赖订阅自带这些配置
9
+ - **自动启用 sniffer**:检测到 `fake-ip` 模式时自动注入 sniffer 配置(嗅探 HTTP/TLS/QUIC),确保域名规则正常工作;订阅自带 sniffer 时不覆盖
10
+
11
+ ---
12
+
3
13
  ## [2.5.0] - 2026-05-03
4
14
 
5
15
  ### 新功能
package/README.md CHANGED
@@ -301,8 +301,7 @@ sudo pkill -9 mihomo
301
301
 
302
302
  默认端口(系统强制,不受订阅配置影响):
303
303
 
304
- - HTTP 端口: `7890`
305
- - SOCKS5 端口: `7891`
304
+ - 混合端口 (HTTP + SOCKS5): `7890`
306
305
  - 外部控制器: `127.0.0.1:9090`
307
306
 
308
307
  ## 安全特性
package/dist/index.js CHANGED
@@ -2688,29 +2688,33 @@ function getFreeSubscriptionSources() {
2688
2688
  ];
2689
2689
  }
2690
2690
  var BENCH_CONFIG = {
2691
+ "mixed-port": 17890,
2691
2692
  "allow-lan": false,
2692
2693
  "external-controller": "127.0.0.1:19090",
2693
- port: 17890,
2694
- "socks-port": 17891,
2695
2694
  "log-level": "error",
2696
2695
  "geodata-mode": true
2697
2696
  };
2698
2697
  var TEST_CONFIG = {
2698
+ "mixed-port": 27890,
2699
2699
  "allow-lan": false,
2700
2700
  "external-controller": "127.0.0.1:29090",
2701
- port: 27890,
2702
- "socks-port": 27891,
2703
2701
  "log-level": "error",
2704
2702
  "geodata-mode": true
2705
2703
  };
2706
2704
  var BASE_CONFIG = {
2705
+ "mixed-port": 7890,
2707
2706
  "allow-lan": false,
2708
2707
  "external-controller": "127.0.0.1:9090",
2709
- port: 7890,
2710
- "socks-port": 7891,
2711
- "log-level": "warning",
2712
- "geodata-mode": true,
2708
+ "unified-delay": true,
2709
+ "tcp-concurrent": true,
2710
+ "global-client-fingerprint": "chrome",
2711
+ "geo-auto-update": true,
2713
2712
  "geo-update-interval": 24,
2713
+ "geodata-mode": true,
2714
+ "log-level": "warning",
2715
+ profile: {
2716
+ "store-selected": true
2717
+ },
2714
2718
  "geox-url": {
2715
2719
  geoip: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip-lite.dat",
2716
2720
  geosite: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite-lite.dat",
@@ -3128,9 +3132,10 @@ function buildConfig(subRawContent, mode) {
3128
3132
  }
3129
3133
  systemConfig["allow-lan"] = false;
3130
3134
  systemConfig["external-controller"] = BASE_CONFIG["external-controller"];
3131
- systemConfig.port = BASE_CONFIG.port;
3132
- systemConfig["socks-port"] = BASE_CONFIG["socks-port"];
3135
+ systemConfig["mixed-port"] = BASE_CONFIG["mixed-port"];
3133
3136
  delete withOverwrites["mixed-port"];
3137
+ delete withOverwrites.port;
3138
+ delete withOverwrites["socks-port"];
3134
3139
  delete withOverwrites["external-ui"];
3135
3140
  delete withOverwrites["external-ui-name"];
3136
3141
  delete withOverwrites["external-ui-url"];
@@ -3149,6 +3154,18 @@ function buildConfig(subRawContent, mode) {
3149
3154
  if (systemConfig.dns) {
3150
3155
  merged.dns = { ...withOverwrites.dns || {}, ...systemConfig.dns };
3151
3156
  }
3157
+ const mergedDns = merged.dns || {};
3158
+ if (mergedDns["enhanced-mode"] === "fake-ip" && !("sniffer" in withOverwrites)) {
3159
+ merged.sniffer = {
3160
+ enable: true,
3161
+ sniff: {
3162
+ HTTP: { ports: [80, "8080-8880"], "override-destination": true },
3163
+ TLS: { ports: [443, 8443] },
3164
+ QUIC: { ports: [443, 8443] }
3165
+ },
3166
+ "skip-domain": ["+.push.apple.com"]
3167
+ };
3168
+ }
3152
3169
  return { config: merged, subscriptionConfig, overwriteFiles, systemConfig };
3153
3170
  }
3154
3171
  function writeMihomoConfig(configObj) {
@@ -5379,7 +5396,7 @@ async function cmdBench(args) {
5379
5396
  for (const d of downloaded) {
5380
5397
  d.proxies = d.proxies.filter((p) => survivingSet.has(p));
5381
5398
  }
5382
- const benchPort = BENCH_CONFIG.port;
5399
+ const benchPort = BENCH_CONFIG["mixed-port"];
5383
5400
  const benchApi = BENCH_CONFIG["external-controller"];
5384
5401
  console.log(colors.cyan("\u542F\u52A8\u6D4B\u8BD5\u5B9E\u4F8B..."));
5385
5402
  await startBenchInstance();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mihomo-cli",
3
- "version": "2.5.0",
3
+ "version": "2.6.0",
4
4
  "type": "module",
5
5
  "description": "A terminal-based mihomo (Clash.Meta) client for macOS",
6
6
  "bin": {