Contributing¶
Contributions to recipes, launcher, core, and docs are welcome. Keep changes small, testable, and free of secrets.
Development environment¶
git clone https://github.com/benjarogit/rezeptor.git
cd rezeptor
# Distro (for clone/tar.gz development): python-pyqt6, bats-core, shellcheck
pip install --user PyQt6-Fluent-Widgets # optional
# End users on Bazzite etc.: release AppImage or Flatpak — no host PyQt6
make validate
make test
REZEPTOR_DEV=1 ./setup.sh
Docs locally:
Quality gate¶
Before every PR:
make validate # shellcheck, syntax, compile, i18n-check, ruff, recipes-check, recipe-lint, manifest
make test # bats
make pytest # launcher unit tests (tests/*.py; needs pytest + PyQt6)
./scripts/recipe-lint.sh
./scripts/recipe-manifest.sh # after recipe file changes → commit
make validate → shellcheck covers core/, recipes/photoshop, recipes/premiere, recipes/wiso-steuer, launcher/, scripts/.
bash -n (syntax target) covers all recipes/*/*.sh; for other recipes also run ./scripts/recipe-lint.sh.
i18n-check compares key sets of launcher/locales/de.json and en.json (make i18n-check).
ruff lints launcher/ (make ruff; CI also runs astral-sh/ruff-action).
Optional: make dead-code (vulture, see requirements-dev.txt) — not part of validate; whitelist in scripts/vulture_whitelist.py.
Optional: make shell-dup-check — fails when recipe hooks redefine core/ function names; allowlist: scripts/shell-dup-allowlist.txt.
Recipes¶
./scripts/new-recipe.sh …or GUI New recipe…recipe.yml+ hooks per Developer overview- Test with a real source (Install → Validate → Repair → Launch → Uninstall)
- Update the manifest
- No app binaries in the repo (BYOS)
Ideas: Recipe Submission.
Docs & translations¶
- Mirror pages under
docs/de/anddocs/en/(same filenames) - UI strings: Translations
- Brand: BRAND — no purple themes
Git notes / PR workflow¶
main is protected (GitHub ruleset): no direct pushes — land changes via pull request. The CI job validate must be green before merge. Approving reviews are not required (solo maintainer is fine).
git switch -c topic/short-name
# … edit, locally: make validate && make test …
git push -u origin HEAD
gh pr create --fill # or with title/body
# wait for CI → merge (squash or merge commit)
- SemVer via the
VERSIONfile — bump only when a release is intended - No editor-agent co-author trailers in commits
- Do not commit secrets (tokens, private installers)
Releases¶
- Bump SemVer in
VERSIONand merge tomainvia PR → GitHub Actions builds AppImage, Flatpak, andtar.gzand publishes the release - Assets: https://github.com/benjarogit/rezeptor/releases