# 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.2.0] - 2026-09-24 Heaptop is now a simple memory monitor: what is used, what is free, health, a fresh window on demand, and CPU stress. ### Added - `ht health` / health view: a verdict line, every check with its current value and limit, and the last failed allocations. - `ht clear` / `heaptop_clear()`: reset minimum free, task peaks, the failure log, trends and leak-suspicion history. Stack high-water marks keep their since-boot minimum. - `ht stress cpu <pct> [seconds]` / `heaptop_stress_cpu()` / `heaptop_stress_stop()`: load every core, for benchmarks and soak tests. - Snapshot field `since_us` and stream field `since_ms`: when the current stats window started. ### Changed - Data sources are detected from the IDF configuration. Menuconfig keeps only the sample period, the boot stream and the alert limits. - Buffers go to PSRAM whenever the chip has it. The sampler task's stack, priority and core are fixed (4096, 1, no affinity), and `heaptop_config_t` holds only the period and the limits. - The failed-allocation callback is always registered. An application that needs the slot registers its own after `heaptop_init()`. - Alert hysteresis is fixed at 10%. - Stream protocol version 2: the sample line lost `allocs_s`, `frees_s` and `bytes_s`, and `failures` counts from the last clear. - The `basic` example has no `stress` command any more. CPU load comes from `ht stress cpu`. ### Removed - Leak capture (`ht leaks`, `heaptop_leaks_start/stop/report`); live leak suspicion per task stays. - `ht mark` / `ht diff` / `heaptop_mark()` / `heaptop_diff()`. - `ht frag` (free-block histogram); fragmentation % stays in `ht heap`, `ht top` and `ht health`. - `ht allocs`, heap hooks and allocation rates; failed allocations moved to `ht health`. - `ht alerts`, `heaptop_get_thresholds()` and `heaptop_set_thresholds()`. - Kconfig options `HEAPTOP_HISTORY_LEN`, `MAX_TASKS`, `TASK_STACK`, `TASK_PRIO`, `TASK_CORE`, `ALLOC_HOOKS`, `FAILED_ALLOC_CALLBACK`, `FAIL_RING_LEN`, `TASK_HEAP`, `LEAK_TRACE`, `LEAK_RECORDS`, `BUFFERS_IN_PSRAM` and `ALERT_HYSTERESIS_PCT`. ## [0.1.0] - 2026-09-24 ### Added - Sampler task publishing heap regions (internal, DMA, PSRAM), per-task CPU %, stack high-water mark and heap, per-core load, allocation rates and trends. - `ht` console command: `top`, `heap`, `frag`, `tasks`, `allocs`, `leaks`, `mark`, `diff`, `alerts`, `stream`. - Leak capture grouped by call stack (heap tracing) and live leak suspicion per task (task tracking). - Threshold alerts with hysteresis, logging and a callback; limits changeable at runtime. - JSON Lines stream, from the console or from boot (`CONFIG_HEAPTOP_STREAM_AT_BOOT`). - `basic` example with `stress` workloads. - README guided examples (heap health, fragmentation, leaks, CPU, stack, failed allocations, streaming) with real screenshots from an ESP32-S3.