# Release v1.1.1

**Release Date**: October 23, 2025

This is a patch release that restores Python 3.10 compatibility while maintaining support for newer Python versions.

## 👌 Improvements

### Python 3.10 Support Restored

Python 3.10 support has been re-added to the project. Python 3.10 remains actively supported until October 2026, making it an important version to maintain compatibility with.

**Key details:**
- Python 3.10 is now fully supported alongside Python 3.11, 3.12, and 3.13
- All existing features work identically across all supported Python versions
- Comprehensive test coverage ensures compatibility

### Technical Implementation

**Version-Specific Sphinx Constraints:**
- Python 3.10 is limited to **Sphinx 8.1.x** (maximum 8.1.3)
- Python 3.11+ continues to use **Sphinx 8.2+** as normal
- This constraint exists because Sphinx 8.2.0+ requires Python >=3.11

The test infrastructure automatically handles these version-specific requirements, ensuring correct behavior across all combinations.

### Test Matrix Updates

**Supported Combinations:**
- Python 3.10, 3.11, 3.12: Sphinx 6, 7, 8
- Python 3.13: Sphinx 7, 8

**Total: 11 test environments** (excludes Python 3.13 + Sphinx 6)

Python 3.13 + Sphinx 6 was excluded because Sphinx 6.2.1 generates 1870+ deprecation warnings on Python 3.13 due to its use of deprecated `datetime.utcfromtimestamp()`. This is an unlikely real-world combination.

### CI/CD Improvements

- Updated GitHub Actions CI matrix to include Python 3.10
- Configured codecov to use Python 3.12 + Sphinx 8 as baseline
- Implemented tokenless codecov uploads for public repository
- Added version-specific test fixtures for Sphinx 8.1 vs 8.2+ compatibility

## 📦 Installation

Install or upgrade via pip:

```bash
pip install --upgrade sphinx-exercise
```

## 🔄 Migration Notes

**If you're upgrading from v1.1.0:**
- No breaking changes
- No action required
- Python 3.10 users can now upgrade safely

**If you're on Python 3.10:**
- You can now use sphinx-exercise v1.1.1
- Sphinx 8 support is limited to 8.1.x on Python 3.10
- All features work identically to newer Python versions

## 🐛 Bug Fixes

- Fixed test fixtures to handle Sphinx 8.1.x vs 8.2+ XML output differences
- Ensured consistent test behavior across all Python/Sphinx combinations

## 📝 Full Changelog

For complete details, see the [CHANGELOG.md](https://github.com/executablebooks/sphinx-exercise/blob/main/CHANGELOG.md).

## 🙏 Acknowledgments

Thank you to all contributors and users who reported the need for Python 3.10 support!
