Releases: Kilo59/ruff-sync
v0.1.6
ruff-sync v0.1.6
🚀 Features
-
Configuration Validation (
--validate) (#160)
Validates your localruffconfiguration against upstream rules during synchronization. Automatically catches TOML syntax issues and yells at you if you're using deprecated Ruff rules. -
Strict Mode (
--strict) (#162)
Tired of warnings being ignored? When paired with--validateor--check,--strictturns validation warnings (like deprecated rules) into hard errors (exit code1). Perfect for failing the CI pipeline when things drift. 💥 -
Python Version Consistency Checks 🐍
Automatically cross-references[tool.ruff] target-versionwith[project] requires-pythonin yourpyproject.toml. Emits a warning if your linter target environment doesn't match the project's actual runtime constraints.
📖 Documentation
- Validation Overhaul via v0.1.6
Updatedconfiguration.mdandci-integration.mdto break down the new--validateand--strictflags, including the expected exit codes and how to drop them cleanly into your CI workflows.
Full Changelog: v0.1.5...v0.1.6
v0.1.5
ruff-sync 0.1.5
🚀 Features
- Interactive Configuration Inspector (Experimental): Added a new Terminal User Interface (TUI) to visualize your Ruff configuration. You can now easily inspect all of your settings and how your local configuration merges with upstream rules. See the Inspection Guide for details.
- CI Auto-Detection:
ruff-syncnow detects when it is running inside a Continuous Integration (CI) environment and automatically configures its output format for better integrations out of the box. Learn more in the CI Integration docs.
✨ Improvements
- Cleaner GitHub Actions Reports: When running in
--checkmode within GitHub Actions,ruff-syncnow meaningfully groups and deduplicates annotations, leading to significantly cleaner and more readable CI reports. Read about CI reporting. - Revamped Documentation: We've launched versioned documentation, making it easier to find guides, configuration details, and troubleshooting steps that match your installed version. Visit the new docs home.
🐞 Bug Fixes
- Documentation Links: Fixed several broken links across the website, ensuring a smoother browsing experience.
v0.1.4
🍱 v0.1.4 - Expanded GitLab & SARIF Support
🚀 Features
- GitLab CI Support: Added native support for GitLab's Code Quality report format via
--output-format gitlab, enabling sync results to appear directly in Merge Request widgets. - Improved SARIF Reporting: Hardened the SARIF (
--output-format sarif) output to provide better integration with security dashboards on both GitHub and GitLab. - CI Environment Validation:
ruff-syncnow detects if you're using an incompatible output format for your CI provider (e.g., using GitLab format in GitHub Actions) and issues a warning.
📖 Documentation
- Versioned Documentation: Added a version selector to the documentation site to toggle between
stableanddevdocumentation. - Visual Overhaul: Redesigned the documentation site with a new theme, improved layout, and clearer configuration guides.
🛠️ Reliability
- Synchronization Safety: Improved the config merging logic to strictly preserve all original
pyproject.tomlsettings during updates. - CI/CD Hardening: Refined the automated documentation deployment pipeline for more reliable version management.
v0.1.3
🚀 ruff-sync v0.1.3 Release Notes
This release brings significant enhancements to visual feedback in CI/CD pipelines, more granular control over configuration persistence, and a major overhaul of the project's documentation and developer experience.
🚀 Features
📡 GitHub Actions Integration & Structured Output
ruff-sync now natively integrates with GitHub Actions to provide inline file annotations for configuration drift. If your project's pyproject.toml is out of sync, you'll see the exact discrepancies directly on the Pull Request files tab.
- Added
--output-formatflag supportingtext,json, andgithub. - Automated inline annotations for
checkandpullcommand operations. - Implemented in PR #131 and #132.
💾 Explicit Configuration Persistence (--save)
To give you more control over when changes are written to your local files, we've introduced the --save flag.
- Commands now default to a "preview" mode in many scenarios unless
--saveis explicitly provided, preventing accidental overwrites. - Implemented in PR #129.
🧠 Bundled AI Agent Skill
ruff-sync now ships with a built-in "Agent Skill" a set of specialized instructions and scripts that AI coding assistants (like Antigravity or GitHub Copilot) can use to help you configure, troubleshoot, and operate the tool more effectively.
- Implemented in PR #122.
✨ Improvements
🎯 Centralized Configuration Resolution
We've refactored the internal configuration engine to use a single source of truth for all defaults. This includes the introduction of a MissingType sentinel, ensuring that pyproject.toml stays clean by only serializing settings that you've explicitly configured.
- Implemented in PR #129.
🚦 Refined Pre-commit Version Sync
Improved logic for detecting and reporting version drift between your local .pre-commit-config.yaml and the synchronized Ruff settings.
- Implemented in PR #118.
📖 Documentation
- URL Resolution Guide: A deep dive into how
ruff-syncfinds and resolves upstream configuration layers. (#127) - Contributing Guidelines: New comprehensive guide for developers looking to contribute to the project. (#120)
- Enhanced MkDocs: Reorganized documentation with better tabbed examples and a dedicated section for CI/CD integration. (#126)
Tip
Try running ruff-sync check --output-format github locally to see how the new diagnostic format looks!
v0.1.2
Release Notes: v0.1.2 🚀
This release marks the transition of ruff-sync to 4-Beta status, introducing significant performance gains, new configuration layers, and a robust pre-commit hook synchronization feature.
Summary
ruff-sync now handles parallel upstream fetching, includes a data science specialized configuration, and can automatically verify that your .pre-commit-config.yaml ruff hook version matches your local environment.
🚀 Features
- Parallel Fetching: Upstream configurations are now fetched and merged concurrently, significantly reducing execution time for complex multi-upstream setups. (#112)
- Pre-commit Synchronization: A new feature (and
--pre-commitflag) ensures that your local environment's Ruff version stays in sync with your pre-commit hooks. (#119) - Data Engineering & Science Layer: Added specialized configuration layers tailored for Data Science and Data Engineering workflows. Huge thanks to @AryaSumant9045 for this contribution! (#87, #114)
✨ Improvements
- Status Bump: Upgraded development status to 4-Beta in project metadata.
- Robust Check Prioritization: Refined the
checkcommand to prioritize Ruff configuration drift (Exit 1) over pre-commit hook drift (Exit 2), ensuring CI pipelines fail correctly on the most critical discrepancies first. - High-Contrast Diagrams: All Mermaid diagrams in the documentation have been updated with a high-contrast color palette, ensuring readability in both light and dark modes.
📖 Documentation
- Best Practices Guide: Added a dedicated documentation section on ruff-sync best practices. (#115)
- Usage Overhaul: Streamlined the "Usage" section with improved logic flow diagrams and clearer CLI examples. (#109)
🛠️ Maintenance
- Test Suite Enhancements: Expanded async test coverage to include complex merge scenarios and prioritization logic.
- Custom Hooks: Defined custom pre-commit hooks for the project itself to automate development workflows. (#106)
🏆 Contributors
A special shoutout to our latest contributor:
- @AryaSumant9045 for implementing the Data Science and Data Engineering configuration layers.
Tip
Use ruff-sync check --semantic in your CI to ignore non-functional formatting differences and focus only on rule discrepancies!
v0.1.0
🚀 Multiple Upstream Sources
You can now specify multiple upstream sources in your pyproject.toml or via the CLI. These layers are merged sequentially, allowing you to establish a base organization-wide standard and layer on team or project-specific overrides.
📖 New Troubleshooting Guide
We've added a comprehensive troubleshooting section to the documentation. This guide helps you diagnose sync issues and explains how to use the new verbose logging flags (-v for INFO, -vv for DEBUG) to inspect TOML merging and network operations.
✨ Stability & Refinements
- Improved configuration discovery logic for more reliable detection of
pyproject.tomlandruff.tomlin complex repositories. - Refined internal path resolution to better handle nested project structures.
- Updated the documentation theme for a more polished, Astral-inspired visual experience.
Full Changelog: v0.0.5...v0.1.0
v0.0.5
v0.0.5 Release Notes
This release brings significant improvements to configuration resolution, enhanced CI stability, and expanded curated configurations.
🚀 Features & Enhancements
- Refined Configuration Resolution: finalized the
--toargument naming and improved the logic for resolving local target files across various project structures. (#93) - Richer Type Safety: Normalized internal configuration resolution to use
httpx.URLfor more robust handling of upstream sources. (#95) - Directory Discovery: Added support for resolving configuration when only a directory/repository URL is provided, with intelligent fallback discovery for
pyproject.tomlandruff.toml. (#94) - Expanded Curated Configs: Added a new curated configuration for FastAPI projects. (#92) (Thanks @passionworkeer!)
🛠 CI & DX Improvements
- Robust CI Triggers: Re-engineered CI workflow conditions to ensure verification steps run consistently across main pushes and non-draft pull requests. (#95)
- Mypy Strict Mode: Fixed several typing issues to maintain full strict-mode compliance.
🪲 Bug Fixes
- Fixed edge cases in remote path resolution for nested repository structures. (#89)
Full Changelog: v0.0.4...v0.0.5
v0.0.4
Ruff Sync v0.0.4 - Zero-Config & More 🚀
Standardizing your Ruff configuration just got even easier! This release focuses on the developer experience with the new Zero-Config Bootstrap and a comprehensive Kitchen-Sink reference configuration.
🌟 What's New?
🆕 Zero-Config Bootstrap (--init)
No pyproject.toml? No problem! You can now initialize a fresh project with your organization's Ruff standards in a single command. The --init flag will automatically scaffold the appropriate configuration file (pyproject.toml or ruff.toml) based on your source of truth.
# Initialize a new project from your organization's standards
ruff-sync https://github.com/my-org/standards --init🍳 Curated "Kitchen-Sink" Configuration
We've added a curated, exhaustive Ruff configuration in the configs/kitchen-sink/ directory. This configuration:
- ✅ Enables every available Ruff rule.
- 🔗 Provides direct links to the official documentation for each rule group.
- 📋 Serves as the ultimate reference for teams wanting to push Ruff to its limits.
🛠 Fixes & Improvements
- Documentation: Corrected usage examples to point directly to the new kitchen-sink reference file (#88).
- Internal: Improved how curated examples are referenced in the CLI.
📈 Full Changelog
See the complete list of changes between v0.0.3 and v0.0.4:
v0.0.3...v0.0.4
Happy Linting! 🦊✨
If you find ruff-sync helpful, please consider starring the repo!
v0.0.4.dev1
Zero-Config Bootstrap & ruff.toml Support
This release introduces "Zero-Config" bootstrapping experience and first-class support for standalone ruff.toml files.
✨ Zero-Config Bootstrapping
You can now initialize a fresh project with your organization's standards in one command. The new --init flag scaffolds your configuration file (pyproject.toml or ruff.toml) automatically.
$ ruff-sync pull https://github.com/my-org/standards --init
✅ Created pyproject.toml with upstream settings!📄 Standalone ruff.toml Support
We've added intelligent file-type detection to fully support ruff.toml and .ruff.toml files as both sources and targets. ruff-sync now adapts seamlessly to projects that don't use pyproject.toml.
🔍 Smarter URL Handling
Copy-pasting permalinks directly from GitHub/GitLab? We’ve got you covered. ruff-sync now automatically handles:
- Fragments: Strips line numbers (e.g.,
#L123-L145) from copied links. - Query Parameters: Ignores version or tracking parameters to find the raw content.
💅 CLI & UX Polish
- Relative Path Reporting: Success messages now use relative paths (e.g.,
✅ Updated pyproject.toml) for better terminal readability. - Robustness: Refactored configuration fetching to be more resilient during initialization and error states.
Full Changelog: v0.0.3...v0.0.4.dev1
v0.0.3
🎉 What's New
This release brings support for Git repository URLs and configurable source paths, making ruff-sync much more flexible for monorepos and private configurations!
📥 Git & SSH Support (#78)
You can now pull Ruff configurations directly from Git repositories using git, ssh, or git+ssh URLs. This is especially useful for synchronizing with private repositories where external raw HTTPS URLs cannot be used for authentication.
# Pull via SSH
ruff-sync pull ssh://git@github.com/org/repo.git
# Pull via Git URL
ruff-sync pull git@gitlab.com:org/repo.gitruff-sync performs a shallow, blob-less clone (--depth 1 --filter=blob:none) to ensure the sync is fast and doesn't download unnecessary repository data.
🔀 Configurable Branch and Path (#77)
When working with monorepos or non-standard project structures, your pyproject.toml might not be at the repository root, or you might want to sync from a branch other than main. You can now configure this!
# Pull from a specific branch
ruff-sync pull https://github.com/org/repo --branch development
# Pull from a nested directory (looks for config/pyproject.toml)
ruff-sync pull https://github.com/org/repo --path configThese settings can also be defined directly in your pyproject.toml:
[tool.ruff-sync]
upstream = "https://github.com/org/repo"
branch = "development"
path = "config"🛠️ Other Improvements
- CI/CD Checks: Added pre-publish testing to verify the package installs safely before hitting PyPI (#78).
- Dogfooding Scripts: Added
gitclone_dogfood.shto exercise git-fetching locally alongside the HTTP scripts (#78).
Full Changelog: v0.0.2...v0.0.3