petdex-cc 0.1.6 → 0.1.8

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/README_CN.md CHANGED
@@ -1,46 +1,115 @@
1
1
  <div align="center">
2
2
 
3
- # petdex-cc
3
+ <br />
4
4
 
5
- **Claude Code 桌面宠物伴侣**
5
+ # petdex-cc ✨
6
6
 
7
- *住在屏幕上的动画宠物,实时响应你的每一次编码操作*
7
+ ### Claude Code 桌面宠物伴侣
8
8
 
9
- [![npm version](https://img.shields.io/badge/version-0.1.1-8b5cf6?style=flat-square)](https://www.npmjs.com/package/petdex-cc)
10
- [![platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-0ea5e9?style=flat-square)]()
11
- [![node](https://img.shields.io/badge/node-%3E%3D18-22c55e?style=flat-square)]()
12
- [![license](https://img.shields.io/badge/license-MIT-f59e0b?style=flat-square)]()
13
- [![pets](https://img.shields.io/badge/pets-1%2C569%20%E6%AC%BE-ec4899?style=flat-square)](https://petdex.crafter.run/zh)
9
+ **住在屏幕上的动画宠物,实时响应你的每一次编码操作**
14
10
 
15
- [English](./README.md) · [中文文档](./README_CN.md)
11
+ <br />
12
+
13
+ [![npm version](https://img.shields.io/npm/v/petdex-cc?style=for-the-badge&color=8b5cf6&labelColor=1a1a2e)](https://www.npmjs.com/package/petdex-cc)
14
+ [![platform](https://img.shields.io/badge/platform-Windows%20%7C%20macOS%20%7C%20Linux-0ea5e9?style=for-the-badge&labelColor=1a1a2e)]()
15
+ [![node](https://img.shields.io/badge/node-%3E%3D18-22c55e?style=for-the-badge&labelColor=1a1a2e)]()
16
+ [![license](https://img.shields.io/badge/license-MIT-f59e0b?style=for-the-badge&labelColor=1a1a2e)](./LICENSE)
17
+ [![pets](https://img.shields.io/badge/pets-1%2C569%20%E6%AC%BE-ec4899?style=for-the-badge&labelColor=1a1a2e)](https://petdex.crafter.run/zh)
18
+ [![GitHub stars](https://img.shields.io/github/stars/devnomad-byte/petdex-cc?style=for-the-badge&color=f59e0b&labelColor=1a1a2e)](https://github.com/devnomad-byte/petdex-cc/stargazers)
19
+
20
+ <br />
21
+
22
+ [🌐 English](./README.md) · [🇨🇳 中文文档](./README_CN.md)
16
23
 
17
24
  </div>
18
25
 
19
26
  ---
20
27
 
21
- ## petdex-cc 是什么?
28
+ <div align="center">
29
+
30
+ <img src="./boba.gif" alt="petdex-cc 演示" width="600" />
31
+
32
+ </div>
33
+
34
+ ---
35
+
36
+ <div align="center">
37
+
38
+ 🐾 **一条命令,唤醒你的专属宠物** 🐾
39
+
40
+ </div>
41
+
42
+ ```bash
43
+ npm install -g petdex-cc
44
+ petdex-cc install boba
45
+ ```
46
+
47
+ <div align="center">
48
+ <i>全局安装后,宠物立刻出现在桌面上,开始响应你的 Claude Code 操作 🎉</i>
49
+ </div>
50
+
51
+ ---
22
52
 
23
- petdex-cc 为你的 Claude Code 工作流带来**动画桌面宠物**。从 [Petdex 宠物库](https://petdex.crafter.run/zh)(1,569+ 款社区宠物)挑选一只,一条命令安装,宠物立刻出现在桌面上 —— 陪你读代码、庆祝任务完成、在你遇到错误时加油打气,随你的编码而成长。
53
+ ## 🌟 为什么选择 petdex-cc?
24
54
 
25
55
  > **和 `npx petdex install` 有什么区别?**
56
+ >
26
57
  > 原始的 `petdex` 命令提供基础宠物展示。`petdex-cc` 额外增加了**深度 Claude Code 集成** —— 通过 hooks 接入你的编码流程,包含等级成长系统、AI 生成语音、时段问候、互动特效。你的宠物不只是一个装饰,它*参与*你的编码过程。
27
58
 
28
- > **目前仅支持 Claude Code,后续将扩展到 Cursor、Windsurf、Copilot 等 AI 编码工具。**
59
+ <table>
60
+ <tr>
61
+ <td width="50%">
62
+
63
+ 🎯 **实时反应**
64
+
65
+ 读文件、编辑代码、运行命令、完成任务、遇到错误时,宠物同步改变动画
66
+
67
+ </td>
68
+ <td width="50%">
69
+
70
+ 🏆 **8 级成长体系**
71
+
72
+ Byte → Process → Thread → Module → Kernel → Neural → Quantum → Singularity
73
+
74
+ </td>
75
+ </tr>
76
+ <tr>
77
+ <td width="50%">
78
+
79
+ 🤖 **AI 语音气泡**
29
80
 
30
- ### 功能一览
81
+ 基于 Claude 生成的上下文感知中文对话,无 API Key 时使用内置台词
31
82
 
32
- - **实时反应** —— 你读文件、编辑代码、运行命令、完成任务、遇到错误时,宠物同步改变动画
33
- - **8 级成长体系** —— Byte → Process → Thread → Module → Kernel → Neural → Quantum → Singularity,逐级解锁视觉特效
34
- - **AI 语音气泡** —— 基于 Claude 生成的上下文感知中文对话(无 API Key 时使用内置台词)
35
- - **时段问候** —— 早上好、午安、下午茶、下班、晚安、凌晨问候
36
- - **互动体验** —— 拖拽宠物、右键菜单、快速点击彩蛋
37
- - **系统托盘** —— 任务栏图标,可显示/隐藏、查看关于、退出
38
- - **状态持久化** —— 等级和事件数重启不丢失(HMAC 签名防篡改)
39
- - **1,569+ 款宠物** —— 浏览 [petdex.crafter.run/zh](https://petdex.crafter.run/zh),安装任意社区宠物
83
+ </td>
84
+ <td width="50%">
85
+
86
+ 🕐 **时段问候**
87
+
88
+ 早上好、午安、下午茶、下班、晚安、凌晨问候
89
+
90
+ </td>
91
+ </tr>
92
+ <tr>
93
+ <td width="50%">
94
+
95
+ 🎮 **互动体验**
96
+
97
+ 拖拽宠物到任意位置、右键菜单、快速点击彩蛋
98
+
99
+ </td>
100
+ <td width="50%">
101
+
102
+ 💾 **状态持久化**
103
+
104
+ 等级和事件数重启不丢失(HMAC 签名防篡改)
105
+
106
+ </td>
107
+ </tr>
108
+ </table>
40
109
 
41
110
  ---
42
111
 
43
- ## 快速开始
112
+ ## 🚀 快速开始
44
113
 
45
114
  ### 环境要求
46
115
 
@@ -52,75 +121,169 @@ petdex-cc 为你的 Claude Code 工作流带来**动画桌面宠物**。从 [Pet
52
121
  ```bash
53
122
  # 1. 浏览宠物 → https://petdex.crafter.run/zh
54
123
  # 2. 看中哪只,记下它的 slug(比如 "boba")
55
- # 3. 安装:
124
+ # 3. 全局安装并配置宠物:
56
125
 
57
- npx petdex-cc install boba
126
+ npm install -g petdex-cc
127
+ petdex-cc install boba
58
128
  ```
59
129
 
60
- 宠物立刻出现在桌面上,开始响应你的 Claude Code 操作。
130
+ > **为什么要全局安装?** 全局安装后 `petdex-cc` 命令才能在任何终端使用(`petdex-cc start`、`petdex-cc stop` 等)。使用 `npx` 只能一次性安装,新终端窗口中无法直接调用 `petdex-cc` 命令。
131
+ >
132
+ > **开机自启:** `petdex-cc install` 会自动启用开机自启。如需关闭,运行 `petdex-cc autostart --disable`。
133
+
134
+ ### 🐾 热门宠物
135
+
136
+ <table>
137
+ <tr>
138
+ <th>Slug</th>
139
+ <th>名称</th>
140
+ <th>描述</th>
141
+ </tr>
142
+ <tr>
143
+ <td><code>boba</code></td>
144
+ <td>🦦 Boba</td>
145
+ <td>喝着珍珠奶茶的小水獭</td>
146
+ </tr>
147
+ <tr>
148
+ <td><code>doraemon</code></td>
149
+ <td>🐱 哆啦A梦</td>
150
+ <td>来自未来的蓝色机器猫</td>
151
+ </tr>
152
+ <tr>
153
+ <td><code>noir-webling</code></td>
154
+ <td>🕷️ Noir Webling</td>
155
+ <td>戴礼帽的单色蜘蛛侦探</td>
156
+ </tr>
157
+ <tr>
158
+ <td><code>ikun-hoops</code></td>
159
+ <td>🏀 IKUN Hoops</td>
160
+ <td>穿卫衣拿篮球的小鸡</td>
161
+ </tr>
162
+ <tr>
163
+ <td><code>ddo-zvzo</code></td>
164
+ <td>😎 ddo-zvzo</td>
165
+ <td>会戴墨镜的紫色吉祥物</td>
166
+ </tr>
167
+ <tr>
168
+ <td><code>mochi</code></td>
169
+ <td>🐱 Mochi</td>
170
+ <td>橘白色可爱小猫</td>
171
+ </tr>
172
+ </table>
173
+
174
+ > 浏览全部 1,569+ 款宠物 → [**petdex.crafter.run/zh**](https://petdex.crafter.run/zh) 🎨
175
+
176
+ <details>
177
+ <summary>🌏 国内用户加速(必看)</summary>
178
+
179
+ <br />
180
+
181
+ 首次安装需要下载 Electron 二进制文件(~100MB),默认从 GitHub 下载,国内可能很慢或无法访问。安装前配置国内镜像:
61
182
 
62
- ### 热门宠物
183
+ ```bash
184
+ # 设置 npm 淘宝镜像源
185
+ npm config set registry https://registry.npmmirror.com
63
186
 
64
- | Slug | 名称 | 描述 |
65
- |---|---|---|
66
- | `boba` | Boba | 喝着珍珠奶茶的小水獭 |
67
- | `doraemon` | 哆啦A梦 | 来自未来的蓝色机器猫 |
68
- | `noir-webling` | Noir Webling | 戴礼帽的单色蜘蛛侦探 |
69
- | `ikun-hoops` | IKUN Hoops | 穿卫衣拿篮球的小鸡 |
70
- | `ddo-zvzo` | ddo-zvzo | 会戴墨镜的紫色吉祥物 |
71
- | `mochi` | Mochi | 橘白色可爱小猫 |
187
+ # 设置 Electron 下载镜像
188
+ npm config set electron_mirror https://npmmirror.com/mirrors/electron/
189
+
190
+ # 然后全局安装
191
+ npm install -g petdex-cc
192
+ petdex-cc install boba
193
+ ```
194
+
195
+ 以上配置永久生效,只需设置一次。
196
+
197
+ </details>
198
+
199
+ <details>
200
+ <summary>🔧 常见问题</summary>
201
+
202
+ <br />
203
+
204
+ **`ERR_MODULE_NOT_FOUND: Cannot find package '@electron/remote'`**
205
+
206
+ 这是 0.1.6 之前版本的 bug。更新到最新版即可:
207
+
208
+ ```bash
209
+ npm uninstall -g petdex-cc
210
+ npm install -g petdex-cc
211
+ petdex-cc install boba
212
+ ```
213
+
214
+ **`EPERM` / `EBUSY` 文件被锁**
215
+
216
+ 宠物进程仍在运行,锁住了文件。先停止宠物:
217
+
218
+ ```bash
219
+ # Windows PowerShell
220
+ Stop-Process -Name electron -Force -ErrorAction SilentlyContinue
72
221
 
73
- > 浏览全部 1,569+ 款宠物 → [**petdex.crafter.run/zh**](https://petdex.crafter.run/zh)
222
+ # macOS / Linux
223
+ pkill -f electron
224
+
225
+ # 然后重新安装
226
+ npm install -g petdex-cc
227
+ petdex-cc install boba
228
+ ```
229
+
230
+ **安装时 `ECONNRESET` / `ETIMEDOUT`**
231
+
232
+ Electron 无法从 GitHub 下载。请配置国内镜像(见上方「国内用户加速」)。
233
+
234
+ </details>
74
235
 
75
236
  ---
76
237
 
77
- ## 你的宠物会做什么
238
+ ## 🎬 你的宠物会做什么
78
239
 
79
240
  Claude Code 的每一次操作都会触发宠物反应:
80
241
 
81
242
  | Claude Code 事件 | 宠物动画 | 语音气泡 |
82
243
  |---|---|---|
83
- | 会话开始 | 挥手 | "Let's get to work!" |
84
- | 读取文件 | 审视 | "Reading 文件名..." |
85
- | 编辑文件 | 待机 | "Edited 文件名" |
86
- | 运行命令 | 奔跑 | "Running command..." |
87
- | 搜索文件 | 等待 | "Searching..." |
88
- | 工具失败 | 垂头 | "Oops, something went wrong" + AI 鼓励 |
89
- | 任务完成 | 跳跃 | "Task complete!" + AI 庆祝 |
90
- | Claude 停止 | 跳跃 | "Task complete!"(60% 概率触发 AI) |
91
- | Claude 报错 | 垂头 | 错误信息 + AI 安慰 |
92
- | 空闲 10+ 分钟 | 挥手 | 时段问候(中文) |
93
- | 等级提升 | 当前状态 | "Level up! Kernel!" + 特效激活 |
94
-
95
- ### 互动操作
96
-
97
- - **拖拽** —— 点击拖动宠物到屏幕任意位置
98
- - **右键** —— 上下文菜单:显示/隐藏、关于、退出
99
- - **系统托盘** —— 右下角任务栏图标
100
- - **彩蛋** —— 快速连续点击宠物,触发递进式反应(2 → 4 → 6 → 9 → 12 → 15 次)
244
+ | 🟢 会话开始 | 挥手 👋 | "Let's get to work!" |
245
+ | 📖 读取文件 | 审视 🔍 | "Reading 文件名..." |
246
+ | ✏️ 编辑文件 | 待机 | "Edited 文件名" |
247
+ | ▶️ 运行命令 | 奔跑 🏃 | "Running command..." |
248
+ | 🔍 搜索文件 | 等待 | "Searching..." |
249
+ | 工具失败 | 垂头 😢 | "Oops, something went wrong" + AI 鼓励 |
250
+ | 任务完成 | 跳跃 🎉 | "Task complete!" + AI 庆祝 |
251
+ | 🛑 Claude 停止 | 跳跃 | "Task complete!"(60% 概率触发 AI) |
252
+ | ⚠️ Claude 报错 | 垂头 | 错误信息 + AI 安慰 |
253
+ | 💤 空闲 10+ 分钟 | 挥手 | 时段问候(中文) |
254
+ | ⬆️ 等级提升 | 当前状态 | "Level up! Kernel!" + 特效激活 |
255
+
256
+ ### 🎮 互动操作
257
+
258
+ | 操作 | 效果 |
259
+ |---|---|
260
+ | **拖拽** | 点击拖动宠物到屏幕任意位置 |
261
+ | **右键** | 上下文菜单:显示/隐藏、关于、退出 |
262
+ | **系统托盘** | 右下角任务栏图标 |
263
+ | **彩蛋** | 快速连续点击,触发递进式反应(2→4→6→9→12→15 次) |
101
264
 
102
265
  ---
103
266
 
104
- ## 等级系统
267
+ ## 🏆 等级系统
105
268
 
106
- 你的宠物随你的编码而成长。每次 Claude Code 操作算一次事件,累积升级:
269
+ 你的宠物随你的编码而成长,每次 Claude Code 操作算一次事件,累积升级:
107
270
 
108
- | 等级 | 名称 | 所需事件数 | 颜色 | 视觉效果 |
271
+ | 等级 | 名称 | 所需事件数 | | 视觉效果 |
109
272
  |:---:|---|---:|---|---|
110
- | 1 | **Byte** | 0 | 银色 | 基础宠物 |
111
- | 2 | **Process** | 50 | 绿色 | 呼吸式发光 |
112
- | 3 | **Thread** | 200 | 蓝色 | 旋转光环 |
113
- | 4 | **Module** | 500 | 紫色 | 增强光环 |
114
- | 5 | **Kernel** | 1,000 | 琥珀 | 漂浮光点粒子 |
115
- | 6 | **Neural** | 2,000 | 粉色 | 粒子风暴 |
116
- | 7 | **Quantum** | 5,000 | 青色 | 能量场 |
117
- | 8 | **Singularity** | 10,000 | 金色 | 金色光环 + 全部特效 |
273
+ | 1 | **Byte** | 0 | 基础宠物 |
274
+ | 2 | **Process** | 50 | 🟢 呼吸式发光 |
275
+ | 3 | **Thread** | 200 | 🔵 旋转光环 |
276
+ | 4 | **Module** | 500 | 🟣 增强光环 |
277
+ | 5 | **Kernel** | 1,000 | 🟡 漂浮光点粒子 |
278
+ | 6 | **Neural** | 2,000 | 🩷 粒子风暴 |
279
+ | 7 | **Quantum** | 5,000 | 🩵 能量场 |
280
+ | 8 | **Singularity** | 10,000 | 🌟 金色光环 + 全部特效 |
118
281
 
119
282
  ---
120
283
 
121
- ## AI 语音
284
+ ## 🤖 AI 语音
122
285
 
123
- 当 Anthropic API Key 可用时(自动从 Claude Code 设置读取,或通过 `petdex-cc config` 配置),宠物会生成**上下文感知的中文语音**:
286
+ 当 Anthropic API Key 可用时(自动从 Claude Code 设置读取),宠物会生成**上下文感知的中文语音**:
124
287
 
125
288
  | 场景 | 触发时机 | AI 生成示例 |
126
289
  |---|---|---|
@@ -135,7 +298,7 @@ Claude Code 的每一次操作都会触发宠物反应:
135
298
 
136
299
  ---
137
300
 
138
- ## 命令参考
301
+ ## 📋 命令参考
139
302
 
140
303
  ```bash
141
304
  petdex-cc install <slug> # 下载宠物、配置 hooks、启动
@@ -145,10 +308,16 @@ petdex-cc list # 浏览 Petdex 宠物库
145
308
  petdex-cc switch <slug> # 运行时切换宠物(自动下载)
146
309
  petdex-cc status # 查看宠物名称、等级、事件数、运行状态
147
310
  petdex-cc uninstall # 移除 hooks、停止宠物、删除所有数据
311
+ petdex-cc autostart # 查看开机自启状态
312
+ petdex-cc autostart --enable # 启用开机自启(安装时默认启用)
313
+ petdex-cc autostart --disable # 关闭开机自启
148
314
  petdex-cc config [选项] # 配置设置
149
315
  ```
150
316
 
151
- ### 配置选项
317
+ <details>
318
+ <summary>⚙️ 配置选项</summary>
319
+
320
+ <br />
152
321
 
153
322
  ```bash
154
323
  petdex-cc config --api-key <key> # Anthropic API Key(用于 AI 语音)
@@ -158,9 +327,11 @@ petdex-cc config --cooldown <分钟> # AI 调用冷却时间(默
158
327
 
159
328
  > API 凭据会自动从 `~/.claude/settings.json` 读取,大多数用户无需手动配置。
160
329
 
330
+ </details>
331
+
161
332
  ---
162
333
 
163
- ## 架构设计
334
+ ## 🏗️ 架构设计
164
335
 
165
336
  ```
166
337
  ┌─────────────────────────────────────────────────┐
@@ -200,25 +371,10 @@ petdex-cc config --cooldown <分钟> # AI 调用冷却时间(默
200
371
  └──────────────────┘
201
372
  ```
202
373
 
203
- ---
374
+ <details>
375
+ <summary>📁 项目结构</summary>
204
376
 
205
- ## 开发者安装
206
-
207
- ```bash
208
- git clone https://github.com/devnomad-byte/petdex-cc.git
209
- cd petdex-cc
210
- npm install
211
- npm run build
212
-
213
- # 开发模式启动
214
- npx electron .
215
-
216
- # 全局安装使用 CLI
217
- npm link
218
- petdex-cc install boba
219
- ```
220
-
221
- ### 项目结构
377
+ <br />
222
378
 
223
379
  ```
224
380
  petdex-cc/
@@ -241,21 +397,38 @@ petdex-cc/
241
397
  │ │ └── context-menu.ts 右键菜单
242
398
  │ ├── cli/ CLI 命令实现
243
399
  │ ├── hooks/ Claude Code hooks 注册
244
- │ │ ├── register.ts 写入 ~/.claude/settings.json
245
- │ │ ├── write-scripts.ts 跨平台 bridge 脚本
246
- │ │ ├── bridge.ps1 Windows PowerShell bridge
247
- │ │ └── bridge.sh Unix bash bridge
248
400
  │ ├── petdex-api/ Petdex 注册中心客户端
249
- │ │ ├── client.ts 清单获取 + slug 查询
250
- │ │ └── download.ts 流式下载 + 进度回调
251
401
  │ └── shared/ 共享类型和常量
252
402
  ```
253
403
 
404
+ </details>
405
+
406
+ ---
407
+
408
+ ## 🔧 开发者安装
409
+
410
+ ```bash
411
+ git clone https://github.com/devnomad-byte/petdex-cc.git
412
+ cd petdex-cc
413
+ npm install
414
+ npm run build
415
+
416
+ # 开发模式启动
417
+ npx electron .
418
+
419
+ # 全局安装使用 CLI
420
+ npm link
421
+ petdex-cc install boba
422
+ ```
423
+
254
424
  ---
255
425
 
256
- ## 配置参考
426
+ ## ⚙️ 配置参考
427
+
428
+ <details>
429
+ <summary>自动检测配置</summary>
257
430
 
258
- ### 自动检测
431
+ <br />
259
432
 
260
433
  petdex-cc 自动从 `~/.claude/settings.json` 读取以下配置:
261
434
 
@@ -264,15 +437,12 @@ petdex-cc 自动从 `~/.claude/settings.json` 读取以下配置:
264
437
  | `ANTHROPIC_AUTH_TOKEN` | AI 语音的 API Key |
265
438
  | `ANTHROPIC_BASE_URL` | AI 语音的 API 端点 |
266
439
 
267
- ### 手动配置
440
+ </details>
268
441
 
269
- 存储在 `~/.petdex-cc/config.json`:
442
+ <details>
443
+ <summary>数据目录</summary>
270
444
 
271
- ```bash
272
- petdex-cc config --api-key <key> --api-base-url <url> --cooldown 2
273
- ```
274
-
275
- ### 数据目录
445
+ <br />
276
446
 
277
447
  | 路径 | 内容 |
278
448
  |---|---|
@@ -282,11 +452,11 @@ petdex-cc config --api-key <key> --api-base-url <url> --cooldown 2
282
452
  | `~/.petdex-cc/hooks/` | Bridge 脚本 |
283
453
  | `~/.petdex-cc/config.json` | 用户配置(API Key、冷却时间) |
284
454
 
285
- ---
455
+ </details>
286
456
 
287
- ## Hooks 参考
457
+ ---
288
458
 
289
- petdex-cc `~/.claude/settings.json` 中注册以下 hooks:
459
+ ## 🪝 Hooks 参考
290
460
 
291
461
  | Hook | 匹配器 | 触发时机 |
292
462
  |---|---|---|
@@ -301,7 +471,7 @@ petdex-cc 在 `~/.claude/settings.json` 中注册以下 hooks:
301
471
 
302
472
  ---
303
473
 
304
- ## 后续计划
474
+ ## 🗺️ 后续计划
305
475
 
306
476
  - [ ] 支持 Cursor
307
477
  - [ ] 支持 Windsurf
@@ -311,13 +481,28 @@ petdex-cc 在 `~/.claude/settings.json` 中注册以下 hooks:
311
481
 
312
482
  ---
313
483
 
314
- ## 许可证
484
+ <div align="center">
485
+
486
+ ## ⭐ Star 趋势
487
+
488
+ <a href="https://www.star-history.com/?repos=devnomad-byte%2Fpetdex-cc&type=date&legend=top-left">
489
+ <picture>
490
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=devnomad-byte/petdex-cc&type=date&theme=dark&legend=top-left" />
491
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=devnomad-byte/petdex-cc&type=date&legend=top-left" />
492
+ <img alt="Star History Chart" src="https://api.star-history.com/chart?repos=devnomad-byte/petdex-cc&type=date&legend=top-left" />
493
+ </picture>
494
+ </a>
495
+
496
+ <br />
497
+
498
+ ## 📄 许可证
315
499
 
316
500
  [MIT](./LICENSE)
317
501
 
318
- ---
502
+ <br />
503
+
504
+ 为 [Claude Code](https://docs.anthropic.com/en/docs/claude-code) 社区用心打造 💜
505
+
506
+ 宠物来自 [**Petdex**](https://petdex.crafter.run/zh) · 1,569+ 款社区宠物,持续更新中
319
507
 
320
- <div align="center">
321
- <sub>为 <a href="https://docs.anthropic.com/en/docs/claude-code">Claude Code</a> 社区用心打造</sub><br />
322
- <sub>宠物来自 <a href="https://petdex.crafter.run/zh">Petdex</a></sub>
323
508
  </div>
package/dist/bin/cli.js CHANGED
@@ -7,6 +7,7 @@ import { switchPet } from "../src/cli/switch.js";
7
7
  import { status } from "../src/cli/status.js";
8
8
  import { uninstall } from "../src/cli/uninstall.js";
9
9
  import { config } from "../src/cli/config.js";
10
+ import { autostart } from "../src/cli/autostart.js";
10
11
  const args = process.argv.slice(2);
11
12
  const command = args[0];
12
13
  const rest = args.slice(1);
@@ -39,11 +40,14 @@ async function main() {
39
40
  status();
40
41
  break;
41
42
  case "uninstall":
42
- uninstall();
43
+ await uninstall();
43
44
  break;
44
45
  case "config":
45
46
  config(rest);
46
47
  break;
48
+ case "autostart":
49
+ await autostart(rest[0]);
50
+ break;
47
51
  case "help":
48
52
  case "--help":
49
53
  case "-h":
@@ -56,19 +60,20 @@ async function main() {
56
60
  }
57
61
  }
58
62
  function printHelp() {
59
- console.log(`
60
- petdex-cc - Desktop pet companion for Claude Code
61
-
62
- Commands:
63
- install <slug> Install a pet from Petdex and configure hooks
64
- start Start the desktop pet
65
- stop Stop the desktop pet
66
- list List available pets from Petdex
67
- switch <slug> Switch to a different pet
68
- status Show current pet status and level
69
- uninstall Remove petdex-cc hooks and data
70
- config Configure API key and settings
71
- help Show this help message
63
+ console.log(`
64
+ petdex-cc - Desktop pet companion for Claude Code
65
+
66
+ Commands:
67
+ install <slug> Install a pet from Petdex and configure hooks
68
+ start Start the desktop pet
69
+ stop Stop the desktop pet
70
+ list List available pets from Petdex
71
+ switch <slug> Switch to a different pet
72
+ status Show current pet status and level
73
+ uninstall Remove petdex-cc hooks and data
74
+ config Configure API key and settings
75
+ autostart Enable/disable auto-start on login (--enable / --disable)
76
+ help Show this help message
72
77
  `);
73
78
  }
74
79
  main().catch((err) => {
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE3B,KAAK,UAAU,IAAI;IACjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,SAAS;YACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM;QACR,KAAK,OAAO;YACV,KAAK,EAAE,CAAC;YACR,MAAM;QACR,KAAK,MAAM;YACT,IAAI,EAAE,CAAC;YACP,MAAM;QACR,KAAK,MAAM;YACT,MAAM,IAAI,EAAE,CAAC;YACb,MAAM;QACR,KAAK,QAAQ;YACX,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,EAAE,CAAC;YACT,MAAM;QACR,KAAK,WAAW;YACd,SAAS,EAAE,CAAC;YACZ,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,CAAC,IAAI,CAAC,CAAC;YACb,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,SAAS,EAAE,CAAC;YACZ,MAAM;QACR;YACE,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;YACjD,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;CAab,CAAC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAE3B,KAAK,UAAU,IAAI;IACjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,SAAS;YACZ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM;QACR,KAAK,OAAO;YACV,KAAK,EAAE,CAAC;YACR,MAAM;QACR,KAAK,MAAM;YACT,IAAI,EAAE,CAAC;YACP,MAAM;QACR,KAAK,MAAM;YACT,MAAM,IAAI,EAAE,CAAC;YACb,MAAM;QACR,KAAK,QAAQ;YACX,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,EAAE,CAAC;YACT,MAAM;QACR,KAAK,WAAW;YACd,MAAM,SAAS,EAAE,CAAC;YAClB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,CAAC,IAAI,CAAC,CAAC;YACb,MAAM;QACR,KAAK,WAAW;YACd,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,SAAS,EAAE,CAAC;YACZ,MAAM;QACR;YACE,OAAO,CAAC,GAAG,CAAC,oBAAoB,OAAO,IAAI,EAAE,EAAE,CAAC,CAAC;YACjD,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;CAcb,CAAC,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function enableAutostart(): Promise<void>;
2
+ export declare function disableAutostart(): Promise<void>;
3
+ export declare function autostartStatus(): Promise<boolean>;
4
+ export declare function autostart(subcommand?: string): Promise<void>;
5
+ //# sourceMappingURL=autostart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autostart.d.ts","sourceRoot":"","sources":["../../../src/cli/autostart.ts"],"names":[],"mappings":"AAqBA,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAKrD;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAKtD;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAGxD;AAED,wBAAsB,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBlE"}
@@ -0,0 +1,54 @@
1
+ import { createRequire } from "node:module";
2
+ import { dirname, join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ const require = createRequire(import.meta.url);
5
+ const AutoLaunch = require("auto-launch");
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ const pkgRoot = join(__dirname, "..", "..", "..");
8
+ const cliEntry = join(pkgRoot, "dist", "bin", "cli.js");
9
+ function getAutoLauncher() {
10
+ return new AutoLaunch({
11
+ name: "petdex-cc",
12
+ path: process.execPath,
13
+ isHidden: true,
14
+ extraArgs: [cliEntry, "start"],
15
+ });
16
+ }
17
+ export async function enableAutostart() {
18
+ const launcher = getAutoLauncher();
19
+ const alreadyEnabled = await launcher.isEnabled();
20
+ if (alreadyEnabled)
21
+ return;
22
+ await launcher.enable();
23
+ }
24
+ export async function disableAutostart() {
25
+ const launcher = getAutoLauncher();
26
+ const alreadyEnabled = await launcher.isEnabled();
27
+ if (!alreadyEnabled)
28
+ return;
29
+ await launcher.disable();
30
+ }
31
+ export async function autostartStatus() {
32
+ const launcher = getAutoLauncher();
33
+ return launcher.isEnabled();
34
+ }
35
+ export async function autostart(subcommand) {
36
+ switch (subcommand) {
37
+ case "--enable":
38
+ case "enable":
39
+ await enableAutostart();
40
+ console.log("Auto-start enabled. petdex-cc will launch on login.");
41
+ break;
42
+ case "--disable":
43
+ case "disable":
44
+ await disableAutostart();
45
+ console.log("Auto-start disabled.");
46
+ break;
47
+ default: {
48
+ const enabled = await autostartStatus();
49
+ console.log(`Auto-start: ${enabled ? "enabled" : "disabled"}`);
50
+ break;
51
+ }
52
+ }
53
+ }
54
+ //# sourceMappingURL=autostart.js.map