Skip to content

v2.8.0 - Smart Updates, CSV Export, and Enhanced UX

Choose a tag to compare

@mambucodev mambucodev released this 30 Jan 01:08
· 51 commits to main since this release

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: SyncProvider base 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 -si

pip

pip install --upgrade votetracker

From 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.