First off, thank you for considering contributing to MediaForge! It's people like you that make MediaForge a great tool for the Android community.
- Reporting Bugs: Create an issue with a clear description, steps to reproduce, and device info.
- Suggesting Enhancements: Open an issue to discuss new features or improvements before writing code.
- Code Contributions: Submit Pull Requests (PRs) to fix bugs, add features, or improve documentation.
- Fork the repository on GitHub.
- Clone your fork locally.
- Create a feature branch (
git checkout -b feat/your-feature-name). - Commit your changes following our commit message guidelines.
- Push to your fork (
git push origin feat/your-feature-name). - Open a Pull Request against the
mainbranch.
We follow the Conventional Commits specification to maintain a clean and readable git history. This allows us to automatically generate changelogs and version bumps.
<type>(<optional scope>): <description>
[optional body]
[optional footer(s)]
feat: A new feature for the user (e.g.,feat: add support for WebP conversion)fix: A bug fix for the user (e.g.,fix: resolve crash on Android 11 when picking images)docs: Documentation changes only (e.g.,docs: update README with new screenshots)style: Changes that do not affect the meaning of the code (white-space, formatting, missing semi-colons, etc)refactor: A code change that neither fixes a bug nor adds a feature (e.g.,refactor(ui): extract preview card to separate component)perf: A code change that improves performancetest: Adding missing tests or correcting existing testsbuild: Changes that affect the build system or external dependencies (Gradle, dependencies)ci: Changes to our CI configuration files and scripts (GitHub Actions)chore: Other changes that don't modifysrcor test files (e.g., updating .gitignore)
Good Commits:
feat(compression): implement manual quality sliderfix: handle null uri when returning from backgroundchore: update agp to version 8.2.0
Bad Commits:
fixed a bug(Too vague, no type)wip(Do not push work-in-progress to main, squash before merging)Update MainActivity.kt(Does not explain why or what)
- We use Kotlin for all logic and Jetpack Compose for UI.
- Ensure your code follows standard Kotlin conventions.
- Keep composable functions small, reusable, and stateless where possible.
- Test your changes on both an emulator and a physical device before submitting a PR.
Thank you for your contributions! 🚀