Files
Pake/CONTRIBUTING.md
2025-08-28 19:35:31 +08:00

92 lines
3.1 KiB
Markdown

## How to contribute to Pake
**Welcome to create [pull requests](https://github.com/tw93/Pake/compare/) for bugfix, new component, doc, example, suggestion and anything.**
## Branch Management
```mermaid
graph LR
b_dev(dev) --> b_main(main);
contributions([Develop / Pull requests]) -.-> b_dev;
```
- `dev` branch
- `dev` is the developing branch.
- It's **RECOMMENDED** to commit feature PR to `dev`.
- `main` branch
- `main` is the release branch, we will make tag and publish version on this branch.
- If it is a document modification, it can be submitted to this branch.
## Development Setup
### Prerequisites
- Node.js ≥22.0.0 (recommended LTS, older versions ≥16.0.0 may work)
- Rust ≥1.89.0 (recommended stable, older versions ≥1.78.0 may work)
- Platform-specific build tools:
- **macOS**: Xcode Command Line Tools (`xcode-select --install`)
- **Windows**: Visual Studio Build Tools with MSVC
- **Linux**: `build-essential`, `libwebkit2gtk`, system dependencies
### Installation
```bash
# Clone the repository
git clone https://github.com/tw93/Pake.git
cd Pake
# Install dependencies
pnpm install
# Start development
pnpm run dev
```
### Testing
```bash
# Run all tests (unit + integration + builder)
pnpm test
# Build CLI for testing
pnpm run cli:build
```
## Continuous Integration
The project uses streamlined GitHub Actions workflows:
- **Quality & Testing**: Automatic code quality checks and comprehensive testing on all platforms
- **Claude AI Integration**: Automated code review and interactive assistance
- **Release Management**: Coordinated releases with app building and Docker publishing
## Troubleshooting
### macOS 26 Beta Compilation Issues
If you're running macOS 26 Beta and encounter compilation errors related to `mac-notification-sys` or system frameworks (errors about `CoreFoundation`, `_Builtin_float` modules), create a `src-tauri/.cargo/config.toml` file with:
```toml
[env]
# Fix for macOS 26 Beta compatibility issues
# Forces use of compatible SDK when building on macOS 26 Beta
MACOSX_DEPLOYMENT_TARGET = "15.5"
SDKROOT = "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.5.sdk"
```
This file is already in `.gitignore` and should not be committed to the repository.
**Root Cause**: macOS 26 Beta uses newer system frameworks that aren't yet supported by the current Xcode SDK (15.5). This configuration forces the build to use the compatible SDK version.
### Common Build Issues
- **Rust compilation errors**: Run `cargo clean` in `src-tauri/` directory
- **Node dependency issues**: Delete `node_modules` and run `pnpm install`
- **Permission errors on macOS**: Run `sudo xcode-select --reset`
See the [Advanced Usage Guide](docs/advanced-usage.md) for project structure and customization techniques.
## More
It is a good habit to create a feature request issue to discuss whether the feature is necessary before you implement it. However, it's unnecessary to create an issue to claim that you found a typo or improved the readability of documentation, just create a pull request.