Skip to content

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:

pip install -r requirements-docs.txt
mkdocs serve

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 validateshellcheck 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

  1. ./scripts/new-recipe.sh … or GUI New recipe…
  2. recipe.yml + hooks per Developer overview
  3. Test with a real source (Install → Validate → Repair → Launch → Uninstall)
  4. Update the manifest
  5. No app binaries in the repo (BYOS)

Ideas: Recipe Submission.

Docs & translations

  • Mirror pages under docs/de/ and docs/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 VERSION file — 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 VERSION and merge to main via PR → GitHub Actions builds AppImage, Flatpak, and tar.gz and publishes the release
  • Assets: https://github.com/benjarogit/rezeptor/releases

Next