# CONTRIBUTING

Thank you for your interest in contributing to Clash Verge Rev! This document provides guidelines and instructions to help you set up your development environment and start contributing.

## Development Setup

Before you start contributing to the project, you need to set up your development environment. Here are the steps you need to follow:

### Prerequisites

1. **Install Rust and Node.js**: Our project requires both Rust and Node.js. Please follow the instructions provided [here](https://tauri.app/v1/guides/getting-started/prerequisites) to install them on your system.

### Setup for Windows Users

If you're a Windows user, you may need to perform some additional steps:

- Make sure to add Rust and Node.js to your system's PATH. This is usually done during the installation process, but you can verify and manually add them if necessary.
- The gnu `patch` tool should be installed

### Install Node.js Packages

After installing Rust and Node.js, install the necessary Node.js packages:

```shell
pnpm i
```

### Download the Clash Binary

You have two options for downloading the clash binary:

- Automatically download it via the provided script:
  ```shell
  pnpm run check
  # Use '--force' to force update to the latest version
  # pnpm run check --force
  ```
- Manually download it from the [Clash Meta release](https://github.com/MetaCubeX/Clash.Meta/releases). After downloading, rename the binary according to the [Tauri configuration](https://tauri.app/v1/api/config#bundleconfig.externalbin).

### Run the Development Server

To run the development server, use the following command:

```shell
pnpm dev
# If an app instance already exists, use a different command
pnpm dev:diff
```

### Build the Project

If you want to build the project, use:

```shell
pnpm build
```

## Contributing Your Changes

Once you have made your changes:

1. Fork the repository.
2. Create a new branch for your feature or bug fix.
3. Commit your changes with clear and concise commit messages.
4. Push your branch to your fork and submit a pull request to our repository.

We appreciate your contributions and look forward to your active participation in our project!