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
31 changes: 31 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
## 描述
请在此填写 PR 的简要描述

## 关联的问题
关联的 GitHub issue(如果有):#

## 类型
- [ ] 🐛 Bug 修复
- [ ] ✨ 新功能
- [ ] 📝 文档更新
- [ ] 🔧 配置/构建改进
- [ ] ♻️ 代码重构
- [ ] 📦 依赖更新

## 改动清单
- [ ] 代码已通过本地测试
- [ ] 已更新相关文档
- [ ] 已更新 CHANGELOG.md
- [ ] 版本号已更新(如适用)
- [ ] 无新增 console 错误或警告

## 测试方法
请描述如何测试此 PR:
1.
2.

## 截图(如适用)
如果有 UI 改动,请上传相关截图

## 额外说明
其他需要说明的信息...
128 changes: 128 additions & 0 deletions BUILD.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
# 构建和发行指南

## 📦 打包成 EXE

### 快速构建

```bash
cd config
npm run build
```

### 构建选项

| 命令 | 说明 |
|------|------|
| `npm run build` | 构建 x64 版本 (64位) |
| `npm run build:all` | 构建 x64 和 x86 版本 (64位和32位) |
| `npm run build:publish` | 构建并发布到发行源 |

### 输出位置

打包完成后,安装程序位置:
```
dist/release/Keyboard\ Typer\ Setup\ 1.2.0.exe
```

## 🔧 构建要求

- Node.js >= 14.0
- npm >= 6.0
- 足够的磁盘空间 (至少 500MB)

## 📋 构建配置

构建配置位置:`config/package.json` - `build` 字段

### 关键配置项

```json
{
"build": {
"appId": "com.keyboard.typer",
"productName": "Keyboard Typer",
"win": {
"target": ["nsis"],
"icon": "../assets/icons/icon.ico"
},
"nsis": {
"oneClick": false,
"allowToChangeInstallationDirectory": true,
"perMachine": false
}
}
}
```

## 🚀 发行流程

1. **更新版本号**
```bash
# 在 config/package.json 中更新 version 字段
```

2. **更新改动日志**
```bash
# 编辑 README.md 的更新日志部分
```

3. **创建分支**
```bash
git checkout -b release/v1.2.0
```

4. **提交修改**
```bash
git add .
git commit -m "chore(release): version 1.2.0"
```

5. **标签和推送**
```bash
git tag -a v1.2.0 -m "Release version 1.2.0"
git push origin release/v1.2.0
git push origin v1.2.0
```

6. **创建 GitHub Release**
- 在 GitHub 上创建新的 Release
- 上传生成的 .exe 文件到 Release

## 💡 常见问题

### Q: 构建失败,提示缺少 electron-builder?
A: 运行 `npm install electron-builder --save-dev`

### Q: 如何自定义安装程序名称?
A: 修改 `config/package.json` 中的 `productName` 字段

### Q: 如何签署 EXE?
A: 在 `config/package.json` 的 `win` 配置中添加:
```json
"certificateFile": "path/to/cert.pfx",
"certificatePassword": "password",
"signingHashAlgorithms": ["sha256"],
"sign": "./customSign.js"
```

## 📝 版本管理

当前版本:**v1.2.0**

版本格式:`major.minor.patch`
- **major**: 大功能更新
- **minor**: 新功能/改进
- **patch**: 快速修复

## 📌 检查清单

发行前请确保:

- [ ] 代码完全测试
- [ ] 版本号已更新
- [ ] 更新日志已编写
- [ ] 所有依赖已更新
- [ ] 本地构建成功
- [ ] EXE 文件运行正常
- [ ] 分支已合并到 master

48 changes: 48 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# 更新日志

所有重要的项目更改都会在此文件中记录。

## [1.2.0] - 2026-05-06

### ✨ 新功能
- 添加完整的构建和发行指南
- 优化 npm 构建脚本,支持多架构打包
- 支持一键生成 EXE 安装程序

### 🔧 改进
- 更新 electron-builder 配置以支持发行流程
- 改进 NSIS 安装程序配置
- 添加构建文档和发行清单

### 📝 文档
- 新增 BUILD.md 构建指南
- 补充发行流程说明

## [1.1.0] - 2026-05-06

### ✨ 新功能
- 完美支持中英文/特殊字符输入
- 自带 GUI 界面,可配置延时、随机抖动、重复次数
- 可随时停止,自带倒计时切换窗口
- 模拟真人打字节奏

### 🔧 改进
- 集成 Flask 后端与 Electron 前端
- 提供一键启动器(launcher.py)
- 支持系统环境检查和自动修复

### 🐛 修复
- 修复了多个兼容性问题

## 版本控制说明

遵循 [Semantic Versioning](https://semver.org/lang/zh-CN/) 版本控制方案:

- **主版本号 (Major)**:不向下兼容的 API 修改
- **次版本号 (Minor)**:新增功能,向下兼容
- **修订号 (Patch)**:bug 修复,向下兼容

### 标签格式

标签遵循 `v[MAJOR].[MINOR].[PATCH]` 格式,例如 `v1.2.0`

7 changes: 5 additions & 2 deletions config/package.json
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
{
"name": "keyboard-typer",
"version": "1.1.0",
"version": "1.2.0",
"description": "Electron + Python tactical keyboard typer",
"main": "../src/backend/main.js",
"author": "",
"license": "MIT",
"scripts": {
"start": "electron .",
"dev": "electron . --dev",
"build": "electron-builder --win nsis --x64"
"build": "electron-builder --win nsis --x64",
"build:all": "electron-builder --win nsis --ia32 --x64",
"build:publish": "electron-builder --win nsis --x64 --publish always",
"dist": "electron-builder"
},
"build": {
"appId": "com.keyboard.typer",
Expand Down