deezer-linux/CONTRIBUTING.md

145 lines
3.5 KiB
Markdown

# Contributing to Deezer Linux
Thank you for considering contributing to the unofficial Deezer Linux port! This document provides guidelines for contributing to the project.
## Code of Conduct
By participating in this project, you agree to maintain a respectful and inclusive environment for everyone.
## How to Contribute
### Reporting Bugs
- Before creating an issue, please check if it hasn't been reported already
- Use the issue template if available
- Include detailed steps to reproduce the bug
- Specify your system information (OS, architecture, package type)
### Suggesting Enhancements
- Use clear and descriptive titles
- Provide a step-by-step description of the suggested enhancement
- Explain why this enhancement would be useful
### Pull Requests
1. Fork the repository
2. Create a new branch (`git checkout -b feature/your-feature`)
3. Make your changes
4. Build one or more packages
5. Commit your changes (`git commit -m 'feat: Add some feature'`)
6. Push to the branch (`git push origin feature/your-feature`)
7. Open a Pull Request
8. Provide information about the changes made and the packages built and manually tested
### Build Requirements
Ensure you have all required dependencies:
- Node.js (20 recommended)
- npm
- 7z
- make
- wget
## Development Setup
```sh
make install_deps
```
## Patching
### Creating a Patch
To create a patch, clone the repository and run:
```sh
make patch-new
```
Edit the files you want to change in the `app` directory.
> [!TIP]
> You do not need to generate a patch file to test your changes. Open the `app` folder after running `make patch-new` and make your changes. Then run `make build_{target}_{arch}` to try your changes.
When you are done, commit your changes, and then generate the patch:
```sh
make patch-gen
```
The patch will be saved in the `patches` directory. Make sure to rename the patch file to something meaningful and follow the naming convention. Add the patch to the echoed list in the `Makefile`.
> [!TIP]
> If possible, you may want to add a switch to allow the users to use the feature you added or not. Do not forget to [mention it](./README.md#usage).
You can now try your patch by building and executing the package:
```sh
make build_{target}_{arch}
```
### Applying a Patch
To manually apply a patch, run:
```sh
apply -p1 -dapp < patches/{name}.patch
```
> [!NOTE]
> Deezer does not provide all the information needed to implement some features.
>
> Deezer provides:
>
> - Player state (playing, paused)
> - Track metadata (title, artist, album, cover URL, duration, and more)
> - Shuffle and repeat state
>
> Deezer does not provide:
>
> - Track position
## Updating
### Updating the Source Executable
_This section is automated via GitHub Actions, but can be done manually._
1. Update the source executable URL:
```sh
curl -Ls -o /dev/null -w %{url_effective} https://www.deezer.com/desktop/download\?platform\=win32\&architecture\=x86
```
2. Update the source executable SHA256:
```sh
curl -Ls https://www.deezer.com/desktop/download\?platform\=win32\&architecture\=x86 | sha256sum
```
### Updating the Electron Version
_This section is not automated via GitHub Actions._
To get the Electron version used, run:
```sh
strings ./source/Deezer.exe | grep '^Chrome/[0-9.]* Electron/[0-9.]*'
```
## Legal Notes
Remember that this is an unofficial port. Any contribution must:
- Respect Deezer's intellectual property
- Not modify core Deezer functionality
- Follow software distribution best practices
## Questions?
Open an issue for any questions not covered by this guide.
Thank you for contributing!