Changelog
View SourceAll notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
0.5.0 - 2026-02-23
Changed
- Condensed
usage-rules.mdby removing first-time setup, auto-detection, and detailed configuration sections that aren't needed for day-to-day LLM usage
0.4.0 - 2026-02-23
Fixed
- Include
:jasonas a runtime dependency instead of dev/test only, fixing compilation warnings in host projects - Pass
--no-compiletomix dialyzerto avoid race conditions with parallel analysis stages competing over_build/dev - Mark tests using
File.cd!asasync: falseto prevent intermittent compilation failures from global working directory changes
Changed
- Updated
usage-rules.mdto instruct LLMs not to truncatemix qualityoutput
0.3.0 - 2026-02-03
Added
- Test options pass-through: Pass extra arguments to
mix testormix coveralls:- Via CLI using
--separator:mix quality --quick -- --only integration - Via config file:
test: [args: ["--only", "integration"]] - CLI args override config file args (no merge)
- Supports any test flags:
--only,--include,--exclude,--seed, etc.
- Via CLI using
0.2.0 - 2026-01-09
Added
mix quality.initnow automatically configures ExCoveralls inmix.exswhen coverage is selected:- Adds
test_coverage: [tool: ExCoveralls]to project configuration - Adds
preferred_cli_envsettings for all coveralls commands - Smart detection prevents duplicate configuration
- Properly indents to match existing project style
- Adds
0.1.0 - 2026-01-09
Added
- Initial release of ExQuality (formerly Quality)
- Three-phase execution pipeline:
- Phase 1: Auto-fix (format)
- Phase 2: Compilation (dev + test in parallel)
- Phase 3: Parallel analysis with streaming output
- Quality stages:
- Format: Auto-fixes code formatting with
mix format - Compile: Compiles dev + test environments in parallel with warnings as errors
- Credo: Static analysis with
--strictmode (configurable) - Dialyzer: Type checking with graceful PLT handling
- Doctor: Documentation coverage checking
- Gettext: Translation completeness validation
- Test: Test suite with optional coverage via excoveralls
- Format: Auto-fixes code formatting with
- Quick mode (
--quick):- Skips dialyzer (slow type checking)
- Skips coverage enforcement (tests run, % not checked)
- Perfect for rapid iteration during development
- Auto-detection system:
- Automatically enables stages based on installed dependencies
- No configuration needed for standard setups
- Configuration system:
- 4-tier precedence: Defaults → Auto-detection →
.quality.exs→ CLI flags - Project-level customization via
.quality.exs - Per-stage enable/disable controls
- CLI flags for runtime overrides
- 4-tier precedence: Defaults → Auto-detection →
- Streaming output:
- Results display as each stage completes
- No interleaving (serialized via
Quality.Printer) - Fast stages provide immediate feedback
- Actionable feedback:
- Full tool output preserved in failure details
- File:line references for easy navigation
- Works for both humans and LLM coding assistants
- CLI options:
--quick- Fast mode for iterative development--skip-dialyzer- Skip Dialyzer type checking--skip-credo- Skip Credo static analysis--skip-doctor- Skip Doctor documentation checks--skip-gettext- Skip Gettext translation checks--verbose- Show full output even on success
- Documentation:
- Comprehensive README with workflow examples
usage-rules.mdfor LLM integration- Example
.quality.exsconfiguration file
- Coverage threshold:
- Single source of truth (reads from coveralls config)
- Respects
coveralls.jsonormix.exssettings - No duplicate configuration needed
Technical Details
- Zero runtime dependencies
- Optional dev dependencies: credo, dialyxir, doctor, excoveralls, gettext
- Parallel execution using Elixir Tasks
- Agent-based output serialization (ExQuality.Printer)
- Collectable protocol for silent output capture (ExQuality.OutputCollector)
- Tool detection via dependency scanning (ExQuality.Tools)
- Deep-merge configuration system (ExQuality.Config)
Philosophy
ExQuality is designed for rapid, iterative development with confidence:
- Fast feedback loop with
--quickmode - Comprehensive verification with full mode
- Actionable output with file:line references
- Zero configuration required (works out of the box)
- Progressive enhancement (add tools as needed)