- Add clap dependency with derive feature for structured CLI argument parsing - Replace env::args() manual matching with clap subcommands (fetch, best, missing, wishlist, trash, details, track) - Change print_best_car() signature from (&String, &String, &String) to (&str, &str, u8) for idiomatic Rust - Add TODO.md tracking known tech debt and planned features - Update CHANGELOG.md with clap migration details and set v0.2.0 release date
9 KiB
9 KiB
Changelog
All notable changes to the Top Drives Records Analyzer project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
- Comprehensive documentation suite in
docs/directory - Detailed code comments for all public functions
- Architecture documentation explaining system design
- User guide with command examples and troubleshooting
- Data structures documentation for JSON formats
- Development setup guide with dependency explanations
track_names.json— external config file mapping track codes to human-readable names (loaded at compile time viainclude_str!)clapdependency with derive feature for structured CLI argument parsing- Daily workflow documentation with output file descriptions (
best.csv,details.csv,add.csv,remove.csv,trash.csv,sorted.csv,very_best.csv,wishlist.csv) - Test suite covering
update_best_carlogic, RQ range analysis, time validation, track name completeness, and condition completeness
Changed
translate_track_name()inlib.rsnow loads track name mappings fromtrack_names.jsoninstead of a hardcoded match statement- Magic number 115 replaced with
const MAX_RQ: u8 = 113inrecords.rsfor clarity and maintainability parse_all_times()now uses a semaphore (limit 20) for bounded concurrency instead of unbounded task spawning- Replaced manual
env::args()CLI parsing withclapderive for proper--help,--version, and argument validation print_best_car()signature changed from(&String, &String, &String)to(&str, &str, u8)for idiomatic Rust and compile-time RQ validation- Empty test bodies removed from
records.rs - Better progress reporting during data fetching
- Improved CSV output formatting
Removed
- Club Module: Removed
src/club.rsbinary (topdrives.club is no longer maintained) - scraper dependency: Removed
scrapercrate fromCargo.toml(was only used by club module) - tracks.txt: Removed track definitions file (only used by club binary)
- Club module
Carstruct (separate struct withclass,upgradefields)
[0.2.0] - 2026-05-07
Added
- Track-Specific Analysis: New
trackcommand for targeted recommendations - Enhanced Output: CSV file generation for analysis results
- Improved Concurrency: Better handling of multiple simultaneous downloads
- Rate Limiting: Configurable download limits to respect server constraints
Changed
- Modular Architecture: Split functionality into separate binary targets
- Error Handling: More graceful handling of network and parsing errors
- Configuration: Externalized track and car data sources
- Performance: Optimized memory usage for large datasets
Fixed
- Memory Leaks: Fixed issues with async task cleanup
- File Handle Management: Proper cleanup of temporary files
- Network Timeouts: Better handling of slow or unreliable connections
[0.1.0] - 2024-01-XX
Added
- Initial Release: Core functionality for Top Drives car analysis
- Best Cars Analysis: Identify top performing cars in collection
- Missing Cars Detection: Find cars that would improve performance
- Collection Optimization: Identify cars safe to remove
- Detailed Performance Data: Comprehensive timing analysis
- JSON Data Processing: Parse community timing database
- Concurrent Processing: Multi-threaded analysis for performance
Features
- Multi-Platform Support: Windows, macOS, and Linux compatibility
- Comprehensive Track Support: All tracks and surface conditions
- RQ Range Analysis: Performance analysis across rarity brackets
- User Collection Integration: Import and analyze personal car collection
- Community Data Integration: Leverage crowd-sourced timing data
Technical Features by Version
Data Processing
- [0.1.0] Basic JSON parsing and analysis
- [0.2.0] Enhanced error handling and data validation
- [Unreleased] Track name mappings externalized to
track_names.json
Performance
- [0.1.0] Single-threaded processing
- [0.2.0] Concurrent downloads with rate limiting
- [Unreleased] Bounded concurrency via semaphore (limit 20);
MAX_RQconstant replaces magic number
User Interface
- [0.1.0] Basic command-line interface
- [0.2.0] Enhanced output formatting and CSV export
- [Unreleased]
full_scriptcommand for complete daily workflow
Data Sources
- [0.1.0] JSON-based records from community repository
- [0.2.0] Added HTML scraping from topdrives.club
- [Unreleased] Removed club scraping (topdrives.club no longer maintained)
Migration Guide
Upgrading to Unreleased from 0.2.0
Breaking Changes:
- Club module removed:
cargo run --bin clubis no longer available scraperdependency removed: No longer needed without club moduletracks.txtremoved: Track names now intrack_names.jsontranslate_track_name()changed: Now loads fromtrack_names.jsoninstead of hardcoded match- Magic number 115 →
MAX_RQ(113): RQ range analysis now usesMAX_RQ = 113constant
New Features Available:
full_scriptcommand: Run fetch + all analysis in one command- Additional output files:
add.csv,remove.csv,sorted.csv,very_best.csv,wishlist.csv - External track name config:
track_names.jsoncan be updated without code changes
Upgrading from 0.1.0 to 0.2.0
No breaking changes - the upgrade is fully backwards compatible.
New Features Available:
- Track Command: Specific track analysis with
cargo run --bin records -- track - CSV Output: Automatic generation of analysis files
Performance Improvements:
- Faster data fetching with concurrent downloads
- Better memory usage for large datasets
- Improved error recovery
Deprecation Notices
Removed in Unreleased
- Club Module:
src/club.rsandcargo run --bin club— topdrives.club is no longer maintained scraperdependency: Removed fromCargo.tomltracks.txt: Replaced bytrack_names.json
Deprecated Features
- None currently deprecated
Community Contributions
Notable Contributions
- Community Timing Data: All performance data from Top Drives community
- Track Definitions: Comprehensive track database
- Bug Reports: User feedback for improvements
Contribution Statistics
- Timing Submissions: 1000+ cars with community data
- Track Coverage: 200+ tracks across all conditions
- Active Contributors: Community-driven development
Performance Benchmarks
Data Processing Speed
- Initial Load: ~2-3 minutes (downloads 1000+ files)
- Subsequent Runs: <30 seconds (uses cached data)
- Concurrent Operations: 20 simultaneous downloads (semaphore bounded)
Memory Usage
- Base Application: ~50MB
- With Full Dataset: ~200MB
- Peak During Processing: ~300MB
Network Efficiency
- Compression: Efficient HTTP compression
- Connection Reuse: Persistent HTTP connections
- Rate Limiting: Semaphore-bounded concurrency (limit 20)
Known Issues and Limitations
Current Limitations
- Data Freshness: Requires manual refresh for latest community data
- Network Dependency: Requires internet for initial data download
- Storage Requirements: Large local dataset (~100MB)
- Single User: Designed for individual use, not multi-user
Platform-Specific Issues
- Windows: Potential path length limitations with many files
- macOS: Gatekeeper may flag the binary (code-signed in releases)
- Linux: No known issues
Future Roadmap
Planned Features (Unreleased)
- Historical Analysis: Track performance changes over time
- Advanced Analytics: Statistical analysis and trend detection
Potential Enhancements
- Real-time Updates: Live data synchronization
- Customization: User-defined analysis parameters
- Export Options: Multiple file formats (PDF, Excel)
Support Information
Getting Help
- Documentation: Check
docs/directory for comprehensive guides - Issue Tracker: Report bugs and request features
- Discussions: Community forum for questions and tips
Troubleshooting Resources
- User Guide: Step-by-step instructions and examples
- Development Setup: Technical installation guide
- Data Structures: Detailed format documentation
- Architecture Guide: System design and data flow
Acknowledgments
Contributors
- Original Author: Project creator and maintainer
- Community Contributors: Timing data providers and testers
- Open Source Projects: Rust ecosystem and tooling
Data Sources
- Top Drives Community: Primary timing data source
- GitHub Contributors: Track and car database maintenance
Changelog Format: Follows Keep a Changelog format Versioning: Follows Semantic Versioning principles Last Updated: 2026-05-07