๐ค Contributing to Scriptable iOS Widgets โ
We love your input! We want to make contributing to Scriptable iOS Widgets as easy and transparent as possible, whether it's:
- Reporting a bug
- Discussing the current state of the code
- Submitting a fix
- Proposing new features
- Becoming a maintainer
๐ Getting Started โ
Ways to Contribute โ
- ๐ Report bugs - Found something broken? Let us know!
- ๐ก Suggest features - Have an idea for a new widget or improvement?
- ๐ Improve documentation - Help make our docs clearer and more helpful
- ๐ง Submit code - Fix bugs or add new features
- ๐จ Share designs - Contribute themes, layouts, or UI improvements
- ๐งช Test widgets - Help test new releases and report issues
Before You Start โ
- Check existing issues - Someone might already be working on it
- Read the documentation - Understand how widgets work
- Test locally - Make sure your changes work on your device
- Follow our guidelines - Keep code clean and well-documented
๐ Development Process โ
We use GitHub Flow, so all code changes happen through pull requests:
- Fork the repository
- Create a feature branch from
main
- Make your changes
- Test thoroughly
- Submit a pull request
Pull Request Process โ
- Update documentation for any new features
- Add tests if applicable
- Ensure code follows our style guidelines
- Update the README if needed
- One feature/fix per PR - keep changes focused
๐ Bug Reports โ
Great bug reports tend to have:
- A quick summary and/or background
- Steps to reproduce - be specific!
- What you expected would happen
- What actually happens
- Screenshots if applicable
- Device info (iOS version, device model)
- Widget configuration (remove sensitive data)
Bug Report Template โ
markdown
**Bug Description**
A clear description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. See error
**Expected Behavior**
What you expected to happen.
**Screenshots**
If applicable, add screenshots.
**Device Info:**
- Device: [e.g. iPhone 12]
- OS: [e.g. iOS 15.0]
- Scriptable Version: [e.g. 1.7.0]
- Widget: [e.g. Weather Widget v2.0]
**Additional Context**
Any other context about the problem.
โจ Feature Requests โ
We love new ideas! When suggesting features:
- Explain the problem you're trying to solve
- Describe your solution in detail
- Consider alternatives you've thought about
- Provide examples or mockups if helpful
Feature Request Template โ
markdown
**Is your feature request related to a problem?**
A clear description of what the problem is.
**Describe the solution you'd like**
A clear description of what you want to happen.
**Describe alternatives you've considered**
Other solutions you've thought about.
**Additional context**
Screenshots, mockups, or examples.
๐ป Code Contributions โ
Setting Up Development Environment โ
- Fork and clone the repository
- Install Scriptable on your iOS device
- Set up test data (API keys, etc.)
- Create a development branch
Code Style Guidelines โ
JavaScript Standards โ
- Use ES6+ features where appropriate
- Consistent indentation (2 spaces)
- Meaningful variable names
- Comment complex logic
- Error handling for API calls
Widget-Specific Guidelines โ
javascript
// Good: Clear configuration section
const CONFIG = {
apiKey: "your_api_key_here",
refreshInterval: 30,
theme: "dark"
};
// Good: Error handling
try {
const data = await fetchWeatherData();
displayWeather(data);
} catch (error) {
displayError("Unable to fetch weather data");
}
// Good: Meaningful function names
function createWeatherWidget(data) {
// Implementation
}
Documentation Standards โ
- Clear setup instructions
- Configuration examples
- Troubleshooting section
- Screenshots or examples
- API requirements
Testing Your Changes โ
Before submitting:
- Test on actual device - Simulators don't show widgets
- Test different widget sizes if applicable
- Test error conditions (no internet, invalid API keys)
- Verify configuration options work as expected
- Check performance - avoid memory leaks or excessive API calls
๐ Documentation Contributions โ
Areas That Need Help โ
- Widget setup guides - Step-by-step instructions
- Troubleshooting - Common issues and solutions
- Configuration examples - Sample setups and customizations
- Best practices - Tips for optimal widget usage
- Translations - Help make docs accessible globally
Documentation Style Guide โ
- Be clear and concise
- Use step-by-step instructions
- Include code examples
- Add screenshots when helpful
- Test instructions yourself
๐จ Design Contributions โ
UI/UX Improvements โ
- Color schemes and themes
- Layout optimizations
- Accessibility improvements
- Icon and emoji suggestions
- Visual design enhancements
Design Guidelines โ
- iOS-native look and feel
- Respect system themes (dark/light mode)
- Accessibility compliance
- Performance optimization
- Consistency across widgets
๐ Code Review Process โ
What We Look For โ
- Functionality - Does it work as intended?
- Code quality - Is it readable and maintainable?
- Performance - Is it efficient and fast?
- Documentation - Are changes properly documented?
- Testing - Has it been thoroughly tested?
Review Timeline โ
- Initial response: Within 48 hours
- Full review: Within 1 week
- Feedback incorporation: Ongoing discussion
- Merge decision: After all concerns addressed
๐ท๏ธ Release Process โ
Versioning โ
We use semantic versioning:
- MAJOR - Breaking changes
- MINOR - New features, backwards compatible
- PATCH - Bug fixes, backwards compatible
Release Schedule โ
- Bug fixes - Released as needed
- Minor features - Monthly releases
- Major updates - Quarterly releases
๐๏ธ Recognition โ
Contributors โ
All contributors are recognized in:
- README.md - Contributors section
- Release notes - Feature/fix attribution
- Documentation - Author credits where appropriate
Maintainers โ
Active contributors may be invited to become maintainers with:
- Commit access to the repository
- Review privileges for pull requests
- Release responsibilities
- Community leadership roles
๐ Getting Help โ
Questions? โ
- GitHub Discussions - General questions and ideas
- GitHub Issues - Bug reports and feature requests
- Code reviews - Feedback on specific contributions
Contact โ
- Repository: Scriptable-IOSWidgets
- Maintainer: @rushhiii
๐ License โ
By contributing, you agree that your contributions will be licensed under the MIT License.
๐ Thank You! โ
Your contributions make this project better for everyone. Whether you're fixing a typo or adding a major feature, every contribution is valued and appreciated!
Ready to contribute? Check out our open issues or start a discussion about your ideas!