# Contribution Hello, thanks for taking time and helping out with the addon! Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Please sign the CLA before sending the PR: https://www.jetbrains.com/agreements/cla/. #### Local setup Open the `godot-editor-plugin/CMakeLists.txt` in Rider 2026.1+, select `rider-gdextension` target in the run configuration selector. There are some more fixes coming in 2026.2, which will allow working on gdscript and cpp files within the same workspace. #### Signing the binaries Plugin binaries need to be signed to comply with modern operating system security requirements. Unsigned dynamic libraries may fail to load or trigger security warnings: - **macOS**: Requires code signing (and often notarization) for `.dylib` files. Unsigned libraries may simply fail to load. - **Windows**: SmartScreen may block unsigned binaries, and corporate environments often enforce signed code only. - **Linux**: Generally allows unsigned `.so` files, but some sandboxed environments (Flatpak, Snap) impose restrictions. **How signing is implemented:** 1. **TeamCity Configuration**: [ijplatform_master_Net_Deploy_Plugins_Public_Godot](https://buildserver.labs.intellij.net/buildConfiguration/ijplatform_master_Net_Deploy_Plugins_Public_Godot) (internal JetBrains link) - Note: The automatic trigger on new tags is currently not working, so manual triggering is required. 2. **Release Process**: - First, use your GitHub Action to prepare a **pre-release** with a tag - Manually trigger the TeamCity configuration on the necessary branch/tag - The configuration will download assets, sign them, and upload them back (removing the pre-release flag) - The pre-release flag is required at the start; otherwise, the signing configuration will skip the release (protection against double signing) 3. **Signing existing releases**: - You can run signing on already existing old releases/tags - Mark them as pre-release first, then run the configuration on the necessary tag