CHANGELOG.md

# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.3.1] - 2026-02-09

### Fixed

- Coordinator no longer crashes when an operator GenServer times out during `message_operator` or `get_operator_statuses` actions
- `list_operators/0` and `operator_status/1` no longer crash when an operator is unresponsive
- Coordinator no longer gets stuck in `:running` when the LLM calls `done()` with unread notifications remaining
- `mix compile` no longer fails in prod when `igniter` is not a dependency

## [0.3.0] - 2026-01-25

### Added

#### Installation

- **Igniter installer** — Run `mix igniter.install beamlens` to add Beamlens to your supervision tree. Uses Anthropic by default (set `ANTHROPIC_API_KEY`). Use `--provider` and `--model` to configure one of 8 providers: Anthropic, OpenAI, Ollama, Google AI, Vertex AI, AWS Bedrock, Azure OpenAI, or OpenRouter.

#### New Skills

- **Anomaly** — Statistical anomaly detection with self-learning baselines. Auto-triggers Coordinator when anomalies escalate.
- **Overload** — Message queue overload analysis with bottleneck detection and remediation recommendations.
- **Allocator** — Memory allocator fragmentation monitoring for long-running nodes.
- **Tracer** — Production-safe function call tracing powered by Recon. Rate-limited with auto-shutoff. Requires `recon` dependency.

#### Skill Enhancements

- **Beam** — Scheduler utilization tracking, atom table growth monitoring, binary memory leak detection, message queue overload detection, process reduction profiling
- **Ets** — Table growth tracking and leak candidate detection
- **Gc** — Memory variance detection, lazy GC identification, hibernation recommendations with estimated savings
- **Ports** — Queue saturation monitoring with prediction, busy port detection, inet socket tracking with buffer monitoring
- **Supervisor** — Orphaned/unlinked process detection, tree integrity checking, zombie child detection
- **VmEvents** — Long GC, long schedule, and busy port event tracking

#### Infrastructure

- Operators and Coordinator are now always-running supervised processes
- `Operator.run_async/3` for background analysis with progress notifications

### Changed

- **Allocator**, **Overload**, and **Tracer** skills are now enabled by default (12 builtin skills total)
- **Breaking:** Skills renamed for clarity:
  - `Beamlens.Skill.Monitor` → `Beamlens.Skill.Anomaly`
  - `Beamlens.Skill.Sup` → `Beamlens.Skill.Supervisor`
  - `Beamlens.Skill.System` → `Beamlens.Skill.Os`
  - `Beamlens.Skill.SystemMonitor` → `Beamlens.Skill.VmEvents`
- **Breaking:** Atom shortcuts updated: `:monitor` → `:anomaly`, `:sup` → `:supervisor`, `:system` → `:os`, `:system_monitor` → `:vm_events`
- **Breaking:** Configuration option renamed from `:operators` to `:skills`
  ```elixir
  # Before
  {Beamlens, operators: [Beamlens.Skill.Beam]}

  # After
  {Beamlens, skills: [Beamlens.Skill.Beam]}
  ```
- **Breaking:** `Operator.run/2` and `Coordinator.run/2` raise `ArgumentError` if not configured in supervision tree
- **Breaking:** `Notification.summary` field renamed to `observation`

### Removed

- `Operator.Supervisor.start_operator/2` — configure via `:skills` option instead
- `Operator.Supervisor.stop_operator/2` — operators now remain running

### Fixed

- Exception skill snapshot data now serializes correctly to JSON

## [0.2.0] - 2026-01-14

See the updated [README.md](README.md)!

## [0.1.0] - 2025-01-03

First release!

[Unreleased]: https://github.com/beamlens/beamlens/compare/v0.3.1...HEAD
[0.3.1]: https://github.com/beamlens/beamlens/compare/v0.3.0...v0.3.1
[0.3.0]: https://github.com/beamlens/beamlens/compare/v0.2.0...v0.3.0
[0.2.0]: https://github.com/beamlens/beamlens/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/beamlens/beamlens/releases/tag/v0.1.0