codexmate 0.0.2 → 0.0.4

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.
@@ -1,45 +1,45 @@
1
- name: release
1
+ name: release
2
2
  run-name: "${{ github.event.repository.name }} ${{ inputs.tag }}"
3
- on:
4
- workflow_dispatch:
5
- inputs:
6
- tag:
7
- description: 'Tag to release (e.g., v0.0.1)'
8
- required: true
9
- permissions:
10
- contents: write
11
-
12
- jobs:
13
- release:
14
- runs-on: ubuntu-latest
15
- steps:
16
- - name: Checkout tag
17
- uses: actions/checkout@v4
18
- with:
19
- ref: ${{ inputs.tag }}
20
- fetch-depth: 0
21
- - uses: actions/setup-node@v4
22
- with:
23
- node-version: '18'
24
- cache: 'npm'
25
- - name: Verify tag matches package.json version
26
- run: |
27
- node -e "const pkg=require('./package.json'); const tag='${{ inputs.tag }}'; const expected='v'+pkg.version; if(tag!==expected){ console.error('Tag '+tag+' does not match package.json version '+expected); process.exit(1);} console.log('Tag matches '+expected);"
28
- - name: Compute release name
29
- run: |
30
- node -e "const p=require('./package.json'); const tag='${{ inputs.tag }}'; const name=p.name.includes('/')? p.name.split('/')[1]: p.name; const value=name+' '+tag; console.log('RELEASE_NAME='+value);" >> "$GITHUB_ENV"
31
- - name: Pack npm artifact
32
- run: |
33
- name=$(node -e "const p=require('./package.json'); const n=p.name.replace('@','').replace('/','-'); process.stdout.write(n+'-'+p.version+'.tgz');")
34
- npm pack
35
- test -f "$name"
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ tag:
7
+ description: 'Tag to release (e.g., v0.0.1)'
8
+ required: true
9
+ permissions:
10
+ contents: write
11
+
12
+ jobs:
13
+ release:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - name: Checkout tag
17
+ uses: actions/checkout@v4
18
+ with:
19
+ ref: ${{ inputs.tag }}
20
+ fetch-depth: 0
21
+ - uses: actions/setup-node@v4
22
+ with:
23
+ node-version: '18'
24
+ cache: 'npm'
25
+ - name: Verify tag matches package.json version
26
+ run: |
27
+ node -e "const pkg=require('./package.json'); const tag='${{ inputs.tag }}'; const expected='v'+pkg.version; if(tag!==expected){ console.error('Tag '+tag+' does not match package.json version '+expected); process.exit(1);} console.log('Tag matches '+expected);"
28
+ - name: Compute release name
29
+ run: |
30
+ node -e "const p=require('./package.json'); const tag='${{ inputs.tag }}'; const name=p.name.includes('/')? p.name.split('/')[1]: p.name; const value=name+' '+tag; console.log('RELEASE_NAME='+value);" >> "$GITHUB_ENV"
31
+ - name: Pack npm artifact
32
+ run: |
33
+ name=$(node -e "const p=require('./package.json'); const n=p.name.replace('@','').replace('/','-'); process.stdout.write(n+'-'+p.version+'.tgz');")
34
+ npm pack
35
+ test -f "$name"
36
36
  echo "PACKAGE_TGZ=$name" >> "$GITHUB_ENV"
37
- - name: Create GitHub Release
38
- uses: softprops/action-gh-release@v2
39
- with:
40
- tag_name: ${{ inputs.tag }}
41
- name: ${{ env.RELEASE_NAME }}
42
- prerelease: false
43
- draft: false
44
- files: ${{ env.PACKAGE_TGZ }}
37
+ - name: Create GitHub Release
38
+ uses: softprops/action-gh-release@v2
39
+ with:
40
+ tag_name: ${{ inputs.tag }}
41
+ name: ${{ env.RELEASE_NAME }}
42
+ prerelease: false
43
+ draft: false
44
+ files: ${{ env.PACKAGE_TGZ }}
45
45
  generate_release_notes: true
package/README.md CHANGED
@@ -2,16 +2,22 @@
2
2
 
3
3
  > A lightweight AI configuration assistant: CLI + Web to manage Codex providers/models and Claude Code configs
4
4
 
5
- [![Build](https://img.shields.io/github/actions/workflow/status/ymkiux/codexmate/release.yml?label=build)](https://github.com/ymkiux/codexmate/actions/workflows/release.yml) [![Version](https://img.shields.io/github/package-json/v/ymkiux/codexmate?label=version)](https://github.com/ymkiux/codexmate/blob/main/package.json) [![Status](https://img.shields.io/badge/status-alpha-orange)](https://github.com/ymkiux/codexmate) [![Downloads](https://img.shields.io/npm/dt/codexmate?label=downloads)](https://www.npmjs.com/package/codexmate)
5
+ [![Build](https://img.shields.io/github/actions/workflow/status/ymkiux/codexmate/release.yml?label=build)](https://github.com/ymkiux/codexmate/actions/workflows/release.yml) [![Version](https://img.shields.io/npm/v/codexmate?label=version&registry_uri=https%3A%2F%2Fregistry.npmjs.org)](https://www.npmjs.com/package/codexmate) [![Status](https://img.shields.io/badge/status-alpha-orange)](https://github.com/ymkiux/codexmate)
6
6
  [![Maintain](https://img.shields.io/github/commit-activity/m/ymkiux/codexmate?label=maintain%2Fmonth)](https://github.com/ymkiux/codexmate/commits) [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE) [![Node](https://img.shields.io/badge/node-%3E%3D14.0.0-green.svg)](https://nodejs.org)
7
7
 
8
8
  English | [Chinese](README.zh-CN.md)
9
9
 
10
- ## Overview
11
-
12
- If you frequently switch between models, providers, or configuration profiles, Codex Mate turns that into a single command or a single click.
13
-
14
- ## What You Get
10
+ ## Overview
11
+
12
+ If you frequently switch between models, providers, or configuration profiles, Codex Mate turns that into a single command or a single click.
13
+
14
+ ## Release Notes (0.0.4)
15
+
16
+ - Added OpenClaw config mode with JSON5 profiles and one-click apply
17
+ - Added OpenClaw workspace AGENTS.md management
18
+ - Added JSON5 parsing dependency
19
+
20
+ ## What You Get
15
21
 
16
22
  - Faster provider/model switching
17
23
  - More controllable local configuration management
@@ -20,30 +26,32 @@ If you frequently switch between models, providers, or configuration profiles, C
20
26
 
21
27
  ## Feature Overview
22
28
 
23
- | Module | Problem | Key Capabilities |
24
- | --- | --- | --- |
25
- | Codex Config | Switching providers/models is painful | Provider/model switching, model management, CLI + Web entry points, template-confirmed writes |
26
- | Claude Code Config | Multiple profiles and inconsistent write paths | Profile management, default write to `~/.claude/settings.json`, compatibility mode env vars |
27
- | Session Browser | Local sessions are hard to track | List/filter sessions, export to Markdown, delete and batch cleanup |
28
- | Utilities | Compression/extraction requires extra tools | Multithreaded compress/unzip via 7-Zip |
29
+ | Module | Problem | Key Capabilities |
30
+ | --- | --- | --- |
31
+ | Codex Config | Switching providers/models is painful | Provider/model switching, model management, CLI + Web entry points, template-confirmed writes |
32
+ | Claude Code Config | Multiple profiles and inconsistent write paths | Profile management, default write to `~/.claude/settings.json`, compatibility mode env vars |
33
+ | OpenClaw Config | OpenClaw configs are scattered | JSON5 profiles, apply to `~/.openclaw/openclaw.json`, AGENTS workspace management |
34
+ | Session Browser | Local sessions are hard to track | List/filter sessions, export to Markdown, delete and batch cleanup |
35
+ | Utilities | Compression/extraction requires extra tools | Multithreaded compress/unzip via 7-Zip |
29
36
 
30
37
  ## Why Codex Mate
31
38
 
32
- - Focused on two jobs: Codex provider/model switching + Claude Code config apply
39
+ - Focused on three jobs: Codex provider/model switching + Claude Code config apply + OpenClaw config apply
33
40
  - Local-first: configs and API keys are written to local files, not the cloud
34
41
  - Lightweight: CLI + Web, no desktop app required
35
42
  - Reversible: auto-backup before first takeover
36
43
 
37
44
  ## Use Cases
38
45
 
39
- - Frequent provider/model switching, want a one-command flow
40
- - Use both Codex and Claude Code, want a single entry point
41
- - Multi-project or multi-environment setups that need quick config changes
42
- - Want a visual UI without a heavy client
46
+ - Frequent provider/model switching, want a one-command flow
47
+ - Use both Codex and Claude Code, want a single entry point
48
+ - Use OpenClaw with multiple profiles, want quick switching
49
+ - Multi-project or multi-environment setups that need quick config changes
50
+ - Want a visual UI without a heavy client
43
51
 
44
52
  ## Scope and Boundaries
45
53
 
46
- - Only configuration management for Codex and Claude Code, not a full all-in-one tool suite
54
+ - Only configuration management for Codex, Claude Code, and OpenClaw, not a full all-in-one tool suite
47
55
  - No built-in proxy/relay/billing dashboard/cloud sync (kept lightweight)
48
56
  - Web UI runs only when you start it (`codexmate start`)
49
57
 
@@ -51,7 +59,12 @@ If you frequently switch between models, providers, or configuration profiles, C
51
59
 
52
60
  1. Install (global):
53
61
  ```bash
54
- npm install -g ymkiux/codexmate
62
+ npm install -g codexmate
63
+ ```
64
+
65
+ Or run once without install:
66
+ ```bash
67
+ npx codexmate@latest status
55
68
  ```
56
69
 
57
70
  2. Check status:
@@ -75,7 +88,16 @@ Then open `http://localhost:3737` in your browser.
75
88
  ### Global (Recommended)
76
89
 
77
90
  ```bash
78
- npm install -g ymkiux/codexmate
91
+ npm install -g codexmate
92
+ ```
93
+
94
+ Package name on npm: `codexmate`.
95
+
96
+ ### Run with npx (No Install)
97
+
98
+ ```bash
99
+ npx codexmate@latest status
100
+ npx codexmate@latest start
79
101
  ```
80
102
 
81
103
  ### From Source
@@ -125,14 +147,20 @@ codexmate start
125
147
  - Add/delete custom providers
126
148
  - Supports Codex config management on Linux/Windows
127
149
 
128
- ### Claude Code Config Mode (Windows / macOS / Linux)
129
-
130
- - Manage multiple Claude Code profiles
131
- - Configure API key, Base URL, and model
132
- - Default write to `env` in `~/.claude/settings.json`: `env.ANTHROPIC_API_KEY` / `env.ANTHROPIC_AUTH_TOKEN` / `env.ANTHROPIC_BASE_URL` / `env.ANTHROPIC_MODEL` / `env.CLAUDE_CODE_USE_KEY`
133
- - Compatibility mode: write to system environment variables (useful for legacy workflows or specific Windows cases)
134
-
135
- ### Session Browser
150
+ ### Claude Code Config Mode (Windows / macOS / Linux)
151
+
152
+ - Manage multiple Claude Code profiles
153
+ - Configure API key, Base URL, and model
154
+ - Default write to `env` in `~/.claude/settings.json`: `env.ANTHROPIC_API_KEY` / `env.ANTHROPIC_AUTH_TOKEN` / `env.ANTHROPIC_BASE_URL` / `env.ANTHROPIC_MODEL` / `env.CLAUDE_CODE_USE_KEY`
155
+ - Compatibility mode: write to system environment variables (useful for legacy workflows or specific Windows cases)
156
+
157
+ ### OpenClaw Config Mode
158
+
159
+ - Manage multiple OpenClaw JSON5 profiles
160
+ - Apply to `~/.openclaw/openclaw.json`
161
+ - Manage `AGENTS.md` under the OpenClaw Workspace (default: `~/.openclaw/workspace/AGENTS.md`)
162
+
163
+ ### Session Browser
136
164
 
137
165
  - View local Codex and Claude Code sessions in one page
138
166
  - Filter by source (Codex / Claude / All)
@@ -159,10 +187,15 @@ Config directory: `~/.codex/`
159
187
  - `codexmate-init.json` - First-run marker
160
188
  - `config.toml.codexmate-backup-*.bak` - Backup created on first takeover
161
189
 
162
- Claude Code config files:
163
-
164
- - `~/.claude/settings.json` - Runtime config (default write target)
165
- - `~/.claude/settings.json.codexmate-backup-*.bak` - Backup before first overwrite
190
+ Claude Code config files:
191
+
192
+ - `~/.claude/settings.json` - Runtime config (default write target)
193
+ - `~/.claude/settings.json.codexmate-backup-*.bak` - Backup before first overwrite
194
+
195
+ OpenClaw config files:
196
+
197
+ - `~/.openclaw/openclaw.json` - OpenClaw config (JSON5)
198
+ - `~/.openclaw/workspace/AGENTS.md` - OpenClaw workspace instructions
166
199
 
167
200
  ## First Run Initialization
168
201
 
@@ -266,20 +299,20 @@ codexmate unzip ./backup.zip D:/restored
266
299
 
267
300
  Note: Requires [7-Zip](https://www.7-zip.org/) installed.
268
301
 
269
- ## Tech Stack
270
-
271
- - **Node.js** - Runtime
272
- - **@iarna/toml** - TOML parser
273
- - **Vue.js 3** - Web UI framework
274
- - **Native HTTP** - Built-in Web server
275
-
276
- ## Release (GitHub Actions)
277
-
278
- Create a tag that matches `package.json` (for example `v0.0.1`). Then run the `release` workflow in GitHub Actions and input that tag. It will create a GitHub Release and attach the `npm pack` `.tgz` artifact.
279
-
280
- ## License
281
-
282
- Apache-2.0 © [ymkiux](https://github.com/ymkiux)
302
+ ## Tech Stack
303
+
304
+ - **Node.js** - Runtime
305
+ - **@iarna/toml** - TOML parser
306
+ - **Vue.js 3** - Web UI framework
307
+ - **Native HTTP** - Built-in Web server
308
+
309
+ ## Release (GitHub Actions)
310
+
311
+ Create a tag that matches `package.json` (for example `v0.0.1`). Then run the `release` workflow in GitHub Actions and input that tag. It will create a GitHub Release and attach the `npm pack` `.tgz` artifact.
312
+
313
+ ## License
314
+
315
+ Apache-2.0 © [ymkiux](https://github.com/ymkiux)
283
316
 
284
317
  ## Contributing
285
318
 
package/README.zh-CN.md CHANGED
@@ -2,44 +2,52 @@
2
2
 
3
3
  > 轻量级 AI 工具配置助手:CLI + Web,一站式管理 Codex 提供商与 Claude Code 配置
4
4
 
5
- [![Build](https://img.shields.io/github/actions/workflow/status/ymkiux/codexmate/release.yml?label=build)](https://github.com/ymkiux/codexmate/actions/workflows/release.yml) [![Version](https://img.shields.io/github/package-json/v/ymkiux/codexmate?label=version)](https://github.com/ymkiux/codexmate/blob/main/package.json) [![Status](https://img.shields.io/badge/status-alpha-orange)](https://github.com/ymkiux/codexmate) [![Downloads](https://img.shields.io/npm/dt/codexmate?label=downloads)](https://www.npmjs.com/package/codexmate)
5
+ [![Build](https://img.shields.io/github/actions/workflow/status/ymkiux/codexmate/release.yml?label=build)](https://github.com/ymkiux/codexmate/actions/workflows/release.yml) [![Version](https://img.shields.io/npm/v/codexmate?label=version&registry_uri=https%3A%2F%2Fregistry.npmjs.org)](https://www.npmjs.com/package/codexmate) [![Status](https://img.shields.io/badge/status-alpha-orange)](https://github.com/ymkiux/codexmate)
6
6
  [![Maintain](https://img.shields.io/github/commit-activity/m/ymkiux/codexmate?label=maintain%2Fmonth)](https://github.com/ymkiux/codexmate/commits) [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE) [![Node](https://img.shields.io/badge/node-%3E%3D14.0.0-green.svg)](https://nodejs.org)
7
7
 
8
8
  [English](README.md) | 中文
9
9
 
10
- ## 你能获得什么
11
-
12
- - 更快的模型/提供商切换
13
- - 更可控的本地配置管理
14
- - 可视化 Web 操作,降低命令行负担
15
- - 配置变更可回溯、有备份
16
-
17
- ## 功能总览
10
+ ## 你能获得什么
11
+
12
+ - 更快的模型/提供商切换
13
+ - 更可控的本地配置管理
14
+ - 可视化 Web 操作,降低命令行负担
15
+ - 配置变更可回溯、有备份
16
+
17
+ ## 更新说明(0.0.4)
18
+
19
+ - 新增 OpenClaw 配置模式(JSON5 多配置管理 + 一键应用)
20
+ - 新增 OpenClaw Workspace 的 AGENTS.md 管理
21
+ - 增加 JSON5 解析依赖
22
+
23
+ ## 功能总览
18
24
 
19
- | 模块 | 解决的问题 | 关键能力 |
20
- | --- | --- | --- |
21
- | Codex 配置 | 多提供商/多模型切换麻烦 | 提供商/模型切换、模型管理、CLI + Web 双入口、模板确认写入 |
22
- | Claude Code 配置 | 多方案共存、写入路径不统一 | 多配置方案管理、默认写入 `~/.claude/settings.json`、兼容模式环境变量 |
23
- | 会话浏览 | 本地会话难以追踪 | 会话列表/筛选、Markdown 导出、删除与批量清理 |
24
- | 附属工具 | 压缩/解压需额外工具 | 基于 7-Zip 的多线程压缩/解压 |
25
+ | 模块 | 解决的问题 | 关键能力 |
26
+ | --- | --- | --- |
27
+ | Codex 配置 | 多提供商/多模型切换麻烦 | 提供商/模型切换、模型管理、CLI + Web 双入口、模板确认写入 |
28
+ | Claude Code 配置 | 多方案共存、写入路径不统一 | 多配置方案管理、默认写入 `~/.claude/settings.json`、兼容模式环境变量 |
29
+ | OpenClaw 配置 | OpenClaw 配置分散 | JSON5 多配置管理、应用到 `~/.openclaw/openclaw.json`、Workspace 指令文件管理 |
30
+ | 会话浏览 | 本地会话难以追踪 | 会话列表/筛选、Markdown 导出、删除与批量清理 |
31
+ | 附属工具 | 压缩/解压需额外工具 | 基于 7-Zip 的多线程压缩/解压 |
25
32
 
26
33
  ## 为什么选择 Codex Mate
27
34
 
28
- - 聚焦两件事:Codex 提供商/模型切换 + Claude Code 配置应用
35
+ - 聚焦三件事:Codex 提供商/模型切换 + Claude Code 配置应用 + OpenClaw 配置应用
29
36
  - 本地优先:配置与 API Key 写入本地文件,不走云端
30
37
  - 轻量好用:CLI + Web 双入口,无需安装桌面端
31
38
  - 可回退:首次接管前自动备份旧配置
32
39
 
33
40
  ## 适用场景
34
41
 
35
- - 频繁切换提供商/模型,想要一条命令完成
36
- - 同时用 Codex 与 Claude Code,需要统一入口
37
- - 多项目/多环境切换,希望快速改写配置
38
- - 想可视化改配置但又不想上大体量客户端
42
+ - 频繁切换提供商/模型,想要一条命令完成
43
+ - 同时用 Codex 与 Claude Code,需要统一入口
44
+ - 使用 OpenClaw 多配置,希望快速切换
45
+ - 多项目/多环境切换,希望快速改写配置
46
+ - 想可视化改配置但又不想上大体量客户端
39
47
 
40
48
  ## 范围与边界
41
49
 
42
- - 只做 Codex 与 Claude Code 的配置管理,不做全量多工具一体化
50
+ - 只做 Codex、Claude Code OpenClaw 的配置管理,不做全量多工具一体化
43
51
  - 不内置代理/转发/费用面板/云同步(保持轻量)
44
52
  - Web UI 仅在你启动时运行(`codexmate start`)
45
53
 
@@ -47,7 +55,12 @@
47
55
 
48
56
  1. 安装(全局):
49
57
  ```bash
50
- npm install -g ymkiux/codexmate
58
+ npm install -g codexmate
59
+ ```
60
+
61
+ 或免安装直接运行:
62
+ ```bash
63
+ npx codexmate@latest status
51
64
  ```
52
65
 
53
66
  2. 查看当前状态:
@@ -71,7 +84,16 @@ codexmate start
71
84
  ### 全局安装(推荐)
72
85
 
73
86
  ```bash
74
- npm install -g ymkiux/codexmate
87
+ npm install -g codexmate
88
+ ```
89
+
90
+ npm 包名:`codexmate`。
91
+
92
+ ### 使用 npx(免安装)
93
+
94
+ ```bash
95
+ npx codexmate@latest status
96
+ npx codexmate@latest start
75
97
  ```
76
98
 
77
99
  ### 从源码安装
@@ -121,14 +143,20 @@ codexmate start
121
143
  - 添加/删除自定义提供商
122
144
  - 支持 Linux / Windows 环境下的 Codex 配置管理
123
145
 
124
- ### Claude Code 配置模式(Windows / macOS / Linux)
125
-
126
- - 管理多个 Claude Code 配置方案
127
- - 配置 API Key、Base URL 和模型
128
- - 默认写入 `~/.claude/settings.json` 的 `env` 字段:`env.ANTHROPIC_API_KEY` / `env.ANTHROPIC_AUTH_TOKEN` / `env.ANTHROPIC_BASE_URL` / `env.ANTHROPIC_MODEL` / `env.CLAUDE_CODE_USE_KEY`
129
- - 兼容模式:写入系统环境变量(适合旧习惯或特定 Windows 场景)
130
-
131
- ### 会话浏览模式
146
+ ### Claude Code 配置模式(Windows / macOS / Linux)
147
+
148
+ - 管理多个 Claude Code 配置方案
149
+ - 配置 API Key、Base URL 和模型
150
+ - 默认写入 `~/.claude/settings.json` 的 `env` 字段:`env.ANTHROPIC_API_KEY` / `env.ANTHROPIC_AUTH_TOKEN` / `env.ANTHROPIC_BASE_URL` / `env.ANTHROPIC_MODEL` / `env.CLAUDE_CODE_USE_KEY`
151
+ - 兼容模式:写入系统环境变量(适合旧习惯或特定 Windows 场景)
152
+
153
+ ### OpenClaw 配置模式
154
+
155
+ - 管理多个 OpenClaw JSON5 配置方案
156
+ - 应用到 `~/.openclaw/openclaw.json`
157
+ - 管理 OpenClaw Workspace 下的 `AGENTS.md`(默认 `~/.openclaw/workspace/AGENTS.md`)
158
+
159
+ ### 会话浏览模式
132
160
 
133
161
  - 在同一 Web 页面查看 Codex 与 Claude Code 的本地会话列表
134
162
  - 支持按来源筛选(Codex / Claude / 全部)
@@ -155,10 +183,15 @@ codexmate start
155
183
  - `codexmate-init.json` - 首次初始化标记(用于避免重复重置)
156
184
  - `config.toml.codexmate-backup-*.bak` - 首次初始化时自动备份的旧配置(若存在)
157
185
 
158
- Claude Code 配置应用涉及:
159
-
160
- - `~/.claude/settings.json` - Claude Code 运行时配置(默认写入目标)
161
- - `~/.claude/settings.json.codexmate-backup-*.bak` - 首次改写前自动备份(若存在旧文件)
186
+ Claude Code 配置应用涉及:
187
+
188
+ - `~/.claude/settings.json` - Claude Code 运行时配置(默认写入目标)
189
+ - `~/.claude/settings.json.codexmate-backup-*.bak` - 首次改写前自动备份(若存在旧文件)
190
+
191
+ OpenClaw 配置涉及:
192
+
193
+ - `~/.openclaw/openclaw.json` - OpenClaw 配置(JSON5)
194
+ - `~/.openclaw/workspace/AGENTS.md` - OpenClaw Workspace 指令文件
162
195
 
163
196
  ## 首次运行初始化说明
164
197
 
@@ -262,20 +295,20 @@ codexmate unzip ./backup.zip D:/restored
262
295
 
263
296
  注意:需要系统安装 [7-Zip](https://www.7-zip.org/)。
264
297
 
265
- ## 技术栈
266
-
267
- - **Node.js** - 运行环境
268
- - **@iarna/toml** - TOML 配置文件解析
269
- - **Vue.js 3** - Web 界面框架
270
- - **原生 HTTP** - 内建 Web 服务器
271
-
272
- ## 发布(GitHub Actions)
273
-
274
- 创建与 `package.json` 版本一致的标签(例如 `v0.0.1`)。然后在 GitHub Actions 中手动运行 `release` 工作流并输入该标签,系统会创建 GitHub Release,并附带 `npm pack` 生成的 `.tgz` 产物。
275
-
276
- ## 许可证
277
-
278
- Apache-2.0 © [ymkiux](https://github.com/ymkiux)
298
+ ## 技术栈
299
+
300
+ - **Node.js** - 运行环境
301
+ - **@iarna/toml** - TOML 配置文件解析
302
+ - **Vue.js 3** - Web 界面框架
303
+ - **原生 HTTP** - 内建 Web 服务器
304
+
305
+ ## 发布(GitHub Actions)
306
+
307
+ 创建与 `package.json` 版本一致的标签(例如 `v0.0.1`)。然后在 GitHub Actions 中手动运行 `release` 工作流并输入该标签,系统会创建 GitHub Release,并附带 `npm pack` 生成的 `.tgz` 产物。
308
+
309
+ ## 许可证
310
+
311
+ Apache-2.0 © [ymkiux](https://github.com/ymkiux)
279
312
 
280
313
  ## 贡献
281
314