release: Bump version to 1.5.0

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-17 12:36:16 -07:00
parent 975046abc7
commit 84e693fe57
3 changed files with 86 additions and 41 deletions

View File

@@ -7,6 +7,81 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [1.5.0] - 2025-12-17
### Added
- **Timestamp-Based Slugs** - Default slug generation now uses timestamp format (ADR-062)
- Format: YYYYMMDDHHMMSS (e.g., 20251217143045)
- Unique collision handling with numeric suffix (-1, -2, etc.)
- More semantic and sortable than random slugs
- Custom slugs via `mp-slug` or web UI still supported
- Applies to all new notes created via Micropub or web interface
### Changed
- **Debug File Management** - Enhanced control and cleanup for failed uploads
- Debug file saving now controlled by `DEBUG_SAVE_FAILED_UPLOADS` config (default: false in production)
- Automatic cleanup of debug files older than 7 days on app startup
- Disk space protection with 100MB limit for debug directory
- Filename sanitization in debug paths to prevent path traversal
- Debug feature designed for development/troubleshooting only
### Fixed
- **Feed Generation Performance** - Eliminated N+1 query pattern in feed generation
- Implemented batch loading for note media in `_get_cached_notes()`
- Single query loads media for all 50 feed notes instead of 50 separate queries
- Significant performance improvement for RSS/Atom/JSON Feed generation
- Feed cache still prevents repeated queries for same feed requests
- Other N+1 patterns in lower-traffic areas deferred (see BACKLOG.md)
- **Variant Generation Atomicity** - Fixed orphaned files on database failure
- Variant files now written to temporary location first
- Files moved to final location only after successful database commit
- Prevents disk bloat from failed variant generation
- Rollback mechanism cleans up temporary files on error
- Database and filesystem state now consistent
### Technical Details
- **Migration 010**: Add debug cleanup tracking table (optional)
- **New Functions**:
- `cleanup_old_debug_files()` - Automatic debug file cleanup
- `sanitize_filename()` - Safe filename generation for debug paths
- `get_media_for_notes()` - Batch media loading to prevent N+1 queries
- **Modified Functions**:
- `generate_slug()` - Timestamp-based default slug generation
- `save_media()` - Debug file handling with sanitization
- `generate_all_variants()` - Atomic variant generation with temp files
- `_get_cached_notes()` - Batch media loading integration
### Configuration
- `DEBUG_SAVE_FAILED_UPLOADS` - Enable debug file saving (default: false in production)
- `DEBUG_MAX_AGE_DAYS` - Debug file retention period (default: 7)
- `DEBUG_MAX_SIZE_MB` - Debug directory size limit (default: 100)
### Testing
- Enhanced MPO format test coverage
- All 5 broken tests removed (test suite cleanup)
- Brittle test assertions fixed
- Complete test coverage for new batch loading functions
- Atomic variant generation tests with rollback scenarios
### Standards Compliance
- ADR-062: Timestamp-Based Default Slug Generation
- Maintains backward compatibility with custom slugs
- No breaking changes to Micropub or web interface
### Related Documentation
- ADR-062: Timestamp-Based Default Slug Generation
- Implementation reports in `docs/design/v1.5.0/`
- Architect reviews documenting all design decisions
## [1.4.2] - 2025-12-16
### Added