Changelog
All notable changes to this project are documented here.
This project follows Semantic Versioning.
[Unreleased]
Section titled “[Unreleased]”[0.1.9] - 2026-01-22 Current
Section titled “[0.1.9] - 2026-01-22 ”Changed
Section titled “Changed”- Replaced unmaintained
attycrate withstd::io::IsTerminal(resolves RUSTSEC-2024-0375) - Updated
rusqlitefrom 0.33 to 0.35 - Updated multiple dependencies to latest versions
- Marked
aranet-guiandaranet-wasmaspublish = false(not ready for release)
- CONTRIBUTING.md with contribution guidelines
- SECURITY.md with vulnerability reporting process
- GitHub issue templates for bug reports and feature requests
- Pull request template
[0.1.8] - 2026-01-19
Section titled “[0.1.8] - 2026-01-19”- TUI Dashboard Enhancements - Complete overhaul with 44 new features
- Navigation: Tab/Shift+Tab for tabs, j/k/arrows for devices, vim-style keybindings
- Auto-refresh: Readings update automatically based on device interval
- Trend indicators: Up/down/stable arrows next to readings
- Statistics: Min/Max/Avg CO2 stats, radon 1-day/7-day averages
- Alerts: CO2/radon threshold alerts with Info/Warning/Critical severity levels
- Alert history: View past alerts with ‘a’ key, sticky alerts with ‘A’
- Terminal bell: Audio alert on threshold breach (toggle with ‘b’)
- Sparkline charts: CO2/radon history with min/max labels and time axis
- Full-screen chart: Press ‘g’ for expanded chart view
- Multiple metrics: Stack temperature/humidity on chart with T/H keys
- Time range filter: 0=all, 1=today, 2=24h, 3=7d, 4=30d
- Scrollable history: PgUp/PgDn to scroll through records
- Export history: Press ‘e’ to export visible history to CSV
- Device filter: Cycle filter with ‘f’ (All/Aranet4/Radon/Radiation/Connected)
- Comparison view: Side-by-side device readings with ‘v’, cycle with
</> - Connect all: Connect to all known devices with ‘C’
- Device alias: Set friendly names with ‘n’ key
- Settings editing: Change interval with Enter, BLE range with ‘B’, Smart Home with ‘I’
- Threshold config: Adjust CO2/radon thresholds with +/- keys
- Theme support: Toggle light/dark theme with ‘t’ key
- Responsive layout: Auto-hide sidebar on narrow terminals, toggle with ’[’
- Wider sidebar: Toggle sidebar width with ’]’ key
- Mouse support: Click to select devices, tabs, and buttons
- RSSI signal strength: Visual signal bars for connected devices
- Device uptime: Shows how long device has been connected
- Battery warning: Alert when battery drops below 20%
- Reading age warning: Highlight stale readings (> 2x interval)
- Loading spinners: Visual feedback during connect/sync operations
- Status messages: Queue of messages with auto-dismiss timeout
- Confirmation dialogs: Y/N prompts before destructive actions
- Error details: View full error with ‘E’ key
- Help overlay: Press ’?’ for organized keyboard shortcuts cheatsheet
- Header bar: Shows connected count, avg CO2, alert count, indicators
- ASCII-only output: All indicators use pure ASCII characters for compatibility
[0.1.7] - 2026-01-18
Section titled “[0.1.7] - 2026-01-18”-
aranet-store crate - New SQLite-based local data persistence layer
- Store current readings and device metadata
- Cache history records from devices for offline access
- Incremental sync support (only download new records)
- Query by device, time range, with pagination
- Automatic deduplication of history records
- Platform-specific database locations:
- Linux:
~/.local/share/aranet/data.db - macOS:
~/Library/Application Support/aranet/data.db - Windows:
C:\Users\<user>\AppData\Local\aranet\data.db
- Linux:
-
CLI sync command - Download device history to local database
aranet sync --device <ADDRESS>for incremental syncaranet sync --device <ADDRESS> --fullfor complete re-download- Progress bar during history download
-
CLI cache command - Query cached data without device connection
aranet cache devices- List all cached devicesaranet cache stats- Show cache statistics (readings, history counts)aranet cache history- Query cached history with filtersaranet cache info- Show database path and size
Changed
Section titled “Changed”- All crate versions bumped to 0.1.7
[0.1.6] - 2026-01-18
Section titled “[0.1.6] - 2026-01-18”- Code coverage with cargo-llvm-cov - CI now reports test coverage via Codecov
- Property-based testing with proptest - Fuzz testing for all byte parsers
- aranet-types: CurrentReading parser fuzzing
- aranet-core: All device parsers (Aranet4, Aranet2, Radon, Radiation)
- aranet-core: Advertisement parsing fuzzing
- GUI tests - Component tests for AppState (6 new tests)
- TUI tests - Component tests for App key handling (6 new tests)
- Expanded MockDevice tests - Comprehensive coverage for history, settings, calibration
- Aranet Radiation advertisement parser panic - Fixed crash on malformed data (found by proptest)
Changed
Section titled “Changed”- Test count increased from 268 to 310+ tests
- All test modules now have comprehensive inline documentation
[0.1.5] - 2026-01-18
Section titled “[0.1.5] - 2026-01-18”- Multi-device passive watch mode -
aranet watch --passivemonitors ALL devices broadcasting advertisements - Device name identification in watch output:
[AranetRn+ 306B8] - CSV, JSON, and text output formats with device identification
[0.1.4] - 2026-01-17
Section titled “[0.1.4] - 2026-01-17”- Fix clippy warnings for Rust 2024 edition compliance
- Resolve collapsible if/else-if blocks in CLI styling code
- Remove unnecessary
.clone()on Copy types in tests - Fix manual range contains and clamp patterns
[0.1.3] - 2026-01-17
Section titled “[0.1.3] - 2026-01-17”- Rich CLI styling (now the default)
- Spinners for long-running operations (scan, connect, history download)
- Color-coded sensor values based on thresholds (CO2, radon, battery, humidity, temperature)
- Table formatting with
tabledfor history, info, alias, and scan output - Trend indicators in watch mode (up/down/stable arrows)
--styleflag:rich(default),minimal, orplainfor scripting--briefflag for status command (compact one-line output)- Device name headers in read output
- Air quality summary labels (Excellent, Good, Fair, Poor)
- Pressure unit conversion (
--inhg/--hpaflags)- Display pressure in inches of mercury (inHg) with
--inhg - Explicitly request hPa with
--hpa(default) - Configurable via config file (
inhg = true)
- Display pressure in inches of mercury (inHg) with
doctorcommand for BLE diagnostics- Checks Bluetooth adapter availability and permissions
- Scans for devices to verify BLE functionality
- Platform-specific troubleshooting tips (macOS, Linux, Windows)
- Numbered progress steps with colored status indicators
aliascommand for device managementalias list- Show all saved device aliases (now with table formatting)alias set <name> <address>- Create a friendly name for a devicealias remove <name>- Delete an alias- Use aliases anywhere a device address is expected
- Passive read mode (
--passiveflag onread)- Read sensor data from BLE advertisements without connecting
- Requires Smart Home integration enabled on the device
- Multi-device read support
- Specify multiple devices:
aranet read -d device1 -d device2 - Parallel reading from all devices
- Combined output in text, JSON, and CSV formats
- Specify multiple devices:
- Interactive device picker
- When no device is specified, scan and present a selection menu
- History date filters (
--since/--until)- Filter history by date range (RFC3339 or YYYY-MM-DD format)
- Progress bars for history download
- Visual progress indicator with percentage and current parameter
- Full AranetRn+ (Radon) sensor support with 4-byte radon history values
- History V2 protocol parsing with 10-byte header format
aranet-typescrate for platform-agnostic shared types- WebAssembly module foundation (
aranet-wasm)
- UUID mappings for history characteristics
- V2 history parsing header format
- macOS device identifier now uses CoreBluetooth UUID instead of placeholder address
Changed
Section titled “Changed”- Default style mode changed from
minimaltorich - Replaced unmaintained
attycrate withstd::io::IsTerminal - Refactored
cmd_historyto useHistoryArgsstruct (clippy compliance) HistoryRecordnow includes optionalradon: Option<u32>field- Improved error messages for BLE connection failures
[0.1.2] - 2026-01-16
Section titled “[0.1.2] - 2026-01-16”Core Library (aranet-core)
Section titled “Core Library (aranet-core)”- Device Discovery — Scan for nearby Aranet devices via BLE
- Current Readings — CO₂, temperature, pressure, humidity, radon, radiation
- Historical Data — Download measurement history with timestamps (V1 + V2 protocols)
- Device Settings — Read/write measurement interval, Bluetooth range, Smart Home
- Auto-reconnection — Configurable backoff and retry logic
- Real-time Streaming — Subscribe to sensor value changes via notifications
- Multi-device Manager — Manage multiple sensors simultaneously
- Event System — Connect/disconnect/reading event dispatcher
- Data Validation — Bounds checking with
ReadingValidator - CO₂ Thresholds — Helpers for green/amber/red status
- Mock Device — For testing without hardware
Supported Devices
Section titled “Supported Devices”| Device | Status |
|---|---|
| Aranet4 | Full Support |
| Aranet2 | Full Support |
| AranetRn+ (Radon) | Full Support |
| Aranet Radiation | Full Support |
CLI Tool (aranet-cli)
Section titled “CLI Tool (aranet-cli)”All core commands fully implemented:
scan— Discover nearby Aranet devicesread— Read current sensor measurementsstatus— Quick one-line reading with colored CO₂ statusinfo— Display device informationhistory— Download historical data (text, JSON, CSV)set— Modify device settings (interval, range, smart_home)watch— Continuous monitoring with auto-reconnectconfig— Manage configuration file (~/.config/aranet/config.toml)completions— Generate shell completions (bash, zsh, fish, PowerShell)
Features:
- JSON and CSV output formats for all commands
- Colored CO₂ status indicators (green/amber/red)
- Config file support with device, format, no_color, fahrenheit options
ARANET_DEVICEenvironment variable support--no-colorflag andNO_COLORenv var support
Testing
Section titled “Testing”- 310+ workspace tests (295+ run, 15 ignored for hardware-dependent tests)
- Property-based testing with proptest for all byte parsers
- Code coverage with cargo-llvm-cov (Codecov integration)
- Hardware tested: Aranet4 17C3C (FW v1.4.19), AranetRn+ 306B8 (FW v1.12.0)
- CI running on Ubuntu, macOS, Windows
Dependencies
Section titled “Dependencies”| Dependency | Version | Purpose |
|---|---|---|
| btleplug | 0.11 | Cross-platform BLE |
| tokio | 1.x | Async runtime |
| thiserror | 2.x | Error handling |
| clap | 4.x | CLI argument parsing |
| time | 0.3 | Date/time handling |
| serde | 1.x | Serialization |
Made with ❤️ by Cameron Rye