|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to this project will be documented in this file. |
| 4 | + |
| 5 | +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), |
| 6 | +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | + |
| 8 | +## [1.0.0] - 2025-12-29 |
| 9 | + |
| 10 | +### Added |
| 11 | +- **Complete BBL binary format parser** with support for all frame types (I, P, S, H, G, E) |
| 12 | +- **Library API** (`bbl_parser` crate) for programmatic access to parsing and export functions |
| 13 | +- **CSV export** with blackbox_decode-compatible field ordering and formatting |
| 14 | +- **GPX export** for GPS track visualization and mapping applications |
| 15 | +- **Event export** in JSONL format with official Betaflight FlightLogEvent enum mapping |
| 16 | +- **Multi-log support** with automatic detection and separate file generation |
| 17 | +- **Smart export filtering** based on flight duration and gyro activity heuristics |
| 18 | +- **Streaming architecture** for memory-efficient processing of large files (tested: 375K+ frames) |
| 19 | +- **Comprehensive CLI** with configurable output options and batch processing |
| 20 | +- **Feature flags** (`csv`, `json`, `cli`, `serde`) for flexible dependency management |
| 21 | +- **Firmware compatibility** for Betaflight (4.5+), EmuFlight, and INAV |
| 22 | +- **Unit conversions** for voltage (raw to volts) and current (raw to amps) |
| 23 | +- **Energy calculation** with cumulative amperage integration |
| 24 | +- **Betaflight-accurate flag formatting** for flight mode, state, and failsafe phases |
| 25 | +- **GPS coordinate conversion** from NE (north-east) to standard GPS coordinates |
| 26 | +- **Comprehensive test coverage** with 62 unit tests + 8 integration tests |
| 27 | +- **Complete documentation** including README, CRATE_USAGE.md, OVERVIEW.md, and 8 examples |
| 28 | +- **API documentation** with rustdoc comments on all public types and functions |
| 29 | +- **GitHub Actions CI/CD** with multi-platform testing (Linux, Windows, macOS) |
| 30 | +- **Automated release workflow** for crates.io publication with artifact management |
| 31 | + |
| 32 | +### Technical Highlights |
| 33 | +- **Pure Rust implementation** with no external binary dependencies |
| 34 | +- **Production-grade error handling** using `anyhow::Result<T>` throughout public API |
| 35 | +- **Type-safe design** with minimal unsafe code |
| 36 | +- **Cross-platform support** verified on Ubuntu, Windows, and macOS |
| 37 | +- **Dual licensing:** AGPL-3.0-or-later (open source) + commercial option available |
| 38 | + |
| 39 | +### Performance |
| 40 | +- Efficiently processes large blackbox logs via streaming architecture |
| 41 | +- Tested on files up to 375K+ frames (21 MB) in under 7 seconds |
| 42 | +- Memory-efficient frame processing with selective storage for analysis |
| 43 | + |
| 44 | +### Compatibility |
| 45 | +- **Input formats:** .BBL, .BFL, .TXT (case-insensitive) |
| 46 | +- **Firmware versions:** Betaflight 4.5+, EmuFlight, INAV |
| 47 | +- **Output formats:** CSV, GPX, JSONL event logs |
| 48 | +- **Binary compatibility:** Output matches blackbox_decode reference implementation |
| 49 | + |
| 50 | +### Documentation |
| 51 | +- Extensive project documentation (README.md, OVERVIEW.md, CRATE_USAGE.md) |
| 52 | +- Frame format specifications in FRAMES.md |
| 53 | +- Usage examples for CSV, GPX, and event exports |
| 54 | +- Contribution guidelines and commercial licensing information |
| 55 | + |
| 56 | +--- |
| 57 | + |
| 58 | +## Future Roadmap |
| 59 | + |
| 60 | +### Planned for 1.1.0 |
| 61 | +- IMU angle computation (roll, pitch, yaw) from gyro/accelerometer/magnetometer data |
| 62 | +- Extended unit conversions (altitude, speed, rotation rates, acceleration) |
| 63 | +- GPS data integration into main CSV output |
| 64 | +- Enhanced loop timing statistics and frame distribution analysis |
| 65 | +- Parallel frame processing for multi-log files |
| 66 | + |
| 67 | +### Planned for 1.x series |
| 68 | +- Advanced filtering options for specialized analysis |
| 69 | +- Raw mode output (unprocessed sensor values) |
| 70 | +- Current meter simulation improvements |
| 71 | +- Extended firmware version testing coverage |
| 72 | + |
| 73 | +--- |
| 74 | + |
| 75 | +## Known Limitations & Future Work |
| 76 | + |
| 77 | +The following are not blocking 1.0.0 but may be addressed in future releases: |
| 78 | + |
| 79 | +- IMU simulation features not yet implemented |
| 80 | +- Some unit conversion types not yet available (altitude, speed, rotation rates) |
| 81 | +- GPS data is exported separately (.gps.gpx) rather than integrated into CSV |
| 82 | +- Raw sensor value export mode not available |
| 83 | +- Some `.unwrap()` calls in test/example code (critical paths use proper Result handling) |
| 84 | + |
| 85 | +--- |
| 86 | + |
| 87 | +## Acknowledgments |
| 88 | + |
| 89 | +This project is built on extensive analysis of: |
| 90 | +- [Betaflight blackbox-log-viewer](https://github.com/betaflight/blackbox-log-viewer) |
| 91 | +- [Betaflight blackbox-tools](https://github.com/betaflight/blackbox-tools) |
| 92 | + |
| 93 | +The implementation ensures compatibility with established blackbox format specifications |
| 94 | +while providing the benefits of a modern, type-safe Rust library. |
| 95 | + |
| 96 | +--- |
| 97 | + |
| 98 | +## Version History |
| 99 | + |
| 100 | +- **1.0.0** (2025-12-29) - First stable release |
| 101 | +- **0.9.0** (2025-08+) - Development releases leading up to 1.0.0 |
0 commit comments