v3.0.8
✨ V3.0.8 — Dynamic Version Display & Check for Updates Button
Changes
🔄 Dynamic Version (No More Hardcoded Strings)
The app previously displayed V3.0.0 regardless of the actual release — a hardcoded string that was never updated. Now:
- Single source of truth: new
core/version.pymodule with__version__ = "3.0.8" - Title bar & header dynamically show the real version
- Pre-push hook now reads from
core/version.pyand auto-syncspyproject.toml+README.md - Future releases will never have stale version displays again
🔔 Check for Updates Button
A new "Check for Updates" button has been added to the Settings modal:
- Pings GitHub Releases API in the background
- Shows
✓ Up to date (V3.0.8)if current - If a newer version exists: transforms into a "Download VX.Y.Z" button that opens the GitHub release page in your browser
🔐 File Locking Fixes (from V3.0.7)
- Memory-buffered
xlrdreads (bypass OSmmaplocking) AutomationSecurity = 3to bypass Windows "Protected View" on downloaded files
📋 QA Summary
- ✅ Ruff: 0 lint errors
- ✅ Pytest: 140/140 tests passed
- ✅ Real file integration test:
Sale Report 2026.xlsprocessed end-to-end successfully - ✅ Pre-push version audit: all files synced at v3.0.8
📦 Downloads
| Platform | Download |
|---|---|
| Windows | BOT-ExRate-Windows.zip |
| macOS | BOT-ExRate-macOS.zip |
| Linux | BOT-ExRate-Linux.tar.gz |