Ctrl K
ComunidadGuías…

CONTRIBUTING.md

Rama dev · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Contributing to NoMercy MediaServer

Thank you for your interest in contributing to NoMercy MediaServer! This document outlines the process for contributing to this project.

## Branch Structure

| Branch | Purpose | CI |
|--------|---------|-----|
| `wip` | Work in progress, not ready | None |
| `dev` | Integration branch; push here to trigger a release | Full pipeline |
| `master` | Release mirror of `dev`, byte-identical after every release; never built directly | Automated |

**Maintainers**: Push to `dev` when ready to release, `wip` when saving work.

**External contributors**: Submit PRs to `dev`.

## Getting Started (External Contributors)

### 1. Fork the Repository

Click the "Fork" button on the [GitHub repository](https://github.com/NoMercy-Entertainment/nomercy-media-server) to create your own copy.

### 2. Clone Your Fork

```bash
git clone https://github.com/YOUR-USERNAME/NoMercyMediaServer.git
cd NoMercyMediaServer
```

### 3. Set Up Upstream Remote

```bash
git remote add upstream https://github.com/NoMercy-Entertainment/nomercy-media-server.git
```

### 4. Create a Feature Branch

Always create a new branch for your changes:

```bash
git checkout -b feat/your-feature-name
```

Use descriptive branch names:
- `feat/add-dark-mode` - for new features
- `fix/video-encoding-bug` - for bug fixes

## Development

### Prerequisites

- .NET 10.0 SDK

### Building

```bash
dotnet restore
dotnet build
```

### Running Tests

```bash
dotnet test
```

### Running the Server

```bash
dotnet run --project src/NoMercy.Service
```

## Commit Messages

Use Conventional Commits, `type(scope): description`.

Examples:
```
feat(encoder): add AV1 encoding support
fix(api): fix null reference in playlist endpoint
docs: update API documentation
```

## Submitting Changes

1. Push your branch to your fork
2. Open a Pull Request targeting the `dev` branch
3. Fill out the description with what changed and why
4. Address any review feedback

### Code Review

- Address any feedback from reviewers
- Push additional commits to your branch as needed
- Once approved, a maintainer will merge your PR

## What Happens After Merge

When your PR is merged to `dev`:

1. Automated tests run
2. Version is automatically incremented
3. `dev`'s tree is made byte-identical to `master` with a changelog commit
4. A new release is created with built executables, targeting `master`
5. `master` is never built directly; it exists only as the release mirror

Your contribution will appear in the release notes!

## Code Style

Please follow the existing code style in the project:

- Use explicit types (avoid `var`)
- Use PascalCase for public members
- Use camelCase with `_` prefix for private fields
- Use primary constructors where appropriate
- Keep methods focused and small

See [CLAUDE.md](CLAUDE.md) for detailed code style and tooling guidelines.

## Questions?

If you have questions or need help:

- Open a [Discussion](https://github.com/NoMercy-Entertainment/nomercy-media-server/discussions)
- Check existing [Issues](https://github.com/NoMercy-Entertainment/nomercy-media-server/issues)

## License and Contributor Agreement

By submitting a pull request or other contribution to this project, you
explicitly agree that:

1. Your contribution is licensed under the
   [NoMercy MediaServer License](LICENSE)
2. You assign all copyright in your contribution to
   NoMercy Entertainment
3. You have the legal right to make this assignment

This is required to ensure consistent licensing and long-term maintenance
of the project. If you do not agree with these terms, please do not submit
a contribution.