v2.8.0 - Smart Updates, CSV Export, and Enhanced UX
VoteTracker v2.8.0 - Smart Updates, CSV Export, and Enhanced UX
Release Date: January 29, 2026
🎉 What's New
VoteTracker 2.8.0 brings intelligent grade synchronization, new export formats, improved dashboard design, and a complete Axios Italia integration. This release focuses on making grade management smarter and more user-friendly.
✨ Major Features
🔄 Smart Grade Update System
When teachers modify grades in the electronic register (changing values, marking as "doesn't count", etc.), VoteTracker now automatically updates existing grades instead of creating duplicates.
- Intelligent Detection: Matches grades by subject, date, and type (not grade value)
- Automatic Updates: Updates grade value, weight, or description when teachers edit them
- Clear Feedback: Import status shows "X new, Y updated (Z skipped)"
- Works with all sync providers (ClasseViva, Axios)
Technical: Added find_vote_by_metadata() database method for metadata-based matching
📊 CSV Export
Export your grades to CSV format for analysis in Excel, Google Sheets, or other tools.
- New Export Option: "Export as CSV" button alongside JSON export
- Complete Data: Includes all fields (subject, grade, type, date, description, weight, term)
- Universal Compatibility: Works with all major spreadsheet applications
- Location: Settings → Data Management
📱 Recent Grades Widget
Dashboard now shows your latest grades at a glance.
- Last 6 Grades: Displayed in a clean, organized layout
- Color-Coded: Grades colored by performance (red/yellow/green)
- Full Details: Subject, grade, type, date, and description
- Smart Layout: Side-by-side with statistics (no scrolling needed)
- Sorted: Most recent grades first
🔌 Complete Axios Italia Integration
Full support for Axios Registro Elettronico (Italian electronic register).
- New Provider: Axios Italia now available as sync provider
- Auto-Detection: Automatically detects student from famiglia account
- Multi-Term Support: Fetches grades from all terms correctly
- Smart Subject Mapping: Fuzzy matching with VoteTracker subjects
- Optional Dependency: Only loads if axios CLI is installed
Installation (Arch Linux):
sudo pacman -S python-pipx
pipx install axios🎨 UI/UX Improvements
Dashboard Redesign
- Optimized Layout: Statistics and Recent Grades side-by-side (1:2 ratio)
- Centered Content: Statistics boxes centered horizontally for better balance
- Even Spacing: Recent grades distributed evenly with subtle separators
- No Scrolling: Everything fits on one screen
Statistics Page Overhaul
Replaced enhanced charts with minimal, Qt-native widgets that respect system themes.
- Theme-Aware: Charts adapt to light/dark themes automatically
- No White Backgrounds: Fixed hardcoded colors breaking dark mode
- Better Readability: Clear labels, axis markers, and legends
- New Charts:
- BarChart: Horizontal bars for subject averages with visible labels
- DistributionChart: Histogram with non-overlapping count labels
- TrendChart: Line chart with Y-axis labels, passing threshold, dates
Provider System Architecture
Abstracted sync providers for better extensibility.
- Generic Interface:
SyncProviderbase class for all providers - Provider Registry: Automatic provider discovery and registration
- Dynamic UI: Settings pages generated from provider definitions
- Easy Extension: Add new providers by implementing base class
🐛 Bug Fixes
Grade Calculation
- Zero Grades Excluded: +/- marks (imported as 0.00) no longer affect averages
- Accurate Averages: Only counts actual numeric grades in calculations
Subject Mapping
- Fixed Dialog Constructor: ManageSubjectMappingsDialog now receives all required parameters
- Provider-Aware Mappings: Each provider has its own subject mapping namespace
CI/CD & Testing
- Headless Qt Testing: Fixed CI failures by installing required system libraries
- Optional Dependencies: Tests skip gracefully when lxml/axios not available
- Coverage Configuration: Excludes PySide6 internals from coverage analysis
- All Tests Passing: ✅ Python 3.8-3.12 on GitHub Actions
📁 Project Organization
Documentation Cleanup
- New docs/ Folder: Moved all documentation to organized structure
- AUR publishing guides
- Reference PKGBUILDs
- Implementation plans and improvement docs
- Release notes
- Archived package builds
- Clean Root: Removed build artifacts and test files
- docs/README.md: Index of all documentation
🔧 Technical Improvements
Database Enhancements
- New Method:
find_vote_by_metadata()for update detection - Improved Queries: Better performance with existing indices
Import/Export
- Enhanced Status Messages: Detailed breakdown of import results
- CSV Support: Standard CSV format with proper encoding
- Better Error Handling: Clear error messages for import failures
Code Quality
- Type Hints: Improved type annotations throughout
- Better Structure: Clearer separation of concerns
- Comprehensive Tests: All new features covered by unit tests
🌍 Translations
All new features fully translated:
- English: Complete
- Italian: Complete
New translation strings:
- Export formats (JSON/CSV)
- Recent grades widget
- Import status messages
- Provider UI elements
📦 Installation
Arch Linux
cd scripts && makepkg -sipip
pip install --upgrade votetrackerFrom Source
git clone https://github.com/mambucodev/votetracker.git
cd votetracker
pip install .Optional: Axios Support
# Arch Linux
sudo pacman -S python-pipx
pipx install axios
# Other distros
pip install --user axios🔄 Upgrade Notes
- Database: Fully compatible with 2.7.x databases (no migration needed)
- Settings: All existing settings preserved
- Subject Mappings: ClasseViva mappings automatically migrated to new provider system
- Optional Axios: Axios provider only appears if CLI is installed
📊 Statistics
- 51 commits since v2.7.1
- 10 new features
- 15 bug fixes
- All CI tests passing (Python 3.8-3.12)
- 100% translation coverage
🙏 Contributors
- Gabriele Giambrone (@mambucodev)
- Co-Authored-By: Claude Sonnet 4.5
🐛 Known Issues
None at this time. Report issues at: https://github.com/mambucodev/votetracker/issues
📝 Full Changelog
See GitHub Releases for complete commit history.