All notable changes to BlackCat will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
-
Sagawa Express (佐川急便) API Integration: Added full support for tracking packages from Sagawa Express
- New
SagawaRequestandSagawaresponse models with HTML parsing - Completion handlers, async/await, and Combine Future support
- Comprehensive unit tests for Sagawa API client
- New
-
Japan Post (日本郵便) Support: Added tracking capability for Japan Post packages
- Support for domestic packages (11-13 digits)
- Support for international mail format (e.g., EA123456789JP)
-
DeliveryCarrier Model: New unified carrier model (
BlackCat/Models/DeliveryCarrier.swift)- Carrier enumeration: Yamato, Sagawa, Japan Post
- Brand colors and SF Symbol icons for each carrier
- Tracking URL generation for each carrier's website
- Carrier-specific tracking number validation
- Smart Tracking Number Detection: Automatically identifies carrier from tracking number pattern
- Yamato: Numbers starting with 1-4 (12 digits)
- Sagawa: Numbers starting with 5-7 (12 digits)
- Japan Post: 11-13 digits or international format
- Real-time detection feedback with confidence scoring
- Support for multiple candidates when pattern is ambiguous
-
Modernized AddListView: Complete redesign of the package registration screen
- New carrier selection cards with brand colors
- Modern text field with validation indicators
- Shake animation for invalid input
- Success overlay animation
- Barcode scan button (UI ready)
- Improved accessibility support with VoiceOver
-
Widget Improvements: Enhanced home screen widget
- Dark mode support for widget background
- Improved delivery status display
-
AddListViewModel: Enhanced input validation
- Debounced carrier auto-detection (300ms)
- Carrier-specific tracking number format validation
- Support for international postal format validation
- Improved error messaging
-
Color Extensions: Added new design system colors
- Primary gradients and accent colors
- Background variants for cards and sections
- Shadow levels for depth effects
-
Notification Extensions: New notification name extensions for app-wide events
- Fixed layout issues in delivery list view
- Improved empty state handling for API calls
- Updated fastlane and dependencies to resolve security vulnerabilities
- Updated rexml and webrick gems for security patches
- Extended APIClient with Sagawa endpoint support
- Enhanced APIError handling with more descriptive error types
- Added HapticManager integration for tactile feedback
- Improved Combine pipeline for reactive state management
- Initial multi-carrier groundwork
- Core tracking functionality for Yamato Transport
-
Print Statements: Debug print statements exist in
BackgroundRefreshManager.swiftandNotificationManager.swift. These are intentional for background task debugging but should be wrapped in#if DEBUGblocks for production. -
Unused Variable: In
Domain/Endpoints/Sagawa.swiftline 67, theindexvariable in the for loop is unused. Consider usingfor line in linesorfor (_, line) in lines.enumerated(). -
TODO/FIXME Comments: No TODO or FIXME comments found in the codebase.
- 27 files modified
- ~5,000 lines added
- ~300 lines removed
BlackCat/Models/DeliveryCarrier.swift- Carrier enumeration and detection logicDomain/Endpoints/Sagawa.swift- Sagawa API models and parserDomainTests/SagawaTests.swift- Unit tests for Sagawa API