Getting started
Fork the repository
Fork the SlipStream GUI repository on GitHub by clicking the “Fork” button on the repository page.
Clone your fork
Clone your forked repository to your local machine:Replace
YOUR_USERNAME with your GitHub username.Development workflow
Making changes
- Make your changes to the codebase
-
Test your changes thoroughly:
-
Ensure code quality:
- Follow existing code style
- Test on both macOS and Windows if possible
- Check that the app builds successfully
Testing checklist
Before submitting your changes, ensure:- App starts without errors
- VPN start/stop functionality works
- System proxy configuration works (if modified)
- No console errors in development mode
- App builds successfully for target platform(s)
- Changes work on both macOS and Windows (if applicable)
Building for testing
Test the built application:Code style
Follow these guidelines to maintain consistent code:JavaScript style
- Indentation: Use 2 spaces (not tabs)
- Semicolons: Use semicolons at the end of statements
- Quotes: Use single quotes for strings (except in JSON)
- Comments: Comment complex logic and non-obvious code
- Functions: Keep functions focused and small
- Naming: Use descriptive variable and function names
Example
HTML/CSS style
- Use semantic HTML elements
- Keep CSS organized and commented
- Follow existing styling patterns
- Use consistent naming conventions for classes
Submitting changes
Commit your changes
Commit your changes with a descriptive message:Use conventional commit prefixes:
Add:for new featuresFix:for bug fixesUpdate:for improvements to existing featuresDocs:for documentation changesRefactor:for code refactoringTest:for adding tests
Create a pull request
- Go to the original repository
- Click “Pull requests” → “New pull request”
- Click “compare across forks”
- Select your fork and branch
- Fill in the pull request template:
- Clear title describing the change
- Description of what changed and why
- Screenshots if UI changed
- Testing steps
- Submit the pull request
Pull request guidelines
Good pull request title examples
- ✅ “Add DNS checker with parallel testing”
- ✅ “Fix system proxy not clearing on Windows”
- ✅ “Update UI to show connection latency”
- ✅ “Docs: Add troubleshooting section for Linux”
Pull request description
Include in your PR description:- What changed: Brief summary of changes
- Why: Reason for the change
- How to test: Steps to verify the changes
- Screenshots: If UI changed (before/after)
- Breaking changes: If any, list them clearly
Example pull request
Reporting issues
When reporting bugs or issues:Required information
- OS version: macOS 13.5, Windows 11, Ubuntu 22.04, etc.
- App version: Check in the app’s About section
- Description: Clear description of the issue
- Steps to reproduce: Numbered steps to reproduce the issue
- Expected behavior: What should happen
- Actual behavior: What actually happens
- Logs: Relevant error messages from the logs panel
- Screenshots: If applicable
Example bug report
Feature requests
When requesting new features:Include
- Use case: Explain why you need this feature
- Proposed solution: Describe how it should work
- Alternatives: Other ways to achieve the same goal
- Additional context: Any relevant information
- Backward compatibility: Consider existing users
Example feature request
Code review process
After submitting a pull request:- Automated checks: Wait for CI/CD checks to pass
- Maintainer review: A maintainer will review your changes
- Feedback: Address any requested changes
- Approval: Once approved, your PR will be merged
Responding to feedback
- Be open to suggestions and constructive criticism
- Make requested changes promptly
- Ask questions if feedback is unclear
- Keep discussions professional and respectful
Testing
Ensure your changes are thoroughly tested:Manual testing
- macOS
- Windows
- Linux
- Test on macOS (Intel and Apple Silicon if possible)
- Verify system proxy configuration
- Test VPN start/stop
- Check for permission issues
Test coverage areas
- VPN connection (start/stop)
- System proxy configuration
- DNS resolver configuration
- HTTP proxy server
- SOCKS5 connection
- Settings persistence
- UI responsiveness
- Error handling
- Log output
Community guidelines
Be respectful
- Treat everyone with respect and kindness
- Welcome newcomers and help them get started
- Assume good intentions
- Keep discussions professional
Be collaborative
- Share knowledge and help others
- Provide constructive feedback
- Acknowledge contributions
- Work together towards common goals
Be patient
- Maintainers review contributions in their free time
- Not all features will be accepted
- Be understanding of different perspectives
- Take time to explain your reasoning
Getting help
If you need help:- Check existing issues: Someone may have already asked
- Read the documentation: Most questions are answered in docs
- Ask in discussions: Open a GitHub discussion
- Be specific: Provide context and details
Recognition
Contributors are recognized:- In the project README
- In release notes
- Through GitHub’s contributor graph
- With our sincere gratitude!
Thank you for contributing to SlipStream GUI! Your efforts help make this tool better for everyone.