Thank you for your interest in contributing to pvetui! This document provides guidelines for contributing to the project.
- Fork the repository
- Clone your fork:
git clone https://github.com/yourusername/pvetui.git - Create a feature branch from
develop:git checkout origin/develop -b feature/your-feature-name - Make your changes
- Test your changes
- Commit your changes:
git commit -m "Add your feature" - Push to your fork:
git push origin feature/your-feature-name - Create a Pull Request targeting
develop
developis the integration branch for ongoing work and the required base branch for pull requests.mastertracks the latest stable release and should not be used as the base branch for normal feature or fix PRs.
- Go 1.20 or later (1.24+ recommended)
- Access to a Proxmox VE cluster for testing
- golangci-lint for code quality checks
# Clone the repository
git clone https://github.com/devnullvoid/pvetui.git
cd pvetui
# Build the application
go build -o pvetui ./cmd/pvetui
# Run with your config
./pvetui --config ./configs/config.ymlgo test ./...# Install golangci-lint if not already installed
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
# Run linting
golangci-lint run --timeout=5m# Format code
go fmt ./...
# Fix imports
goimports -local github.com/devnullvoid/pvetui -w .- Follow Go conventions and best practices
- Use
gofmtandgoimportsfor formatting - Write clear, descriptive commit messages
- Add tests for new functionality
- Update documentation as needed
- Follow the existing project structure and patterns
pvetui/
├── cmd/pvetui/ # Application entrypoint
├── internal/ # Internal application code
│ ├── adapters/ # External service adapters
│ ├── cache/ # Caching implementation
│ ├── config/ # Configuration handling
│ ├── logger/ # Logging utilities
│ ├── ssh/ # SSH client implementation
│ ├── ui/ # User interface components
│ └── vnc/ # VNC integration
├── pkg/api/ # Proxmox API client
├── configs/ # Configuration examples
└── assets/ # Static assets (images, etc.)
Use conventional commits format:
type(scope): description
[optional body]
[optional footer]
Types: feat, fix, docs, style, refactor, test, chore
Examples:
feat(ui): add VM power management controlsfix(api): handle connection timeout errorsdocs(readme): update installation instructions
When reporting issues, please include:
- Go version (
go version) - Operating system and version
- Proxmox VE version
- Steps to reproduce the issue
- Expected vs actual behavior
- Relevant logs or error messages
- Configuration file (with sensitive data removed)
**Environment:**
- OS: [e.g., Ubuntu 22.04, Windows 11, macOS 14]
- Go version: [e.g., go1.24.2]
- Proxmox VE version: [e.g., 8.1]
**Description:**
A clear description of the issue.
**Steps to Reproduce:**
1. Step one
2. Step two
3. Step three
**Expected Behavior:**
What you expected to happen.
**Actual Behavior:**
What actually happened.
**Logs/Error Messages:**
[paste relevant logs here]
**Additional Context:**
Any other relevant information.
Feature requests are welcome! Please:
- Check existing issues and discussions first
- Describe the use case and benefits clearly
- Consider implementation complexity
- Be open to discussion and feedback
- Provide mockups or examples if applicable
**Feature Description:**
A clear description of the feature you'd like to see.
**Use Case:**
Describe the problem this feature would solve.
**Proposed Solution:**
How you envision this feature working.
**Alternatives Considered:**
Other approaches you've considered.
**Additional Context:**
Screenshots, mockups, or examples.
- Create an issue to discuss the feature first
- Follow the existing architecture patterns
- Add appropriate tests
- Update documentation
- Ensure CI passes
- Use the existing tview-based component system
- Follow the established navigation patterns
- Ensure keyboard accessibility
- Test on different terminal sizes
- Use the existing API client patterns
- Implement proper error handling
- Add appropriate caching where beneficial
- Follow the repository pattern for data access
- Write unit tests for business logic
- Test error conditions
- Verify cross-platform compatibility
- Test with different Proxmox configurations
- Ensure your code follows the style guidelines
- Update documentation as needed
- Add or update tests as appropriate
- Ensure all CI checks pass
- Open the pull request against
develop(notmaster) - Request review from maintainers
- Address feedback promptly
**Description:**
Brief description of changes.
**Type of Change:**
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
**Testing:**
- [ ] Unit tests pass
- [ ] Manual testing completed
- [ ] Cross-platform testing (if applicable)
**Checklist:**
- [ ] Code follows style guidelines
- [ ] Self-review completed
- [ ] Documentation updated
- [ ] Tests added/updated
- [ ] CI checks pass
- [ ] Pull request targets `develop`
- Be respectful and inclusive
- Help others learn and grow
- Share knowledge and best practices
- Provide constructive feedback
By contributing, you agree that your contributions will be licensed under the MIT License.
Feel free to open an issue for questions or reach out to the maintainers.
Thank you for contributing to pvetui! 🚀