First off, thank you for considering contributing to xpose! It's people like you who make the open-source world such an amazing place.
If you find a bug, please create a GitHub issue. Include:
- A clear description of the problem.
- Steps to reproduce.
- Your OS and Rust version.
We welcome ideas for new features! Please open an issue to discuss your proposal before starting implementation.
- Fork the repo.
- Create your feature branch (
git checkout -b feature/AmazingFeature). - Commit your changes (
git commit -m 'Add some AmazingFeature'). - Push to the branch (
git push origin feature/AmazingFeature). - Open a Pull Request.
CRITICAL: All development, testing, and building must be performed inside the container environment (Podman/Docker) to ensure platform parity and zero-defect deployments.
We use ./run-in-container.sh as the primary entry point for all quality checks. See docs/CONTAINERS.md for detailed technical info on our caching architecture.
- Linting:
./run-in-container.sh lint(Format & Clippy). - Testing:
./run-in-container.sh test(Workspace tests). - Verify All:
./run-in-container.sh all(Runs both).
- Pre-commit: A Git hook is installed to automatically run
lintbefore every commit. - CI Parity: The script is used directly in GitHub Actions with
NO_BUILD=trueto ensure that local and CI results are identical. - Caching: The system uses persistent volumes and
sccachefor near-instant incremental builds. Useexport TARGET_DIR=./targetif you want to share artifacts with the host (Linux only).
- Always use the
./run-in-container.shtool before claiming a task is done. - Follow the "Protocol-First" approach documented in
.ai-context-os/PROJECT_OS.md. - Ensure all tests pass 100% before requesting a review.
By contributing, you agree that your contributions will be licensed under the project's MIT License.