Thank you for your interest in the WandEnhancer project! This document provides guidelines for contributing to the project.
- Development Environment Setup
- Bug Reports
- Feature Suggestions
- Creating a Pull Request
- Release Process
- Code Style
- Testing
- License
By participating in this project, you commit to maintaining respectful interactions with all community members. Any form of insults, harassment, or other unacceptable behavior will not be tolerated.
The project consists of the following main components:
- WandEnhancer - Main project containing the enhancement logic and user interface
- AsarSharp - Library for working with ASAR archives (used for unpacking and modifying WeMod files)
- Core - Core of the enhancement flow, including static and dynamic modifications
- Models - Data models used in the project
- View - User interface components
-
Clone the repository:
git clone https://github.com/k1tbyte/Wand-Enhancer.git -
Open the solution
Wand-Enhancer.slnin Visual Studio or JetBrains Rider. -
Install Node.js, pnpm and the .NET Framework 4.8 desktop targeting pack.
-
Run
build.cmd. It restores dependencies, builds the web panel and WPF app, and runs regression checks.
If you've found a bug, please create an Issue with a detailed description:
- WandEnhancer version
- WeMod version where the problem occurred
- Detailed steps to reproduce the bug
- Expected and actual behavior
- Screenshots or error logs (if available)
Suggestions for new features or improvements are welcome! Create an Issue describing your idea, explaining:
- What problem the proposed improvement solves
- How you envision implementing this feature
- Potential alternatives you've considered
-
Fork the repository.
-
Create a branch with a descriptive name:
git checkout -b feature/feature-nameor
git checkout -b fix/fix-name -
Make the necessary changes and commit with clear, descriptive messages.
-
Ensure your code follows the project's style.
-
Push the branch to your fork:
git push origin your-branch-name -
Create a Pull Request to the main repository.
-
In the Pull Request description, explain the changes made and why they're necessary.
- Update
WandEnhancer/Properties/AssemblyInfo.cs. - Add a new top section with the same version to
CHANGELOG.md. - Configure local hooks once:
git config core.hooksPath .githooks - Commit and push the version/changelog changes.
- Create and push a tag matching the same version exactly, for example:
git tag 1.0.8.0 git push origin 1.0.8.0 - GitHub Actions will validate the version, build the project, extract the matching changelog section, and publish a notes-only release automatically. Official releases do not attach compiled binaries.
-
Use C# naming conventions:
- PascalCase for class, method, and property names
- camelCase for local variables and parameters
- _camelCase for private fields
-
Add comments for complex code sections or patching methods
-
Follow SOLID and DRY principles
build.cmd runs web lint, type checks, production validation, Vitest, desktop state/interop checks and structural patch fixtures. It does not launch or patch Wand.
Run a focused web test from web-panel with pnpm exec vitest run <test-file>.
After building, validate against an original extracted Wand bundle directory:
.\scripts\test-patch-locators.ps1 -AssemblyPath .\WandEnhancer\bin\Release\WandEnhancer.exe -BundleDirectory .\.source\11.6.0-cleanThe locator harness applies patches only to temporary copies and runs node --check. Its default synthetic fixtures cover prettified and reminified identifiers separately. Do not commit proprietary extracted bundles.
Before a release, record the exact commit, Wand version/channel and enabled patches, then manually check:
- Fresh patch, upgrade from the previous Enhancer, failed patch followed by retry, and Restore.
- Repeated Wand startup and an overlay opened after a game starts later in the session.
- Wand update followed by automatic re-patching, including a failed re-patch.
- Remote desktop-to-panel and panel-to-desktop values, trainer switching, reconnect, mobile scrolling and exact slider input.
- Drawer search with a keyboard and mobile keyboard, Escape and focus restoration.
Use launcher.log and launcher.prev.log for startup diagnostics. Remove private paths and never share tokens or account storage.
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.
Thank you for contributing to the WandEnhancer project!