CONTRIBUTING.md
Rama main · réplica de lectura del repositorio original.
# Contributing to Lire
Thanks for helping. Lire gets better mostly through two things: release titles it misreads, and people running it on setups other than the author's.
## The most useful contribution: a misread release
Lire's value is its parser. If a release is rejected, matched to the wrong series, or given the wrong volumes, open a **Release title misread** issue with the exact title, what Lire did, and what it should have done. That is enough; a test case and a fix usually follow quickly.
If you want to fix it yourself:
1. Add the title as a case in `tests/test_parse.py` (expected volumes, or expected rejection code).
2. Run `pytest -q` and watch it fail.
3. Fix `app/parse.py` until the whole suite passes. Other fixtures must not regress.
## Development setup
```bash
python3 -m venv .venv && . .venv/bin/activate
pip install -r requirements.txt pytest
pytest -q
```
Running the app needs Prowlarr, qBittorrent and Kavita; copy `lire.env.example` to `lire.env` and point it at yours, then `docker compose up -d --build`.
## Ground rules
- **No build step.** The frontend is plain ES modules in `app/static`. Keep it that way.
- **Both languages.** Every interface string goes in `app/static/i18n.js` under `fr` and `en`; server messages go in `app/i18n.py`.
- **Design.** Read [`docs/DESIGN.md`](docs/DESIGN.md) before touching the UI: the shelf is the answer, one tap for the common case, honest states.
- **Security.** No new external origins without updating the CSP; no secrets in code, tests or fixtures (fixtures carry no real info hashes or download URLs).
- **Dependencies.** Pinned in `requirements.txt`; CI runs `pip-audit`.
- **Commits.** [Conventional Commits](https://www.conventionalcommits.org/) (`fix(parse): ...`, `feat(ui): ...`), small and focused.
## License of contributions
Lire is under the [PolyForm Noncommercial License 1.0.0](LICENSE). By opening a pull request you agree that your contribution is licensed under the same terms, and that the maintainer may also offer it under a separate commercial license.