# Contributing to spotatui
Thanks for your interest in spotatui! ๐ We welcome all kinds of contributions, not just code.
## Ways to Contribute
### ๐ Report Bugs
Found something broken? [Open an issue](https://github.com/LargeModGames/spotatui/issues/new) with:
- What you expected vs what happened
- Steps to reproduce
- Your OS and spotatui version
### ๐ก Suggest Features
Have an idea? Start a [Discussion](https://github.com/LargeModGames/spotatui/discussions) or open an issue. We love hearing what would make spotatui better for you.
### ๐ Improve Documentation
- Fix typos or unclear instructions
- Add examples or clarify setup steps
- Translate docs (we'd love to support more languages!)
The wiki is included as a submodule in `spotatui.wiki/`. To contribute:
```bash
git clone --recurse-submodules https://github.com/LargeModGames/spotatui.git
# Make your changes in spotatui.wiki/
# Then commit and open a PR
```
### ๐จ Create Themes
Love customization? Add a new theme preset! Check out `src/user_config/theme.rs` for examples.
### ๐งช Test on Your Setup
- Try pre-releases and report issues
- Test on unusual setups (BSD, WSL, specific distros)
- Verify audio works with different backends
### โญ Spread the Word
- Star the repo
- Share spotatui with music lovers
- Write about your experience
---
## Code Contributions
### Ground Rules
- Be kind and follow our [Code of Conduct](CODE_OF_CONDUCT.md)
- Open an issue first for new features or larger refactors
- Keep PRs focused and scoped for easier review
### Getting Set Up
1. Install a recent stable Rust toolchain (`rustup` recommended)
2. Install platform dependencies from [Development](README.md#development):
- OpenSSL
- `xorg-dev` (Linux; clipboard support)
- PipeWire dev libraries (Linux; audio visualization)
- `portaudio` via Homebrew (macOS)
3. Clone your fork and create a topic branch from `main`
Run locally:
```bash
cargo run
```
Slim build (no audio/streaming):
```bash
cargo run --no-default-features --features telemetry
```
### Before Opening a PR
Run these checks (same as CI):
```bash
cargo fmt --all
cargo clippy --no-default-features --features telemetry -- -D warnings
cargo test --no-default-features --features telemetry
```
### PR Tips
- Add/adjust tests when changing behavior
- Update `README.md` and `CHANGELOG.md` for user-facing changes
- Include screenshots for UI changes
- Keep commits logical; squashing welcome but not required
---
## Recognition
We use [all-contributors](https://allcontributors.org/) to recognize everyone who helpsโcode or not! After your contribution is merged, the maintainer will add you to the contributors list.
## Questions?
Start a [Discussion](https://github.com/LargeModGames/spotatui/discussions) or ping us in an issue. We're happy to help!