Contributing to Power Platform Tool Box
Thank you for your interest in contributing to Power Platform Tool Box! This guide will help you understand our contribution process and requirements.
Code of Conduct
We are committed to providing a welcoming and inspiring community for all. Please read and follow our Code of Conduct.
Our Standards
Examples of behavior that contributes to a positive environment:
- ✅ Demonstrating empathy and kindness toward others
- ✅ Being respectful of differing opinions and experiences
- ✅ Giving and gracefully accepting constructive feedback
- ✅ Accepting responsibility and learning from mistakes
- ✅ Focusing on what is best for the community
Examples of unacceptable behavior:
- ❌ Trolling, insulting, or derogatory comments
- ❌ Public or private harassment
- ❌ Publishing others' private information
- ❌ Other conduct inappropriate in a professional setting
Getting Started
Prerequisites
Before contributing, ensure you have:
- Node.js 18 or higher
- pnpm 10 or higher
- Git
- GitHub account
Setup Development Environment
- Fork the repository on GitHub
- Clone your fork:
git clone https://github.com/YOUR-USERNAME/desktop-app.git cd desktop-app - Install dependencies:
pnpm install - Create a branch (see naming conventions below)
- Make your changes
- Test thoroughly
How to Contribute
Reporting Bugs
Found a bug? Open an issue with:
- Clear, descriptive title
- Steps to reproduce
- Expected vs actual behavior
- Screenshots (if applicable)
- Environment details (OS, version)
Suggesting Features
Have an idea? Request a feature with:
- Clear description of the feature
- Use case and benefits
- Proposed implementation (optional)
Submitting Pull Requests
Important: All pull requests must target the dev branch, not main.
Pull Request Process
1. Create Your Branch
Create a branch from dev following our naming convention:
# Ensure you're on dev and up to date
git checkout dev
git pull origin dev
# Create your branch
git checkout -b <type>/<short-description>
Branch Naming Conventions:
- Name
feature/- Type
- prefix
- Description
New features
Example:
feature/add-connection-export
- Name
fix/- Type
- prefix
- Description
Bug fixes
Example:
fix/tool-loading-error
- Name
docs/- Type
- prefix
- Description
Documentation changes
Example:
docs/update-api-guide
- Name
refactor/- Type
- prefix
- Description
Code refactoring
Example:
refactor/tool-manager
- Name
chore/- Type
- prefix
- Description
Maintenance tasks
Example:
chore/update-dependencies
2. Make Your Changes
Write clean, maintainable code following our coding standards.
3. Test Your Changes
# Lint code
pnpm run lint
# Build
pnpm run build
# Create local package
pnpm run package
# Install and test the package
# (Use the generated installer in dist/)
4. Commit Your Changes
Follow Conventional Commits specification:
Format: <type>(<scope>): <subject>
Examples:
feat: add connection export functionality
feat(tools): add tool verification system
fix: resolve tool loading error on startup
fix(connections): handle invalid connection URLs
docs: update README with new API examples
docs(api): add missing type definitions
style: format code according to ESLint rules
refactor: restructure tool manager for better maintainability
refactor(auth): simplify authentication flow
test: add unit tests for settings manager
chore: update dependencies to latest versions
chore(build): update TypeScript configuration
Commit Types:
feat- New featuresfix- Bug fixesdocs- Documentation changesstyle- Code style changes (formatting)refactor- Code refactoring without changing functionalitytest- Test additions or updateschore- Maintenance tasks, dependency updatesperf- Performance improvementsci- CI/CD changes
5. Push to Your Fork
git push origin <your-branch-name>
6. Create Pull Request
- Go to your fork on GitHub
- Click "New Pull Request"
- Ensure base is
dev(notmain) - Fill out the PR template completely
PR Template Checklist:
- ✅ Use meaningful title:
[Type] Brief description- Example:
[Feature] Add connection export functionality
- Example:
- ✅ PR Types:
[Feature],[Fix],[Docs],[Refactor],[Chore],[Test] - ✅ Include description of what changed and why
- ✅ Reference related issues using
#issue-number - ✅ Test the change (compile and run)
- ✅ Run
pnpm run packageand test local install - ✅ For major changes: Get approval via discussion first
7. PR Review Checklist
Before requesting review, ensure:
- ✅ Meaningful title for the pull request
- ✅ Tested changes in your own code (compiled and ran)
- ✅ Followed contribution guidelines
- ✅ Mentioned bug/feature issue number
- ✅ Generated local install copy with
pnpm run package - ✅ Installed and tested local copy
- ✅ Major changes: Created discussion and got maintainer approval
Coding Standards
TypeScript Guidelines
- ✅ Enable strict mode
- ✅ Avoid using
anywhen possible - ✅ Define interfaces for complex objects
- ✅ Export types that may be used by tools
- ✅ Use meaningful variable and function names
- ✅ Keep functions small and focused
Code Style
- ✅ Use TypeScript for all new code
- ✅ Follow existing code style and conventions
- ✅ Add comments for complex logic
- ✅ Use async/await over callbacks
- ✅ Handle errors appropriately
File Organization
- Keep related code together
- Use clear, descriptive file names
- Follow existing project structure
- Separate concerns appropriately
Documentation
When adding new features, update:
- README.md - If it affects user-facing functionality
- docs/TOOLBOX_DEV.md - For ToolBox-related changes
- docs/ARCHITECTURE.md - For architectural changes
- Inline code comments - For complex logic
- Type definitions - Update
packages/types/and publish new version to npm
All documentation files are in the docs/ directory.
Testing
Currently establishing testing infrastructure. When adding features:
- Consider how it can be tested
- Manually test your changes
- Document test scenarios
- Test on multiple platforms when possible
Release Process
Understanding the release workflow:
Development Branch (dev)
PR → dev branch → Automated nightly pre-release
- All PRs target
dev - Merged PRs trigger nightly builds
- Version:
1.0.0-dev.YYYYMMDD - Used for testing and feedback
Production Branch (main)
dev branch → main branch → Automated stable release
- After testing on
dev, merge tomain - Triggers stable release build
- Version:
1.0.0 - Published to GitHub Releases
PR Requirements Summary
| Requirement | Details |
|---|---|
| Target Branch | dev (not main) |
| Branch Name |
|
| Commit Format | Conventional Commits: <type>(<scope>): <subject> |
| PR Title | [Type] Brief description |
| Testing |
|
| Documentation | Update relevant docs if needed |
| Major Changes | Require discussion and maintainer approval first |
Community
Getting Help
- GitHub Discussions: Ask questions
- Issues: Report problems
- Documentation: Read the docs
Stay Connected
- Star the repository to stay updated
- Watch for notifications on your PRs
- Join discussions to help others
- Share your tools with the community
Recognition
Contributors are recognized in:
- README.md contributors section
- Release notes for significant contributions
- Community highlights and showcases
We value all contributions, from code to documentation to community support!
Questions?
If you have questions, feel free to:
- Open an issue for discussion
- Ask in GitHub Discussions
- Reach out to maintainers
Thank you for contributing to Power Platform Tool Box! 🚀