Add quick test runner and enhance run_tests script
Some checks failed
Build and Push Docker Image / build-and-push (push) Has been cancelled

- Introduced `quick_test.py` for running specific test categories (unit, integration, theme, all).
- Updated `run_tests.py` to improve test execution and reporting, including coverage.
- Removed outdated test scripts for keyboard shortcuts, menu theming, note saving, and entry updating.
- Added new test script `test_theme_changing.py` to verify theme changing functionality.
- Consolidated integration tests into `test_integration.py` for comprehensive testing of TheChart application.
- Updated theme manager to ensure color retrieval works correctly.
- Modified test constants to import from the correct module path.
This commit is contained in:
William Valentin
2025-08-05 15:09:13 -07:00
parent df9738ab17
commit a521ed6e9a
46 changed files with 8325 additions and 1131 deletions

298
CHANGELOG.md Normal file
View File

@@ -0,0 +1,298 @@
# Version History
> 📖 **Consolidated Documentation**: This document combines multiple documentation files for better organization and easier navigation.
## Table of Contents
- [Overview](#overview)
## Overview
Version history and release notes (preserved as-is)
All notable changes to TheChart project are documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
### [1.9.5] - 2025-08-05
#### 🎨 Major UI/UX Overhaul
- **Added**: Professional theme system with ttkthemes integration
- **Added**: 8 curated themes (Arc, Equilux, Adapta, Yaru, Ubuntu, Plastik, Breeze, Elegance)
- **Added**: Dynamic theme switching without restart
- **Added**: Theme persistence between sessions
- **Added**: Comprehensive settings window with tabbed interface
- **Added**: Smart tooltip system with context-sensitive help
- **Improved**: Table selection highlighting and alternating row colors
- **Improved**: Modern styling for all UI components (buttons, frames, forms)
- **Improved**: Professional card-style layouts and enhanced spacing
#### ⚙️ Settings and Configuration System
- **Added**: Advanced settings window (accessible via F2)
- **Added**: Theme selection with live preview
- **Added**: UI preferences and customization options
- **Added**: About dialog with detailed application information
- **Added**: Settings persistence across application restarts
#### 💡 Enhanced User Experience
- **Added**: Intelligent tooltips for all interactive elements
- **Added**: Specialized help for pathology scales and medicine options
- **Added**: Non-intrusive tooltip timing (500-800ms delay)
- **Added**: Quick theme switching via menu bar
- **Improved**: Visual hierarchy with better typography and spacing
- **Improved**: Professional color schemes across all themes
#### 🏗️ Technical Architecture Improvements
- **Added**: Modular theme manager with dependency injection
- **Added**: Tooltip management system
- **Added**: Enhanced UI manager with theme integration
- **Improved**: Code organization with separate concerns
- **Improved**: Error handling with graceful theme fallbacks
### [1.7.0] - 2025-08-05
#### ⌨️ Keyboard Shortcuts System
- **Added**: Comprehensive keyboard shortcuts for improved productivity
- **Added**: File operations shortcuts (Ctrl+S, Ctrl+Q, Ctrl+E)
- **Added**: Data management shortcuts (Ctrl+N, Ctrl+R, F5)
- **Added**: Window management shortcuts (Ctrl+M, Ctrl+P)
- **Added**: Table operation shortcuts (Delete, Escape)
- **Added**: Help system shortcut (F1)
- **Added**: Menu integration showing shortcuts next to menu items
- **Added**: Button labels updated to show primary shortcuts
- **Added**: In-app help dialog accessible via F1
- **Added**: Status bar feedback for all keyboard operations
- **Improved**: Button text shows shortcuts (e.g., "Add Entry (Ctrl+S)")
- **Improved**: Case-insensitive shortcuts (Ctrl+S and Ctrl+Shift+S both work)
##### Keyboard Shortcuts Added:
- **Ctrl+S**: Save/Add new entry
- **Ctrl+Q**: Quit application (with confirmation)
- **Ctrl+E**: Export data
- **Ctrl+N**: Clear entries
- **Ctrl+R / F5**: Refresh data
- **Ctrl+M**: Manage medicines
- **Ctrl+P**: Manage pathologies
- **Delete**: Delete selected entry (with confirmation)
- **Escape**: Clear selection
- **F1**: Show keyboard shortcuts help
#### 📚 Documentation Updates
- **Updated**: FEATURES.md with keyboard shortcuts section
- **Added**: KEYBOARD_SHORTCUTS.md with comprehensive shortcut reference
- **Updated**: In-app help system with shortcut information
- **Updated**: About dialog with keyboard shortcut mention
### [1.6.1] - 2025-07-31
#### 📚 Documentation Overhaul
- **BREAKING**: Consolidated scattered documentation into organized structure
- **Added**: Comprehensive `docs/FEATURES.md` with complete feature documentation
- **Added**: Detailed `docs/DEVELOPMENT.md` with testing and development guide
- **Updated**: Streamlined `README.md` with quick-start focus and navigation
- **Removed**: 10 redundant/outdated markdown files
- **Improved**: Clear separation between user and developer documentation
#### 🏗️ Documentation Structure
```
docs/
├── FEATURES.md # Complete feature guide (new)
├── DEVELOPMENT.md # Development & testing guide (new)
└── CHANGELOG.md # This changelog (new)
README.md # Streamlined quick-start guide (updated)
```
### [1.3.3] - Previous Releases
#### 🏥 Modular Medicine System
- **Added**: Dynamic medicine management system
- **Added**: JSON-based medicine configuration (`medicines.json`)
- **Added**: Medicine management UI (`Tools``Manage Medicines...`)
- **Added**: Configurable medicine properties (colors, doses, names)
- **Added**: Automatic UI updates when medicines change
- **Added**: Backward compatibility with existing data
#### 💊 Advanced Dose Tracking System
- **Added**: Precise timestamp recording for medicine doses
- **Added**: Multiple daily dose support for same medicine
- **Added**: Comprehensive dose tracking interface in edit windows
- **Added**: Quick-dose buttons for common amounts
- **Added**: Real-time dose display and feedback
- **Added**: Historical dose data persistence in CSV
- **Improved**: Dose format parsing with robust error handling
##### Punch Button Redesign
- **Moved**: Dose tracking from main input to edit window
- **Added**: Individual dose entry fields per medicine
- **Added**: "Take [Medicine]" buttons with immediate recording
- **Added**: Editable dose display areas with history
- **Improved**: User experience with centralized dose management
#### 📊 Enhanced Graph Visualization
- **Added**: Medicine dose bar charts with distinct colors
- **Added**: Interactive toggle controls for symptoms and medicines
- **Added**: Enhanced legend with multi-column layout
- **Added**: Average dosage calculations and displays
- **Added**: Professional styling with transparency and shadows
- **Improved**: Graph layout with dynamic positioning
##### Medicine Dose Plotting
- **Added**: Visual representation of daily medication intake
- **Added**: Scaled dose display (mg/10) for chart compatibility
- **Added**: Color-coded bars for each medicine
- **Added**: Semi-transparent rendering to preserve symptom visibility
- **Fixed**: Dose calculation logic for complex timestamp formats
##### Legend Enhancements
- **Added**: Multi-column legend layout (2 columns)
- **Added**: Average dosage information per medicine
- **Added**: Tracking status for medicines without current doses
- **Added**: Frame, shadow, and transparency effects
- **Improved**: Space utilization and readability
#### 🧪 Comprehensive Testing Framework
- **Added**: Professional testing infrastructure with pytest
- **Added**: 93% code coverage across 112 tests
- **Added**: Coverage reporting (HTML, XML, terminal)
- **Added**: Pre-commit testing hooks
- **Added**: Comprehensive dose calculation testing
- **Added**: UI component testing with mocking
- **Added**: Medicine plotting and legend testing
##### Test Infrastructure
- **Added**: `tests/conftest.py` with shared fixtures
- **Added**: Sample data generators for realistic testing
- **Added**: Mock loggers and temporary file management
- **Added**: Environment variable mocking
##### Pre-commit Testing
- **Added**: Automated testing before commits
- **Added**: Core functionality validation (3 essential tests)
- **Added**: Commit blocking on test failures
- **Configured**: `.pre-commit-config.yaml` with testing hooks
#### 🏗️ Technical Architecture Improvements
- **Added**: Modular component architecture
- **Added**: MedicineManager and PathologyManager classes
- **Added**: Dynamic UI generation based on configuration
- **Improved**: Separation of concerns across modules
- **Enhanced**: Error handling and logging throughout
#### 📈 Data Management Enhancements
- **Added**: Automatic data migration and backup system
- **Added**: Dynamic CSV column management
- **Added**: Robust dose string parsing
- **Improved**: Data validation and error handling
- **Enhanced**: Backward compatibility preservation
#### 🔧 Development Tools & Workflow
- **Added**: uv integration for fast package management
- **Added**: Comprehensive Makefile with development commands
- **Added**: Docker support with multi-platform builds
- **Added**: Pre-commit hooks for code quality
- **Added**: Ruff for fast Python formatting and linting
- **Improved**: Virtual environment management
#### 🚀 Deployment & Distribution
- **Added**: PyInstaller integration for standalone executables
- **Added**: Linux desktop integration
- **Added**: Automatic file installation and desktop entries
- **Added**: Docker containerization support
- **Improved**: Build and deployment automation
### Technical Details
#### Dependencies
- **Runtime**: Python 3.13+, matplotlib, pandas, tkinter, colorlog
- **Development**: pytest, pytest-cov, ruff, pre-commit, pyinstaller
- **Package Management**: uv (Rust-based, 10-100x faster than pip/Poetry)
#### Architecture
- **Frontend**: Tkinter-based GUI with dynamic component generation
- **Backend**: Pandas for data manipulation, Matplotlib for visualization
- **Storage**: CSV-based with JSON configuration files
- **Testing**: pytest with comprehensive mocking and coverage
#### File Structure
```
src/ # Main application code
├── main.py # Application entry point
├── ui_manager.py # User interface management
├── data_manager.py # CSV operations and data persistence
├── graph_manager.py # Visualization and plotting
├── medicine_manager.py # Medicine system management
└── pathology_manager.py # Symptom tracking
tests/ # Comprehensive test suite (112 tests, 93% coverage)
docs/ # Organized documentation
├── FEATURES.md # Complete feature documentation
├── DEVELOPMENT.md # Development and testing guide
└── CHANGELOG.md # This changelog
Configuration Files:
├── medicines.json # Medicine definitions (auto-generated)
├── pathologies.json # Symptom categories (auto-generated)
├── pyproject.toml # Project configuration
└── uv.lock # Dependency lock file
```
### Migration Notes
#### From Previous Versions
- **Data Compatibility**: All existing CSV data continues to work
- **Automatic Migration**: Data structure updates handled automatically
- **Backup Creation**: Automatic backups before major changes
- **No Data Loss**: Existing functionality preserved during updates
#### Configuration Migration
- **Medicine System**: Hard-coded medicines converted to JSON configuration
- **UI Updates**: Interface automatically adapts to new medicine definitions
- **Graph Integration**: Visualization system updated for dynamic medicines
### Future Roadmap
#### Planned Features (v2.0)
- **Mobile App**: Companion mobile application for dose tracking
- **Cloud Sync**: Multi-device data synchronization
- **Advanced Analytics**: Machine learning-based trend analysis
- **Reminder System**: Intelligent medication reminders
- **Doctor Integration**: Healthcare provider report generation
#### Platform Expansion
- **macOS Support**: Native macOS application
- **Windows Support**: Windows executable and installer
- **Web Interface**: Browser-based version for universal access
#### API Development
- **REST API**: External system integration
- **Plugin Architecture**: Third-party extension support
- **Data Export**: Multiple format support (JSON, XML, etc.)
---
### Contributing
This project follows semantic versioning and maintains comprehensive documentation.
For development guidelines, see [docs/DEVELOPMENT.md](docs/DEVELOPMENT.md).
For feature information, see [docs/FEATURES.md](docs/FEATURES.md).
---
*Originally from: CHANGELOG.md*
---
## 📖 Documentation Navigation
- [User Guide](USER_GUIDE.md) - Features, shortcuts, and usage
- [Developer Guide](DEVELOPER_GUIDE.md) - Development and testing
- [API Reference](API_REFERENCE.md) - Technical documentation
- [Changelog](CHANGELOG.md) - Version history
- [Documentation Index](docs/README.md) - Complete navigation
---
*This document was generated by the documentation consolidation system.*
*Last updated: 2025-08-05 14:53:36*