Thank you for your interest in contributing to RazorConsole! We welcome contributions from the community and appreciate your help in making this project better.
- For large PRs, refactors, or new features: Please create an issue first to discuss your proposed changes. This helps ensure your contribution aligns with the project's goals and prevents duplicate work.
- Join our Discord: For timely responses and real-time collaboration, join our Discord server. The maintainers and community are active there and can help guide your contributions.
When reporting bugs or requesting features:
- Search existing issues to avoid duplicates
- Provide a clear description of the problem or feature request
- Include reproduction steps for bugs
- Share your environment details (.NET version, OS, etc.)
- .NET 8.0 or 9.0 SDK
- Git LFS for handling large media files
# Install Git LFS if not already installed
git lfs install
# Clone the repository
git clone https://github.com/LittleLittleCloud/RazorConsole.git
cd RazorConsole
# Build the solution
dotnet build RazorConsole.sln
# Run tests
dotnet test RazorConsole.sln- Follow the rules encoded in
.editorconfig(four-space indentation, file-scoped namespaces, system usings first) - Prefer async/await with
ConfigureAwait(false)when awaiting inside library code - Keep public APIs nullable-enabled and document exceptions and edge cases
- Treat Spectre.Console renderables as immutable from outside rendering loops
- Format your code: Run
dotnet format RazorConsole.slnbefore opening a pull request - Run tests: Execute
dotnet test RazorConsole.slnlocally. CI requires a clean test run on Linux and Windows - Update tests: When touching focus or keyboard handling, add or update tests in
FocusManagerTestsorKeyboardEventManagerTests - Update documentation: Update the README when introducing user-facing features or significant architectural changes
- Create an issue first for large changes, refactors, or new features
- Fork the repository and create a branch from
main - Make your changes following the coding standards
- Write or update tests to cover your changes
- Run
dotnet formatto ensure formatting is correct - Run
dotnet testto ensure all tests pass - Submit a pull request with a clear description of the changes
- Keep PRs focused on a single feature or bug fix
- Write clear, descriptive commit messages
- Reference related issues in your PR description
- Be responsive to feedback and questions
- Add tests for new features and bug fixes
- Ensure all existing tests pass
- Tests should be placed in the
src/RazorConsole.Testsproject
- Update the README.md for user-facing changes
- Add or update XML documentation comments for public APIs
- Consider adding examples to the
examples/directory for new features - Design notes can be added to
design-doc/for architectural changes
Creating a GitHub release triggers .github/workflows/release.yml to build, test, pack, and publish platform bundles. Version numbers should follow semantic versioning.
- Discord: Join our server for quick questions and real-time help
- Issues: Create an issue on GitHub for bugs or feature requests
- Discussions: Use GitHub Discussions for general questions and ideas
Please be respectful and constructive in all interactions. We aim to maintain a welcoming and inclusive community.
Your contributions help make RazorConsole better for everyone. We appreciate your time and effort!