一个简单、高效、易用的打飞机记录工具。
An easy-to-use masturbation management recording tool.
没有什么人活跃的QQ交流群:745297798
该群为作者私人群,仅供作者产出奇怪的开源作品使用
DickHelper v2 已从旧版 Web 应用重写为 Electron 桌面应用。使用更现代的技术栈,修复了旧版数据模型的 bug,体验更流畅。
- 数据迁移: v2 支持从旧版导出的 JSON 文件导入数据(自动识别旧格式并映射字段,按 UUID 去重)
DickHelper v2 has been completely rewritten as an Electron desktop app with a modern tech stack, fixed data model, and smoother experience.
- Data Migration: v2 supports importing JSON files exported from the legacy version (auto-detects old format, maps fields, deduplicates by UUID)
- 🔒 数据本地存储: SQLite 数据库,数据完全在本地,无需担心隐私泄露 | Local Storage: SQLite database, all data stored locally
- 📊 统计看板: 总次数、平均时长、周/月频率统计 + 发射日历热力图 | Statistics: Total count, avg duration, weekly/monthly frequency + heatmap calendar
- ⏱️ 计时器: 开始/暂停/继续/停止,精确记录每次时长 | Timer: Start/pause/resume/stop with precise duration tracking
- 📋 历史记录: 浏览、搜索、删除单条或清空全部 | History: Browse, delete individual records or clear all
- Node.js >= 18
- npm >= 9
# 克隆项目 | Clone the repository
git clone https://github.com/zzzdajb/DickHelper.git
# 进入项目目录 | Enter the project directory
cd DickHelper
# 安装依赖 | Install dependencies
npm install
# 启动开发模式(热重载) | Start dev mode (hot reload)
npm run devnpm run dev 会同时启动:
- Vite dev server(React 渲染进程热重载)
- Electron 主进程(自动打开桌面窗口)
GitHub Release 使用 vX.Y.Z tag,例如 v2.0.4。
发布前须先将 package.json 的 version 调整为不带 v 的版本号,例如 2.0.4。
Release workflow 会校验:
RELEASE_TAG必须形如v2.0.4package.json.version必须等于2.0.4
校验通过后,workflow 会打包 Windows / macOS / Linux 安装包,并上传自动更新所需的 latest.yml、latest-mac.yml、latest-linux.yml 等 metadata。
已安装 2.0.3 的客户端会在发现 2.0.4 metadata 后会自动提示更新。
应用启动时会自动检查更新。发现新版本后,会在应用内弹窗询问是否下载,不会静默下载。下载完成后,用户可以手动点击重启安装。
更新源默认使用 https://ghfast.top 镜像,适合 GitHub 访问不稳定的中国大陆环境;考虑到镜像源的SLA并不稳定,用户可在设置页当中自行切换到 GitHub 直连。
若当前更新源检查失败,应用将提示失败并建议切换源,不会自动回退。
测试自动更新的推荐流程见 自动更新测试指南。
| 层 | Layer | 技术 |
|---|---|---|
| GUI框架 | Desktop Shell | Electron 35 |
| UI 框架 | UI Framework | React 19.1 |
| 语言 | Language | TypeScript 5.7 (strict) |
| 组件库 | UI Library | Mantine 7 |
| 数据库 | Database | SQLite via sql.js (WASM) |
从旧版 Web 端迁移数据:
- 在旧版页面点击"导出数据",下载
masturbation_records.json - 在 DickHelper v2 中点击"导入数据",选择该文件
- v2 自动识别旧格式,将
startTime映射为EndTime,按 UUID 跳过重复记录 - 导入完成后显示结果:成功 / 跳过重复 / 拒绝无效
详细见 迁移文档
所有数据存储在本地 SQLite 数据库中,不会上传到任何服务器。未经您允许,我们不会收集您的任何信息。
All data is stored in a local SQLite database and is never uploaded to any server. We do not collect any of your information without your permission.
当您使用需要网络服务才能提供的功能时(开发中),我们需要您的数据才能继续为您提供相关服务,但是除非您显式同意,否则我们在默认的状态下不会上传您的任何数据。
GPL-3.0(GNU General Public License v3.0)