Skip to content

Latest commit

Β 

History

History
388 lines (285 loc) Β· 9.25 KB

File metadata and controls

388 lines (285 loc) Β· 9.25 KB

Contributing to Qoder Reset Tool

Thank you for your interest in contributing to Qoder Reset Tool! We welcome contributions from the community and are pleased to have you join us.

πŸ“‹ Table of Contents

🀝 Code of Conduct

This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to the project maintainers.

Our Standards

  • Be respectful: Treat everyone with respect and kindness
  • Be inclusive: Welcome newcomers and help them get started
  • Be collaborative: Work together towards common goals
  • Be constructive: Provide helpful feedback and suggestions

πŸš€ Getting Started

Prerequisites

  • Python 3.7 or higher
  • Git
  • Basic knowledge of PyQt5 and Python development
  • Familiarity with privacy and security concepts

First Contribution

  1. Fork the repository on GitHub
  2. Clone your fork locally:
    git clone https://github.com/yourusername/Qoder-Free.git
    cd Qoder-Free
  3. Create a branch for your contribution:
    git checkout -b feature/your-feature-name

πŸ› οΈ Development Setup

1. Environment Setup

# Create virtual environment
python -m venv venv

# Activate virtual environment
# On Windows:
venv\Scripts\activate
# On macOS/Linux:
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

# Install development dependencies (optional)
pip install pytest pytest-qt black flake8 mypy

2. Running the Application

# Run the main application
python qoder_reset_gui.py

# Run with debug mode (if implemented)
python qoder_reset_gui.py --debug

3. Project Structure

Qoder-Free/
β”œβ”€β”€ qoder_reset_gui.py      # Main application file
β”œβ”€β”€ requirements.txt        # Production dependencies
β”œβ”€β”€ requirements-dev.txt    # Development dependencies (if created)
β”œβ”€β”€ tests/                  # Test files (if created)
β”œβ”€β”€ docs/                   # Documentation (if created)
β”œβ”€β”€ .github/                # GitHub workflows and templates
β”œβ”€β”€ LICENSE                 # MIT License
β”œβ”€β”€ README.md               # Project documentation
β”œβ”€β”€ CHANGELOG.md            # Version history
β”œβ”€β”€ CONTRIBUTING.md         # This file
└── .gitignore             # Git ignore rules

🎯 How to Contribute

Types of Contributions

We welcome several types of contributions:

πŸ› Bug Reports

  • Use the GitHub issue tracker
  • Include detailed steps to reproduce
  • Provide system information (OS, Python version, etc.)
  • Include error messages and logs

✨ Feature Requests

  • Check existing issues first
  • Clearly describe the feature and its benefits
  • Consider implementation complexity
  • Discuss with maintainers before starting work

πŸ”§ Code Contributions

  • Bug fixes
  • New features
  • Performance improvements
  • Code refactoring
  • Documentation improvements

🌍 Translations

  • Add new language support
  • Improve existing translations
  • Update translation files

πŸ“š Documentation

  • Improve README
  • Add code comments
  • Create tutorials
  • Update API documentation

Issue Guidelines

When creating an issue, please:

  1. Search existing issues first
  2. Use clear, descriptive titles
  3. Provide detailed descriptions
  4. Include relevant labels
  5. Add screenshots if applicable

Feature Request Template

**Feature Description**
A clear description of the feature you'd like to see.

**Use Case**
Explain why this feature would be useful.

**Proposed Implementation**
If you have ideas about how to implement this feature.

**Additional Context**
Any other context or screenshots about the feature request.

Bug Report Template

**Bug Description**
A clear description of what the bug is.

**Steps to Reproduce**
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected Behavior**
What you expected to happen.

**Actual Behavior**
What actually happened.

**Environment**
- OS: [e.g. Windows 10, macOS 12.0, Ubuntu 20.04]
- Python Version: [e.g. 3.9.7]
- PyQt5 Version: [e.g. 5.15.7]
- Application Version: [e.g. 1.0.0]

**Additional Context**
Add any other context about the problem here.

πŸ”„ Pull Request Process

Before Submitting

  1. Test your changes thoroughly
  2. Update documentation if needed
  3. Add tests for new features
  4. Follow coding standards
  5. Update CHANGELOG.md

Pull Request Steps

  1. Create a feature branch:

    git checkout -b feature/amazing-feature
  2. Make your changes with clear, logical commits:

    git add .
    git commit -m "Add amazing feature: detailed description"
  3. Push to your fork:

    git push origin feature/amazing-feature
  4. Create a Pull Request on GitHub

Pull Request Template

## Description
Brief description of changes made.

## Type of Change
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Documentation update

## Testing
- [ ] I have tested these changes locally
- [ ] I have added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes

## Checklist
- [ ] My code follows the project's coding standards
- [ ] I have performed a self-review of my own code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have updated the CHANGELOG.md file

πŸ“ Coding Standards

Python Style Guide

We follow PEP 8 with some modifications:

  • Line Length: 88 characters (Black formatter default)
  • Indentation: 4 spaces
  • Quotes: Double quotes for strings
  • Imports: Organized and grouped

Code Formatting

We use Black for code formatting:

# Format all Python files
black .

# Check formatting without making changes
black --check .

Linting

We use flake8 for linting:

# Run linter
flake8 .

Type Hints

We encourage the use of type hints:

def reset_machine_id(self, preserve_data: bool = True) -> bool:
    """Reset machine ID with optional data preservation."""
    pass

πŸ§ͺ Testing Guidelines

Running Tests

# Run all tests
pytest

# Run with coverage
pytest --cov=qoder_reset_gui

# Run specific test file
pytest tests/test_gui.py

Writing Tests

  • Write tests for new features
  • Maintain or improve test coverage
  • Use descriptive test names
  • Include both positive and negative test cases

Test Structure

import pytest
from PyQt5.QtWidgets import QApplication
from qoder_reset_gui import QoderResetGUI

class TestQoderResetGUI:
    def test_initialization(self, qtbot):
        """Test GUI initialization."""
        app = QoderResetGUI()
        qtbot.addWidget(app)
        assert app.current_language == 'en'
    
    def test_language_change(self, qtbot):
        """Test language switching functionality."""
        app = QoderResetGUI()
        qtbot.addWidget(app)
        app.change_language('Vietnamese')
        assert app.current_language == 'vi'

πŸ“– Documentation

Code Documentation

  • Use clear, descriptive docstrings
  • Document complex algorithms
  • Include type hints
  • Add inline comments for tricky code

Documentation Style

def perform_reset(self, reset_type: str, preserve_chat: bool = True) -> bool:
    """
    Perform application reset operation.
    
    Args:
        reset_type: Type of reset to perform ('machine_id', 'telemetry', 'deep')
        preserve_chat: Whether to preserve chat history
        
    Returns:
        bool: True if reset was successful, False otherwise
        
    Raises:
        ResetError: If reset operation fails
        PermissionError: If insufficient permissions
    """
    pass

🌟 Community

Communication Channels

  • GitHub Issues: Bug reports and feature requests
  • GitHub Discussions: General questions and community discussions
  • Pull Requests: Code review and collaboration

Getting Help

  • Check existing documentation first
  • Search closed issues for similar problems
  • Ask questions in GitHub Discussions
  • Be patient and respectful when asking for help

Recognition

Contributors will be recognized in:

  • README.md contributors section
  • CHANGELOG.md for significant contributions
  • GitHub contributors page

πŸ“„ License

By contributing to Qoder Reset Tool, you agree that your contributions will be licensed under the MIT License.


Thank you for contributing to Qoder Reset Tool! Your efforts help make this project better for everyone. πŸŽ‰