Changelog

View Source

All 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]

Added

  • Standalone Escript - Build standalone executable with mix escript.build
  • Hex Archive Support - Install globally with mix archive.install
  • Mix Task - mix oeditus_credo command with all checks pre-enabled
  • CLI Module - Automatic configuration generation
  • STANDALONE.md guide with detailed installation and usage instructions
  • CI/CD integration examples for GitHub Actions and GitLab CI

Changed

  • Updated README with standalone installation options
  • Added escript configuration to mix.exs

0.1.0 - 2026-01-18

Added

Error Handling Checks (3)

  • MissingErrorHandling - Detects {:ok, x} = pattern without error handling
  • SilentErrorCase - Detects case statements missing error branches
  • SwallowingException - Detects try/rescue blocks without logging or re-raising

Database & Performance Checks (3)

  • InefficientFilter - Detects Repo.all followed by Enum filtering
  • NPlusOneQuery - Detects potential N+1 queries (Enum.map with Repo calls)
  • MissingPreload - Detects Ecto queries without proper preloading

LiveView & Concurrency Checks (5)

  • UnmanagedTask - Detects unsupervised Task.async calls
  • SyncOverAsync - Detects blocking operations in LiveView/GenServer callbacks
  • MissingHandleAsync - Detects blocking in handle_event without async pattern
  • MissingThrottle - Detects form inputs without phx-debounce/throttle
  • InlineJavascript - Detects inline JS handlers instead of phx-* bindings

Code Quality Checks (4)

  • DirectStructUpdate - Detects direct struct updates instead of changesets
  • CallbackHell - Detects deeply nested case statements (suggests with)
  • BlockingInPlug - Detects blocking operations in Plug functions

Telemetry & Observability Checks (5)

  • MissingTelemetryInObanWorker - Detects Oban workers without telemetry instrumentation
  • MissingTelemetryInLiveViewMount - Detects LiveView mount/3 without telemetry events
  • TelemetryInRecursiveFunction - Detects telemetry inside recursive functions (anti-pattern)
  • MissingTelemetryInAuthPlug - Detects auth/authz plugs without telemetry
  • MissingTelemetryForExternalHttp - Detects HTTP client calls without telemetry wrapper

Documentation

  • Comprehensive README with installation and usage instructions
  • Detailed documentation for all 20 checks
  • Configuration examples and best practices

Testing

  • 60+ comprehensive tests covering all checks
  • Positive and negative test cases for each check
  • Test coverage reporting with ExCoveralls

Licensing

  • Dual-licensed under GPLv3 and CC-BY-SA-4.0
  • Open-source use under GPLv3
  • Commercial license available for proprietary applications