Repository navigation
Release v2025.4
Release v2025.4
🚀 Major Features
Timezone Override Refactoring
- Breaking Change:
timezoneOverrideproperty changed fromStringtoInt(seconds from GMT) - Supports multiple timezone input formats: GMT offset ('+05:00'), abbreviation ('EST'), identifier ('America/New_York')
- Enhanced timezone parsing with validation and warning messages
- Added
Int+TimezoneOffsetutility for formatting timezone offsets
Time Adjustment Save Options
- New
--save-time-adjustmentsCLI option with three modes:all: Save time adjustments for all photostagged: Save only for photos that get geotaggednone: Never save time adjustments (default)
- Configurable time adjustment persistence based on geotagging outcome
Improved Error Handling
- Result-based API for cleaner error handling in
GeotagFinder - Enhanced error logging in
LoggingGeotaggingItem - Simplified error handling throughout the codebase
🔧 Technical Improvements
Architecture Enhancements
- Removed
timeOffsetandtimezoneOverridefromGeotaggingItemProtocol - Encapsulated time handling within
ImageIOGeotaggingItemusing composition pattern - Created
TimeOffsetGeoAnchorsLoaderfor anchor time offset handling - Protocol-based design improvements with cleaner separation of concerns
Code Quality
- Consolidated
ImageIOWritermethods into comprehensive interface - Added protocol extensions for convenience methods
- Enhanced test coverage with new mock classes
- Improved method signatures and API consistency
🔄 CI/CD & Development
GitHub Actions Integration
- Added comprehensive CI workflow for automated testing
- Multi-architecture builds (arm64 + x86_64)
- Parallel test execution for faster feedback
- Swift package caching for improved build performance
- CLI functionality validation in CI pipeline
Build & Release Process
- Universal binary support (arm64 + x86_64)
- Automated version management in release script
- Enhanced test validation before releases
📁 Files Changed
Sources/Geotagger/GeotaggingItemProtocol.swift- Protocol simplificationSources/Geotagger/ImageIO/ImageIOGeotaggingItem.swift- Time handling encapsulationSources/Geotagger/ImageIO/ImageIOWriter.swift- Method consolidationSources/CLI/GeoTaggerCLI.swift- Enhanced timezone parsing with warningsSources/CLI/TimeZoneParser.swift- New timezone parsing utilitiesSources/Geotagger/TimeAdjustmentSaveMode.swift- New save mode enumSources/Geotagger/Int+TimezoneOffset.swift- Timezone formatting utilities.github/workflows/ci.yml- New GitHub Actions workflow
🧪 Testing
- All 33 tests passing
- Enhanced test coverage for timezone handling
- New test cases for time adjustment save modes
- Mock classes for improved test isolation
📦 Download
- Universal Binary: Compatible with both Intel and Apple Silicon Macs
- Size: ~5.2MB
- Requirements: macOS 11.0+
🤖 Generated with Claude Code