- Extract shared types (Car, BestCarRecord, AnalysisContext) into src/lib.rs - Replace global static BEST_CARS with injected AnalysisContext for testability - Add semaphore-bounded concurrency (limit 20) in parse_all_times() - Replace hardcoded track name match with track_names.json loaded via include_str! - Replace magic number 115 with const MAX_RQ: u8 = 113 - Improve floating-point tie comparison with TIME_TOLERANCE (5ms) constant - Remove src/club.rs binary (topdrives.club no longer maintained) - Remove scraper dependency from Cargo.toml - Remove tracks.txt (replaced by track_names.json) - Remove empty/placeholder test bodies - Improve error handling in get_file() for response body read - Add load_my_cars_data() combining owned + wishlist extraction in one I/O - Update CHANGELOG, README, and all docs to reflect changes
8.7 KiB
8.7 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!)full_scriptcommand for running fetch + all analysis commands in sequence- Daily workflow documentation with output file descriptions (
best.csv,details.csv,add.csv,remove.csv,trash.csv,sorted.csv,very_best.csv,wishlist.csv)
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- Empty test bodies removed from
records.rs - Enhanced error handling throughout the application
- Better progress reporting during data fetching
- More descriptive command-line help text
- 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] - 2024-12-XX
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-06