This guide is for contributors who want to build the ProxyMe plugin from source.
-
Java Development Kit (JDK) 17 or later
java -version # Should show version 17 or higher -
Gradle 8.0+ (included via wrapper)
./gradlew --version
-
Node.js v18 or later
node --version npm --version
-
Git
git --version
- IntelliJ IDEA 2024.3+ or JetBrains Rider 2024.3+
- Gradle plugin enabled
- Kotlin plugin enabled
git clone https://github.com/native-apps/proxyme.git
cd proxyme# Build the plugin ZIP file
./gradlew buildPluginThe compiled plugin will be located at:
build/distributions/ProxyMe-2.1.0.zip
# Run tests and build
./gradlew test buildPlugin# Clean previous builds
./gradlew clean
# Build from scratch
./gradlew clean buildPlugin- Open IntelliJ IDEA or Rider
File → Open- Select the
ProxyMedirectory - Wait for Gradle to sync
# Launch a development instance of Rider with the plugin
./gradlew runIdeThis opens a sandboxed Rider instance with your plugin installed for testing.
# Run all tests
./gradlew test
# Run specific test
./gradlew test --tests "com.proxyme.rider.ProxyMeSettingsTest"
# Run with verbose output
./gradlew test --info# Check for compilation errors
./gradlew compileJava
# Run code inspections
./gradlew checkProxyMe/
├── src/
│ ├── main/
│ │ ├── java/com/proxyme/rider/ # Java source code
│ │ │ ├── actions/ # Menu actions
│ │ │ ├── services/ # Background services
│ │ │ ├── settings/ # Settings classes
│ │ │ ├── ui/ # UI components
│ │ │ └── *.java # Core classes
│ │ └── resources/
│ │ ├── META-INF/
│ │ │ └── plugin.xml # Plugin manifest
│ │ ├── proxy/ # Node.js proxy code
│ │ │ ├── proxy.js
│ │ │ └── package.json
│ │ └── templates/
│ │ └── presets/ # Default templates
│ └── test/
│ └── java/ # Test files
├── build.gradle.kts # Gradle build script
├── settings.gradle.kts # Gradle settings
├── gradle.properties # Gradle properties
└── README.md # Project overview
The proxy server requires Node.js packages:
cd "Node.js Proxy Cloud AI APIs"
npm installThe proxy requires these packages (defined in package.json):
express- Web server frameworkaxios- HTTP clientdotenv- Environment variable managementcors- CORS middleware
-
Build the plugin:
./gradlew buildPlugin
-
Open your regular Rider IDE (not the sandbox)
-
Install the built plugin:
File → Settings → Plugins → ⚙️ → Install Plugin from Disk -
Select:
build/distributions/ProxyMe-2.1.0.zip -
Restart Rider
./gradlew runIdeThis is safer for development - changes won't affect your main IDE.
- Edit files in
src/main/java/com/proxyme/rider/ - Build:
./gradlew compileJava
- Test in sandbox:
./gradlew runIde
UI components are in src/main/java/com/proxyme/rider/ui/:
ProxyMeSettingsPanel.java- Main settings panelModelConfigPanel.java- Model tableModelEditDialog.java- Model editor dialogLoadTemplateDialog.java- Template loaderSaveTemplateDialog.java- Template saver
After changes, rebuild and test:
./gradlew buildPlugin runIdeThe Node.js proxy is in src/main/resources/proxy/:
- Edit
proxy.jsor other proxy files - Test locally:
cd "Node.js Proxy Cloud AI APIs" node proxy.js
- Test with plugin:
./gradlew buildPlugin runIde
To add menu items, settings pages, or services, edit:
src/main/resources/META-INF/plugin.xml
After changes:
./gradlew buildPluginSolution:
# Clear Gradle cache
rm -rf ~/.gradle/caches/
# Re-sync
./gradlew --refresh-dependenciesSolution:
# Check Java version
java -version
# Set JAVA_HOME (macOS/Linux)
export JAVA_HOME=/path/to/jdk-17
# Set JAVA_HOME (Windows)
set JAVA_HOME=C:\path\to\jdk-17Solution:
# Clean and rebuild
./gradlew clean build --refresh-dependenciesCheck:
- Plugin is compatible with Rider version (2024.3+)
plugin.xmlis correctly formatted- Rebuild plugin:
./gradlew clean buildPlugin - Check Rider logs for errors
- Build plugin:
./gradlew buildPlugin - Install in Rider
- Test these features:
- Open ProxyMe settings (
Tools → ProxyMe) - Add a model
- Save settings
- Launch proxy
- Check status indicator
- Stop proxy
- Load a template
- Save a template
- Restart proxy
- Open ProxyMe settings (
# Run all tests
./gradlew test
# View test report
open build/reports/tests/test/index.html# Clean build with tests
./gradlew clean test buildPlugin
# Verify the ZIP file
ls -lh build/distributions/ProxyMe-*.zip# Extract and inspect
unzip -l build/distributions/ProxyMe-2.1.0.zip
# Check that it includes:
# - lib/ directory (JAR files)
# - proxy/ directory (Node.js code)
# - templates/ directory (presets)-
Format your code:
- Follow Java coding conventions
- Use 4-space indentation
- Add JavaDoc comments for public methods
-
Test your changes:
./gradlew test ./gradlew runIde # Manual testing
-
Update documentation:
- Update relevant
.mdfiles - Add comments to complex code
- Update
CHANGELOG.mdif needed
- Update relevant
-
Create a clean commit:
git add . git commit -m "feat: Add new model provider support"
-
Push and create PR:
git push origin feature-branch # Create PR on GitHub
Follow conventional commits:
feat: Add support for new AI provider
fix: Resolve crash when restarting proxy
docs: Update installation guide
style: Format code according to style guide
refactor: Simplify model configuration logic
test: Add tests for template service
chore: Update dependencies
- 📖 Documentation: docs/README.md
- 💬 Discussions: GitHub Discussions
- 🐛 Bug Reports: GitHub Issues
Happy coding! 🚀