Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed .DS_Store
Binary file not shown.
8 changes: 5 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,12 +26,14 @@ jobs:

- run: pnpm build

- name: Build Windows installer
run: pnpm exec electron-builder --win --publish never
- name: Build Windows portable artifacts
run: pnpm dist:win

- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: dist/*.exe
files: |
dist/*.zip
dist/*.exe
generate_release_notes: true
draft: true
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,14 @@
node_modules/
out/
dist/
output/
tmp/
.pnpm-store/
*.log
_raw_assets/
pet_assets/main_pixel_avatar/
pet_assets/paired_pixel_avatar/
docs/asset-pipeline.md
specs/deskpet-m2-assets.md
我/
CLAUDE.md
2 changes: 2 additions & 0 deletions ASSET_LICENSE.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

PawPal separates source code licensing from pet animation asset licensing.

DeskPet M0/M1 imports PawPal assets only as validation placeholders. These assets are not treated as DeskPet's final product identity.

## Source Code

The application source code is licensed under the MIT License. See `LICENSE`.
Expand Down
143 changes: 38 additions & 105 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,124 +1,57 @@
<p align="center">
<img src="docs/social-preview.png" alt="PawPal" width="800" />
</p>
# DeskPet M0/M1

<h1 align="center">PawPal</h1>
DeskPet 当前只完成 M0/M1:基于 PawPal `v0.1.3` 的 Windows 桌宠壳验证和安全清理。

<p align="center">
一只住在你桌面上的小狗,提醒你休息、喝水、保持专注。
</p>
本阶段保留:

<p align="center">
<img alt="Downloads" src="https://img.shields.io/github/downloads/zebangeth/PawPal/total?style=flat-square&label=downloads" />
<img alt="Electron" src="https://img.shields.io/badge/Electron-vite-47848f?style=flat-square&logo=electron&logoColor=white" />
<img alt="React" src="https://img.shields.io/badge/React-19-61dafb?style=flat-square&logo=react&logoColor=111111" />
<img alt="License" src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" />
</p>
- 透明、无边框、置顶宠物窗口
- 托盘菜单
- 设置窗口
- 休息提醒
- 喝水提醒
- 手动专注计时器
- 本地设置和统计
- Windows 绿色分发优先的 portable/zip 打包配置

PawPal 是一个桌面宠物应用,支持 macOS 和 Windows。一只透明、始终置顶的小狗会陪在你的屏幕上,在你久坐、忘记喝水或者分心刷社交媒体时,温柔地把你带回节奏里。
本阶段不做:

## 功能
- M2 自定义素材接入
- 完整 Phase 1
- 应用内 AI 生图
- 双端同步
- 自动专注/分心检测
- 读取前台应用、窗口标题、进程、截图、OCR、键鼠输入
- 默认开机自启、自动更新、提权安装、隐藏后台服务

- **休息提醒** — 定时提醒你站起来活动一下,小狗会跑过整个屏幕引起你的注意
- **喝水提醒** — 别忘了喝水
- **专注模式** — 检测你当前在用的 app,如果你在刷社交媒体,小狗会来提醒你回去工作
- **多种宠物外观** — 目前有线条小狗和金毛 puppy 两种风格
- **中文 / English** — 支持中英文切换
- **本地数据** — 所有设置和统计数据保存在本地,不联网
## 来源

## 安装
- 上游仓库: `https://github.com/zebangeth/PawPal`
- 导入 tag: `v0.1.3`
- 导入 commit: `7cb44da708f2488d9587140554c486173145907a`
- 源码许可证: MIT,见 [LICENSE](LICENSE)
- 素材授权: 独立风险,见 [ASSET_LICENSE.md](ASSET_LICENSE.md) 和 [docs/pawpal-source-audit.md](docs/pawpal-source-audit.md)

### 下载安装包(推荐)

从 [Releases](../../releases) 页面下载对应平台的安装包:

| 文件 | 适用设备 |
|------|---------|
| `PawPal-x.x.x-arm64.dmg` | macOS Apple Silicon (M1/M2/M3/M4) |
| `PawPal-x.x.x-x64.dmg` | macOS Intel |
| `PawPal.Setup.x.x.x.exe` | Windows (64-bit) |

> **macOS**:首次打开时可能提示"无法验证开发者",请在 系统设置 → 隐私与安全性 中允许打开。专注模式的分心检测需要授予 Accessibility 权限。
>
> **Windows**:分心检测功能暂不可用(目前仅支持 macOS),其他功能正常。

### 从源码运行
## 开发

```bash
git clone https://github.com/zebangeth/PawPal.git
cd PawPal
pnpm install
pnpm install --frozen-lockfile
pnpm dev
```

## 构建

```bash
pnpm build # 编译(含类型检查)
pnpm dist # 编译 + 打包 macOS 和 Windows
pnpm dist:mac # 仅打包 macOS
pnpm dist:win # 仅打包 Windows(需要 Wine 或在 Windows 上运行)
```

## 技术栈

- Electron + electron-vite
- React 19 + TypeScript
- electron-store(本地持久化)
- electron-builder(打包分发)

## 项目结构

```
src/main/ 主进程:窗口管理、托盘菜单、定时器、持久化、专注检测
src/preload/ IPC 桥接层
src/renderer/ React UI(宠物窗口 + 设置窗口)
src/shared/ 共享类型、默认配置、i18n、宠物外观定义
pet_assets/ 宠物动画素材(GIF)
```

## 开发路线

- [ ] 更多宠物外观
- [ ] 声音效果
- [ ] 开机自启
- [ ] 多显示器适配优化

## 许可

源代码基于 [MIT License](LICENSE)。宠物动画素材有独立的授权说明,详见 [ASSET_LICENSE.md](ASSET_LICENSE.md)。

---

<details>
<summary><b>English</b></summary>

**A tiny desktop dog that helps you pause before you burn out.**

PawPal is a desktop pet app for macOS and Windows. A transparent, always-on-top dog lives on your screen and gently reminds you to take breaks, drink water, and stay focused.

### Features

- **Break reminders** — timed nudges to get up and move; the dog runs across your screen to get your attention
- **Hydration reminders** — don't forget to drink water
- **Focus mode** — detects what app you're using; if you're on social media, the dog will nudge you back to work
- **Multiple pet styles** — line-drawing dog and golden retriever puppy
- **Chinese / English UI**
- **Local-only data** — settings and stats stay on your machine

### Install

Download the latest installer from [Releases](../../releases) (`.dmg` for macOS, `.exe` for Windows), or run from source:
## 检查

```bash
git clone https://github.com/zebangeth/PawPal.git
cd PawPal
pnpm install
pnpm dev
pnpm typecheck
pnpm build
pnpm dist:win
pnpm dist:win:installer
```

### License
`pnpm dist:win` 默认只产出 portable/zip。NSIS installer 需要显式运行 `pnpm dist:win:installer`,只能作为次选,不能作为绿色包默认推荐。

Source code under [MIT License](LICENSE). Pet animation assets have separate licensing; see [ASSET_LICENSE.md](ASSET_LICENSE.md).
## 文档

</details>
- [docs/privacy-and-safety.md](docs/privacy-and-safety.md)
- [docs/pawpal-source-audit.md](docs/pawpal-source-audit.md)
- [docs/dependency-audit.md](docs/dependency-audit.md)
- [specs/deskpet-phase1.md](specs/deskpet-phase1.md)
2 changes: 0 additions & 2 deletions build/entitlements.mac.plist
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,5 @@
<true/>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
<key>com.apple.security.automation.apple-events</key>
<true/>
</dict>
</plist>
Loading