Skip to content

Release v2025.4

Choose a tag to compare

@leonspok leonspok released this 27 Jun 23:05
· 19 commits to main since this release
0acff0e

Release v2025.4

🚀 Major Features

Timezone Override Refactoring

  • Breaking Change: timezoneOverride property changed from String to Int (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+TimezoneOffset utility for formatting timezone offsets

Time Adjustment Save Options

  • New --save-time-adjustments CLI option with three modes:
    • all: Save time adjustments for all photos
    • tagged: Save only for photos that get geotagged
    • none: 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 timeOffset and timezoneOverride from GeotaggingItemProtocol
  • Encapsulated time handling within ImageIOGeotaggingItem using composition pattern
  • Created TimeOffsetGeoAnchorsLoader for anchor time offset handling
  • Protocol-based design improvements with cleaner separation of concerns

Code Quality

  • Consolidated ImageIOWriter methods 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 simplification
  • Sources/Geotagger/ImageIO/ImageIOGeotaggingItem.swift - Time handling encapsulation
  • Sources/Geotagger/ImageIO/ImageIOWriter.swift - Method consolidation
  • Sources/CLI/GeoTaggerCLI.swift - Enhanced timezone parsing with warnings
  • Sources/CLI/TimeZoneParser.swift - New timezone parsing utilities
  • Sources/Geotagger/TimeAdjustmentSaveMode.swift - New save mode enum
  • Sources/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