First off, thank you for considering contributing to Warp Chat Archiver! 🎉
Following these guidelines helps to communicate that you respect the time of the developers managing and developing this open source project. In return, they should reciprocate that respect in addressing your issue, assessing changes, and helping you finalize your pull requests.
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.
Warp Chat Archiver is an open source project and we love to receive contributions from our community — you! There are many ways to contribute, from writing tutorials or blog posts, improving the documentation, submitting bug reports and feature requests or writing code which can be incorporated into the main project itself.
- 🐛 Bug Reports: Report bugs using GitHub issues
- ✨ Feature Requests: Suggest new features or improvements
- 📖 Documentation: Improve README, add examples, write tutorials
- 🧪 Testing: Add test cases, improve test coverage
- 💻 Code: Fix bugs, implement new features
- 🎨 Design: UI/UX improvements, icons, themes
- 🌍 Localization: Translate the application to other languages
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/runlvl/warp-chat-archiver.git cd warp-chat-archiver -
Set up the development environment:
# Create a virtual environment (recommended) python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # Install development dependencies pip install -r requirements-dev.txt
-
Create a branch for your work:
git checkout -b feature/your-feature-name # or git checkout -b bugfix/issue-number -
Test that everything works:
python warp_archiver_gui.py python -m pytest tests/
- Make your changes in your feature branch
- Add or update tests as needed
- Ensure all tests pass:
python -m pytest tests/ -v
- Format your code (we use Black):
black . isort .
- Lint your code:
flake8 . - Commit your changes:
git add . git commit -m "Add awesome feature"
- Push to your fork:
git push origin feature/your-feature-name
- Create a Pull Request on GitHub
- Run the full test suite and ensure all tests pass
- Format your code with Black and sort imports with isort
- Update documentation if needed
- Add tests for any new functionality
- Update CHANGELOG.md if applicable
When creating a pull request, please include:
## Description
Brief description of what this PR does
## 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 added tests that prove my fix is effective or that my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] I have tested this change manually
## Screenshots (if applicable)
Add screenshots to help explain your changes
## Checklist
- [ ] My code follows the project's style guidelines
- [ ] 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 warningsWe follow PEP 8 with some modifications:
- Line length: 88 characters (Black default)
- Indentation: 4 spaces
- Import sorting: Use isort
- String quotes: Prefer double quotes
# Standard library imports
import os
import sys
from pathlib import Path
# Third-party imports
import tkinter as tk
from tkinter import ttk
# Local application imports
from database_manager import DatabaseManager
from export_manager import ExportManager- Use docstrings for all modules, classes, and functions
- Follow Google docstring format
- Include type hints where beneficial
def export_conversations(self, conversations: List[Dict],
output_path: str, format: str = "json") -> bool:
"""Export conversations to specified format.
Args:
conversations: List of conversation dictionaries
output_path: Path where to save the export file
format: Export format (json, csv, html, markdown)
Returns:
True if export was successful, False otherwise
Raises:
ExportError: If the export format is not supported
"""- Write tests for new functionality
- Aim for good test coverage
- Use descriptive test names
- Group related tests in classes
class TestExportManager:
def test_export_to_json_creates_valid_file(self):
"""Test that JSON export creates a valid JSON file."""
# Test implementation
pass
def test_export_to_json_handles_empty_conversations(self):
"""Test JSON export with empty conversation list."""
# Test implementation
passWhen filing a bug report, please include:
- System information: OS, Python version, GUI toolkit version
- Steps to reproduce: Clear steps to reproduce the issue
- Expected behavior: What you expected to happen
- Actual behavior: What actually happened
- Screenshots: If applicable
- Logs: Any relevant error messages or log output
Use this template:
**System Information:**
- OS: [e.g. Ubuntu 22.04, Windows 11, macOS 13]
- Python Version: [e.g. 3.11.2]
- Warp Chat Archiver Version: [e.g. 1.0.0]
**Bug Description:**
A clear and concise description of what the bug is.
**To Reproduce:**
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected Behavior:**
A clear description of what you expected to happen.
**Screenshots:**
If applicable, add screenshots to help explain your problem.
**Additional Context:**
Add any other context about the problem here.For feature requests, please include:
- Use case: Why this feature would be useful
- Description: What the feature should do
- Alternatives: Other ways to achieve the same goal
- Implementation ideas: If you have thoughts on implementation
We use Semantic Versioning:
- MAJOR: Incompatible API changes
- MINOR: New functionality in a backwards compatible manner
- PATCH: Backwards compatible bug fixes
- All tests pass
- Documentation is updated
- Version number is bumped in
version.py - CHANGELOG.md is updated
- Git tag is created
- GitHub release is created
- GitHub Discussions: For questions and general discussion
- GitHub Issues: For bug reports and feature requests
- Wiki: For documentation and tutorials
Contributors will be recognized in:
- README.md contributors section
- Release notes for significant contributions
- GitHub contributor statistics
Don't hesitate to ask! Create an issue or start a discussion if you have any questions about contributing.
Thank you for contributing to Warp Chat Archiver! 🚀