DocsReferenceChangelog

Changelog

v0.5.0 — 2026-05

OAuth auth, PySpark reader, quell pr, --no-llm, GitHub Actions installer

  • quell auth login — OAuth 2.0 PKCE browser flow, stores credentials at ~/.quell/credentials.json (chmod 600). Single-session enforcement server-side.
  • quell auth logout / quell auth status — revoke token and check session state
  • QUELL_API_KEY env var — zero-config CI auth without browser
  • PySpark schema reader — AST-only StructType parsing, no pyspark import required at scan time. Generates NOT_NULL requirements for non-nullable columns and TYPE_CHECK requirements for all columns.
  • NOT_NULL and TYPE_CHECK ConstraintKinds — rule engine generates pytest.raises / assertSchemaEqual tests; auto-creates conftest.py with session-scoped SparkSession
  • quell pr <N> — fetches PR diff from GitHub API, runs spec readers on changed Python files, posts formatted comment with score emoji and gap table
  • --no-llm flag on quell check — disables all LLM calls, forces rule-based only. Prints "Your code never left your machine." after --fix.
  • --format json on quell check — machine-readable output for CI scripts
  • Method column in quell check output — shows [rule-based, no network] or [llm] per requirement
  • quell install --hook — writes pre-commit config to user's project
  • quell install --pr — writes GitHub Actions workflow YAML for PR comments
  • Zero-config default — quell check works with no pyproject.toml (defaults to rule-based, no LLM)
  • pip install quelltest[pyspark] — optional extra for running generated PySpark tests

v0.4.4 — 2026-05

Rule engine improvements — 75% score on real-world projects

  • must_raise tests now use non-existent paths for Path parameters, correctly triggering FileNotFoundError and similar exceptions
  • sig_inspector: added stubs for Callable[..., T] (lambda: None), logging.LogRecord, datetime.datetime, datetime.date, re.Pattern
  • Violation injector: replaces ALL non-None return statements in the target function (not just the first), fixing doesnt_catch_violation for functions with early-return paths
  • doesnt_catch_violation count dropped from 6 → 0 on the reference project
  • unknown_type_frequency cleared — no more unknown stubs for common stdlib types

v0.4.3 — 2026-05

quell --version and version sync

  • Added --version / -V flag to the CLI (quell --version now works)
  • Synced quell.__version__ with pyproject.toml (was stale at 0.1.0)

v0.4.2 — 2026-05

Targeted violation injection and optional-return detection

  • Violation injector now targets ONLY lines inside the named function using AST line ranges — prevents accidentally violating a different function that shares the same pattern
  • must_return skips test generation when the return annotation is Optional[X] or X | None — avoids tests that would fail on cache-miss / empty inputs
  • Verifier walks up to pyproject.toml / setup.py to resolve the correct pytest working directory for nested packages

v0.4.1 — 2026-05

Privacy-safe diagnostic report and real callable test generation

  • Every --fix run now writes .quell/report.json — records success/failure per requirement, unknown types, and failure reasons. No source code, no full paths. Safe to share.
  • Rule engine now uses AST-based signature inspection (sig_inspector.py) to build real callable tests — no more raise NotImplementedError scaffolds
  • Type stubs: str, int, float, bool, Path (→ tmp_path), Optional[X], List[X], Dict, and name-based inference
  • sdk._fix_gaps() implemented — quell check --fix now actually runs the rule engine, verifier, and writer
  • File scanner excludes .venv and site-packages to avoid picking up installed library code

v0.4.0 — 2026-05

Spec-first architecture — reads requirements, not mutants

This release is a full architectural pivot. Quell no longer requires a mutation testing tool. Instead, it reads specifications that already exist in your codebase.

  • quell check — scan docstrings and Pydantic models for requirement gaps; --fix generates verified tests
  • quell reproduce — convert a plain-English bug description into a verified failing test
  • quell prove — show requirement coverage score for a file or function
  • Docstring reader — extracts MUST_RAISE, BOUNDARY, ENUM_VALID, MUST_RETURN from docstrings
  • Type reader — extracts BOUNDARY and ENUM_VALID from Pydantic Field validators and Literal annotations
  • Bug reader — LLM-powered BUG_REPRO requirement generation from natural language
  • Unified Requirement model with typed ConstraintKind enum
  • Verifier rewritten: PASS on original code + FAIL on violated code (both required)
  • Violation injection: MUST_RAISE → comment out raise; BOUNDARY → weaken threshold; MUST_RETURN → return None
  • AST-based coverage checker — no test execution required for the scan phase
  • Rule engine updated for spec-based generation (MUST_RAISE, BOUNDARY, ENUM_VALID, MUST_RETURN)
  • Score now measures requirement coverage (not mutation score)
  • Published quelltest 0.4.0 to PyPI

v0.3.0 — 2026-05

GitHub integration and VS Code extension

  • quell github-comment — post/update score as idempotent PR comment
  • GitHub App webhook server for automatic PR comments
  • VS Code extension — inline score annotations and status bar badge

v0.2.0 — 2026-04

CI, Score, Repair, MCP, and SDK

  • quell ci command with threshold enforcement
  • quell score command with SVG badge generation
  • quell-mcp MCP server with AI agent integration
  • quell.sdk.Quell Python SDK class

v0.1.0 — 2026-03

Initial release

  • Mutation testing foundation: scan, fix, auto, report commands
  • Rule-based generators for 9 mutation operators
  • Verification engine with subprocess isolation
  • libcst-based test injection
  • mutmut 2.x + 3.x + Stryker adapters
  • Published to PyPI as quelltest

View on GitHub