mihomo-cli 1.0.1 → 1.0.3

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 ADDED
@@ -0,0 +1,103 @@
1
+ # Changelog
2
+
3
+ ## [1.0.3] - 2026-04-05
4
+
5
+ ### 文档修复
6
+
7
+ - **数据目录路径**:修正 README 中的用户数据存储位置
8
+ - `~/Library/Application Support/mihomo-cli/` → `~/.mihomo-cli/`
9
+ - 修正目录结构:`runtime/` → `.runtime/`,删除不存在的 `config/` 子目录
10
+ - **CLI 帮助文档**:修正 `log`、`logs`、`kernel` 命令的语法和描述
11
+ - `logs` 命令明确 `0`=当前日志,`1+`=归档日志
12
+ - 补充 `-o` 选项说明
13
+
14
+ ## [1.0.2] - 2026-04-05
15
+
16
+ ### 修复
17
+
18
+ - **版本号同步**:`index.js` 不再硬编码版本号,改为从 `package.json` 读取
19
+ - 修复 `1.0.1` 发布后 `--version` 仍显示 `1.0.0-alpha.1` 的问题
20
+
21
+ ## [1.0.1] - 2026-04-05
22
+
23
+ ### 新增功能
24
+
25
+ #### 订阅管理增强
26
+ - **订阅信息解析**:自动解析 `subscription-userinfo` 响应头
27
+ - 显示已用流量 / 总流量 / 到期时间
28
+ - 从 `content-disposition` 提取用户名
29
+ - 保存 `profile-update-interval`、`profile-web-page-url`
30
+
31
+ - **数据分离存储**:
32
+ - 静态配置(name, url, updatedAt)→ `settings.json`
33
+ - 动态数据(流量、用户名、页面URL)→ `subs-cache.json`
34
+
35
+ - **自动更新过期订阅**:
36
+ - 默认间隔 12 小时(或订阅服务端指定的 `profile-update-interval`)
37
+ - `start` 命令、`sub list` 命令时自动触发检查
38
+ - 并行更新所有过期订阅,失败时使用本地缓存
39
+
40
+ - **订阅命令增强**:
41
+ - `sub use <name>`:设置默认订阅(支持模糊匹配)
42
+ - `sub web [name]`:打开订阅页面(无参打开默认)
43
+ - `sub update`:无参时更新所有订阅
44
+ - **模糊匹配**:精确匹配 → 前缀匹配 → 包含匹配,多匹配时提示
45
+
46
+ #### 日志管理
47
+ - **日志轮转**:每次启动前自动归档当前日志
48
+ - 命名格式:`mihomo.YYYY-MM-DD_HH-MM-SS.log`
49
+ - **自动清理**:默认保留 7 天日志
50
+ - **新命令**:
51
+ - `logs`:列出当前和归档日志(按时间排序)
52
+ - `logs <编号>`:查看指定归档日志
53
+ - `-n N`:指定显示行数(默认 100)
54
+ - `-o`:用系统默认编辑器打开
55
+ - `log -o`:用系统编辑器打开当前日志
56
+
57
+ #### 内核更新增强
58
+ - **镜像参数支持**:
59
+ - `kernel hk.gh-proxy.org`:使用指定镜像
60
+ - `kernel --mirror <url>`:显式指定镜像
61
+ - `kernel --no-mirror` / `--direct`:直连,不使用镜像
62
+ - **镜像配置持久化**:
63
+ - `getGitHubMirror()` / `setGitHubMirror()`
64
+ - 默认:`https://v6.gh-proxy.org/`
65
+ - 可用镜像列表在命令中列出
66
+ - 空字符串 `""` 或 `false` 表示禁用镜像
67
+
68
+ #### 命令别名
69
+ 新增以下命令别名,任意一个均可调用:
70
+ - `mihomo`
71
+ - `mmc`
72
+ - `mh`
73
+
74
+ #### 启动流程改进
75
+ - `start` 命令现在包含完整的重启/切换逻辑:
76
+ - 先检查并自动更新过期订阅
77
+ - 再完全停止现有进程(即使没进程也清理运行时文件)
78
+ - 最后启动新进程
79
+ - **移除** `restart` 命令(`start` 已包含)
80
+ - **移除** `clean` 命令(`stop` 已包含清理)
81
+
82
+ ### 改进
83
+ - 配置模块 `parseYamlOrJson()`:统一的 YAML/JSON 解析
84
+ - 订阅列表 `sub list` 显示:
85
+ - 默认订阅标记 `[默认]`
86
+ - 更新时间 / 更新间隔
87
+ - 用户名(如有)
88
+ - 流量使用:已用 / 总量 + 百分比
89
+ - 到期时间
90
+ - 订阅页面 URL
91
+ - `rmrf()` 改用原生 `fs.rmSync(recursive: true, force: true)`
92
+ - 启动脚本日志改为追加模式 (`>>`) 而非覆盖
93
+
94
+ ### 移除
95
+ - 移除 `geodata` 相关功能:
96
+ - `GEODATA_REPO`、`GEODATA_FILES` 常量
97
+ - `downloadGeodata()` 函数
98
+ - `downloadFile()` 内联函数
99
+
100
+ ## [1.0.0-alpha.1] - 2026-04-05
101
+
102
+ - 初始版本发布
103
+ - 基础功能:启动/停止、订阅管理、内核更新、Web UI
package/README.md CHANGED
@@ -83,8 +83,8 @@ mihomo ui yacd # YACD
83
83
  | `mihomo stop` | 停止代理 |
84
84
  | `mihomo status` | 查看运行状态 |
85
85
  | `mihomo log` | 实时查看日志 (`-o` 用系统编辑器打开) |
86
- | `mihomo logs` | 列出历史日志归档 |
87
- | `mihomo logs <编号>` | 查看指定归档日志 (`-n N` 指定行数, `-o` 打开) |
86
+ | `mihomo logs` | 列出所有日志(当前 + 历史归档) |
87
+ | `mihomo logs <编号>` | 查看指定日志(`0`=当前日志,`1+`=归档日志,支持 `-n N` 指定行数、`-o` 打开) |
88
88
 
89
89
  ### 订阅管理
90
90
 
@@ -160,23 +160,24 @@ mihomo kernel --no-mirror
160
160
  用户数据存储位置(与安装位置分离,更新不丢失):
161
161
 
162
162
  ```
163
- ~/Library/Application Support/mihomo-cli/
164
- ├── config/
165
- ├── config.yaml # 当前运行配置
166
- ├── settings.json # 用户设置(订阅列表、内核版本)
167
- │ └── subs-cache.json # 订阅动态缓存(流量、到期时间等)
168
- ├── runtime/
169
- ├── pid # 进程 PID
170
- │ └── config.yaml # mihomo 运行时配置
163
+ ~/.mihomo-cli/
164
+ ├── settings.json # 用户设置(订阅列表、内核版本)
165
+ ├── subs-cache.json # 订阅动态缓存(流量、到期时间等)
166
+ ├── core/
167
+ │ └── mihomo # mihomo 内核二进制
168
+ ├── subs/
169
+ └── <name>.yaml # 订阅原始配置
171
170
  ├── logs/
172
171
  │ ├── mihomo.log # 当前日志
173
172
  │ └── mihomo.YYYY-MM-DD_HH-MM-SS.log # 归档日志
174
- ├── subs/
175
- └── <name>.yaml # 订阅原始配置
176
- └── core/
177
- └── mihomo # mihomo 内核二进制
173
+ ├── data/ # mihomo 运行数据(GeoIP 等,由内核自行管理)
174
+ └── .runtime/ # 运行时临时文件(stop 自动清除)
175
+ ├── pid # 进程 PID
176
+ └── config.yaml # 运行时生成的配置
178
177
  ```
179
178
 
179
+ 可通过环境变量 `MIHOMO_CLI_DIR` 自定义数据目录位置。
180
+
180
181
  ## Web UI
181
182
 
182
183
  内置三个常用 Web UI:
package/index.js CHANGED
@@ -7,7 +7,7 @@ const kernel = require('./src/kernel');
7
7
  const subscription = require('./src/subscription');
8
8
  const processMgr = require('./src/process');
9
9
 
10
- const VERSION = '1.0.0-alpha.1';
10
+ const VERSION = require('./package.json').version;
11
11
 
12
12
  const UI_URLS = {
13
13
  zash: 'https://board.zash.run.place',
@@ -52,8 +52,8 @@ function printShortHelp() {
52
52
  ' start [tun|mixed] 启动/切换代理(重复执行可切换模式)\n' +
53
53
  ' stop 停止代理\n' +
54
54
  ' status 查看状态\n' +
55
- ' log 实时日志\n' +
56
- ' logs 历史日志\n' +
55
+ ' log 实时日志(-o 打开文件)\n' +
56
+ ' logs 日志列表(当前 + 历史归档)\n' +
57
57
  ' ui [zash|dash|yacd] Web 界面\n' +
58
58
  ' kernel 更新内核\n' +
59
59
  ' sub add <url> [name] 添加订阅\n' +
@@ -78,10 +78,10 @@ function printHelp() {
78
78
  ' start [tun|mixed] 启动/切换代理 (默认 mixed, 重复执行可重启/切换模式)\n' +
79
79
  ' stop 停止代理\n' +
80
80
  ' status 查看状态\n' +
81
- ' log 实时日志\n' +
82
- ' logs [name] [-n N] 列出/查看历史日志 (默认 100 行)\n' +
81
+ ' log [-o] 实时日志(-o 用系统编辑器打开)\n' +
82
+ ' logs [编号] [-n N] [-o] 列出/查看日志(0=当前,1+=归档,-n 指定行数,-o 打开)\n' +
83
83
  ' ui [zash|dash|yacd] 打开 Web UI (默认 zash)\n' +
84
- ' kernel [镜像] 更新内核 (可指定镜像: hk.gh-proxy.org 或 --no-mirror)\n' +
84
+ ' kernel [镜像|--no-mirror] 更新内核(指定镜像或 --no-mirror 直连)\n' +
85
85
  ' sub add <url> [name] 添加订阅\n' +
86
86
  ' sub update [name] 更新订阅 (无参更新所有)\n' +
87
87
  ' sub use <name> 设置默认订阅 (支持模糊匹配)\n' +
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mihomo-cli",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "A terminal-based mihomo (Clash.Meta) client for macOS",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -11,7 +11,8 @@
11
11
  },
12
12
  "files": [
13
13
  "index.js",
14
- "src/**/*.js"
14
+ "src/**/*.js",
15
+ "CHANGELOG.md"
15
16
  ],
16
17
  "scripts": {
17
18
  "start": "node index.js"