# Contributing to AppCloner Thanks for your interest. Ways to help: ## Report app compatibility Tried an app and it clones well (or badly)? Open an issue with the "App compatibility" template. That feeds the [compatibility table](docs/COMPATIBILITY.md). ## Add a "recipe" You can teach AppCloner how to isolate an app without recompiling: add a JSON recipe under `appcloner/assets/recipes/` (see `example.json`). Format: ```json { "recipes": [ { "key": "myapp", "name": "My App", "matches": ["myapp"], "extra_args": ["--user-data-dir={DIR}"], "env_redirect": ["APPDATA", "LOCALAPPDATA"], "reliability": "media", "note": "Explain the method." } ] } ``` `matches` are exe names without extension or path, lowercase. Users can also drop recipes in `data/recipes.json` (next to their data). ## Code 1. `pip install -r requirements.txt pytest ruff` 2. Run from source: `python -m appcloner` 3. Before a PR: `ruff check appcloner tests` and `pytest -q` must pass. 4. Keep it dependency-light; discuss any new heavy dependency first. ## Translations UI strings are Spanish keys mapped per language in `appcloner/assets/i18n/.json`. To add a language, create its JSON with the same keys and register it in `appcloner/core/i18n.py` (`LANGS`). ## Build the .exe `build.bat` (needs `pip install pyinstaller`). Output: `dist/AppCloner.exe`. ## License By contributing you agree your contribution is licensed under the project [LICENSE](LICENSE) (free to use, no resale; EazyHood remains the owner).