# 贡献指南

感谢你愿意为桌宠小鲸鱼出力。在动手之前，请先看一眼这个项目的范围。

## 这个项目的定位

**只维护，充当基底。**

以修 bug 和保持兼容为主。

## 欢迎的改动

- **bug 修复**
- **性能改进**
- **让小鲸鱼更好的小改动**（新表情、新小动作、新配色这类，先开 issue 说一声）
- **开发体验**（测试、检查脚本、构建）
- **文档、注释、翻译**
- **兼容性适配**（DSH 版本更新导致的失效）

## 不接受的改动

- **新宠物、新角色** —— 小鲸鱼就是这个项目本身
- **新玩法、新模式** —— 桌宠之外的东西
- **架构重构**

这类改动非常欢迎你在自己的 fork 里做。做好之后开一个 issue 贴上链接，我会在
README 的「社区 fork」里挂出来，让需要的人能找到。

## 提 PR 的几条约定

1. **一个 PR 一件事**。bug 修复和重构请分开提，方便我分别判断
2. **超过 300 行改动，请先开 issue 讨论**
3. **PR 正文写清楚**：解决什么问题、怎么验证的
4. 涉及第三方角色或素材的改动，请写明来源与非商业性质，别把原作美术 / 音频放进仓库
5. 提交前跑一遍：

   ```sh
   pnpm verify
   ```

## 工程检查

- `pnpm test` 先重建 `lib/`，再运行冒烟、交互、快照解析和构建守卫测试，避免测到旧产物。
- `pnpm verify` 依次执行类型检查、构建与测试、npm 包消费验收。CI 在 Windows / Linux 和 Node 22.19 / 24 上使用同一命令。
- `pnpm verify:package` 验收当前 `lib/` 的分发包：离线打包、安装到临时消费方、解析公开入口，并用包内 client 重跑交互回归。单独使用前先运行 `pnpm test`。
- `npm pack` 的 `prepack` 自动运行完整门禁；内部验收打包使用 `--ignore-scripts`，避免递归触发。
- `lib/` 仍随 Git 仓库分发。提交源码时一起提交重建后的产物；安装 Git 版本不会自动构建。
- 临时消费方与项目位于同一盘，结束后自动清理，不修改正在运行的 DSH profile。
