Releases: jacuzzicoding/AnimalCrossingGCN-Tracker
v0.7.0-alpha-preview-5
Released: April 23, 2025 3:03 AM
This release implements a comprehensive error handling strategy across the application with standardized error types and presentation components. It also introduces several reusable UI components that improve code organization, maintainability, and user experience.
Major Architecture Implementation: Error Handling Strategy
This update fully implements the error handling architecture defined in ADR-002:
- Added: Domain-specific error types with
RepositoryErrorandServiceError - Added: Standardized error propagation with Swift's
throwsmechanism - Added: Consistent error handling patterns across all application layers
- Added: User-friendly error presentation components in the UI layer
What's New
Error Handling Components
-
Implemented ErrorState Enum: Added a standardized way to represent different error states:
- Supports various error types (loading, data failures, operation failures)
- Provides consistent properties for messages, recovery suggestions, icons, and colors
- Enables a unified approach to error presentation throughout the app
-
Added ErrorBanner Component:
- Creates a consistent visual representation for error states
- Includes support for recovery actions with retry functionality
- Implements proper animations and accessibility features
- Adapts to different types of errors with appropriate styling
Reusable UI Components
-
Added ProgressBar Component:
- Provides a customizable progress indicator for completion tracking
- Supports custom colors, heights, and styling options
- Includes percentage display and optional labeling
- Implements proper animations and accessibility labels
-
Added ActivityItem Component:
- Displays recent activity entries with consistent styling
- Includes title, timestamp, and color coding
- Supports optional dividers for list presentation
- Follows the app's design language with proper accessibility
-
Added CategoryIcon Component:
- Creates standardized visual representation for museum categories
- Supports custom sizes, colors, and optional backgrounds
- Designed to work with SF Symbols for a native look and feel
- Enables consistent category representation across the app
Service Layer Improvements
-
Enhanced ExportService:
- Implemented proper error handling with ServiceError pattern
- Updated protocol methods to use throws instead of optional returns
- Replaced print statements with proper error propagation
- Prepared for future PNG/PDF export implementation
-
Refined AnalyticsService:
- Transformed silent error handling to proper ServiceError propagation
- Updated method signatures to use throws
- Fixed downstream impacts in DataManager and UI views
- Improved error context for better debugging
UI Error Handling
-
Fixed AnalyticsDashboardView:
- Added proper error handling with try/catch blocks
- Implemented graceful degradation with empty states
- Fixed icon issue ("museum.fill" replaced with "building.columns.fill")
- Resolved issues with Timeline, Categories, and Seasonal tabs
-
Updated HomeView:
- Fixed conditional binding issues with proper do-catch blocks
- Implemented consistent error handling for data loading
- Added appropriate error messaging and recovery options
- Improved accessibility with better error state descriptions
Technical Details
Error Handling Implementation
The standardized approach follows this pattern:
// Service method with proper error handling
func getCollectionData() throws -> [CollectionItem] {
do {
let items = try repository.getAll()
return items.map { mapToCollectionData($0) }
} catch let error as RepositoryError {
// Transform to domain-specific error with context
throw ServiceError.dataFetchFailed(
\"Failed to retrieve collection data: \\(error.localizedDescription)\"
)
} catch {
// Handle unexpected errors
throw ServiceError.unexpected(
\"An unexpected error occurred: \\(error.localizedDescription)\"
)
}
}
// UI implementation with error state management
@State private var errorState: ErrorState = .none
@State private var items: [CollectionItem] = []
func loadItems() {
errorState = .loading
do {
items = try dataManager.getCollectionData()
errorState = .none
} catch {
errorState = .dataLoadFailed(\"Failed to load collection data: \\(error.localizedDescription)\")
}
}
Component Integration
- ErrorBanner and ErrorState are integrated throughout the app for consistent error presentation
- ProgressBar is used in collection status displays and analytics dashboards
- ActivityItem provides consistent display of recent donation activities
- CategoryIcon is used in navigation, lists, and dashboard components
Developer Notes
- ADR-002 Implementation: This release completes the error handling strategy outlined in ADR-002
- Component Architecture: Progress made on ADR-004 with new reusable UI components
- Compiler Performance: Fixed issues in ContentView with component extraction
- UI Consistency: Improved consistency with standardized UI components
Known Issues
- HomeView modularization is still in progress
- Donate Tab implementation is planned for a future release
- Dependency injection approach (ADR-003) is not yet implemented
- Minor UI adjustments may be needed on smaller devices
Installation
- Clone the repository
- Check out the
code-cleanupbranch - Build and run on iOS 17.0+, macOS 14.0+, or visionOS 1.0+
- Xcode 15.5+ is req
What's Changed
- preview 5 by @jacuzzicoding in #43
Full Changelog: v0.7.0-alpha-preview-4...v0.7.0-alpha-preview-5
v0.7.0-alpha-preview-4
Animal Crossing GCN Tracker v0.7.0-alpha-preview-4 Release Notes
Date: April 6, 2025
This fourth preview of v0.7.0-alpha adds CSV export to the Analytics functionality. This allows exporting collection data and analytics in standard CSV format for use in external applications.
New Feature: Analytics Data Export
Added the ability to export collection data and analytics in CSV format:
- Export donation history, category completion stats, and seasonal collection data
- Set custom filenames and select which data to export
- Works on iOS and macOS with platform-specific sharing methods
- Formatted with clear section headers for easy spreadsheet import
Implementation Notes
Export Service
- Implemented a protocol-based export service architecture
- CSV output includes proper headers, delimiters, and text enclosure
- Currently supports:
- Monthly donation activity by category
- Category completion percentages
- Seasonal collection analysis
- Overall collection statistics
Platform-Specific Implementation
- iOS: Uses standard iOS share sheet
- macOS: Options to reveal in Finder or copy file path
- UI adapts to different screen sizes
User Interface
- Basic controls for selecting export options
- Loading indicators and success/error messages
- Custom filename support with reasonable defaults
Development Process
This is the first feature I built using a Claude-Gemini assisted development approach:
- Designed the high-level architecture
- Implemented following my established design patterns
- Tested across iOS and macOS
Technical Notes
- Protocol-based architecture for the export functionality
- Separated data preparation from file operations
- Platform-specific code isolated with conditional compilation
- Foundation code structure will support future PNG/PDF export
Known Issues
- PNG/PDF chart export not implemented yet
- No progress indicator for large dataset exports
- Basic UI that will need enhancement later
- Manual exports only (no automated/scheduled exports)
- No caching for exported data
- Brief UI freezing possible with large datasets
- Platform quirks:
- iOS: Share sheet doesn't remember recent destinations
- macOS: No direct email/message integration in share options
- iOS: No direct iCloud Drive save (must use share sheet)
- CSV format limitations:
- Standard double quotes for all fields
- No header customization
- No options to combine/separate data sections
- UI limitations:
- Export options don't save between sessions
- No data preview before export
- Basic error handling
- Other analytics issues:
- No advanced filtering yet
- Possible UI alignment issues on small iPhone screens
- Chart label overlap with many data points
- Northern hemisphere only for seasonal analysis
What's Changed
- Feature homescreen by @jacuzzicoding in #42
Full Changelog: v0.7.0-alpha-preview-3...v0.7.0-alpha-preview-4
v0.7.0-alpha-preview-3
Animal Crossing GCN Tracker v0.7.0-alpha-preview-3 Release Notes
Released: February 27, 2025, 2:28am
This hotfix release resolves the critical analytics functionality issue found in v0.7.0-alpha-preview-2. The analytics features now properly display donation data, progress information, and time-based statistics.
Major Fix: Town-Item Linking Resolution
This update addresses the core issue that prevented analytics features from displaying data correctly:
- Fixed: Analytics dashboard showing "0/0" for all categories
- Fixed: Timeline charts not displaying donation history
- Fixed: Seasonal analysis showing no data
- Fixed: Category progress charts not reflecting actual progress
What's New
Core Data Handling
-
Implemented Town-Item Linking System: Added
ensureItemsAreLinkedToCurrentTown()method that:- Properly links collectible items to the current town
- Uses efficient lookup sets to prevent duplicate operations
- Only links items compatible with the town's game version
- Automatically runs when the app starts or town changes
-
Enhanced Analytics Service:
- Completely rewrote the analytics data processing
- Added robust handling for items with and without donation dates
- Implemented better seasonal data calculations
- Improved filtering for timeline data
- Added caching for better performance
UI Improvements
-
Refined Timeline View:
- Simplified the interface for better usability
- Added "All Time" as default filter for better initial experience
- Fixed date range filtering to include items when appropriate
- Improved empty state display with helpful messages
-
Enhanced Dashboard:
- Optimized data loading for better performance
- Added more reliable progress displays
- Fixed category progress bar rendering
- Improved error handling for edge cases
Technical Details
Core Fix Implementation
The fix focused on proper relationship management:
func ensureItemsAreLinkedToCurrentTown() {
guard let town = currentTown else { return }
// Get all items and currently linked items
let allFossils = fossilRepository.getAll()
let townFossils = donationService.getFossilsForTown(town: town)
// Create lookup set for efficient filtering
let fossilSet = Set(townFossils.compactMap { $0.id })
// Link compatible items not already linked
for fossil in allFossils where !fossilSet.contains(fossil.id) {
if let townGame = town.game, fossil.games.contains(townGame) {
donationService.linkFossilToTown(fossil: fossil, town: town)
}
}
// Similar process for bugs, fish, and art...
// ...
}Data Flow Improvements
- Donation dates are now properly utilized for timeline analysis
- Seasonal data processing correctly handles various season formats
- Empty data states are handled more gracefully with helpful user guidance
- Caching mechanism implemented for better performance
Developer Notes
- Critical Integration: When implementing new features, always ensure proper item-town linking
- Documentation Update: Analytics Implementation Guide has been updated with detailed information
- Performance Consideration: The linking solution uses lookup sets for efficient filtering
- Game Compatibility: Only items compatible with the town's game version are linked
Known Issues
- Export functionality for analytics data is still pending
- Advanced filtering options are not yet implemented
- Minor UI alignment issues may exist on smaller iPhone screens
- Chart labels may overlap with many data points
Installation
- Clone the repository
- Check out the
feature-analyticsbranch - Build and run on iOS 17.0+, macOS 14.0+, or visionOS 1.0+
- Xcode 15.5+ is required
Released: February 27, 2025
What's Changed
- catch up to main by @jacuzzicoding in #35
- Feature analytics by @jacuzzicoding in #36

Full Changelog: v0.7.0-alpha-preview-2...v0.7.0-alpha-preview-3
v0.7.0-alpha-preview-2
Animal Crossing GCN Tracker v0.7.0-alpha-preview-2 Release Notes
Released: February 27, 2025
1:15am
This release builds upon the first v0.7.0-alpha preview build by introducing an early implementation of the Analytics GUI with significant UI layout enhancements. While the analytics functionality is not fully operational yet, this release establishes the framework for the upcoming v0.7.0-alpha full release.
Note: This is a preview build of the analytics feature. Some UI elements may not function as expected, but the core structure is in place.
What's New
- Analytics Dashboard: New visualization components for donation tracking.
- Timeline Charts: Track donation activity over time with customizable date ranges.
- Category Completion Charts: Visual representation of museum completion progress.
- Seasonal Analysis: Visualize bug and fish collection patterns by season.
- Floating UI Enhancement: Improved category switcher with better layout and usability.
Technical Improvements
Analytics Service
- Implemented a comprehensive Analytics Service:
- Created MonthlyDonationActivity tracking for timeline visualization.
- Added CategoryCompletionData for progress tracking by category.
- Implemented SeasonalData for seasonal collection analysis.
- Added data transformation pipelines for chart-ready formats.
UI Components
- Enhanced UI with new chart components:
- DonationTimelineView with time period filtering.
- CategoryCompletionChartView with pie chart visualization.
- SeasonalAnalysisView for monthly collection breakdown.
- CategoryProgressView with detailed progress indicators.
- CategoryMiniProgress for dashboard overviews.
Layout Enhancements
-
Improved floating category switcher:
- Added proper spacing between category buttons.
- Enhanced visual separation with dividers.
- Fixed UI overlap issues with proper z-indexing.
- Added minimum size constraints to prevent button squashing.
- Added horizontal scrolling for smaller screens.
-
Optimized ContentView layout:
- Added proper padding to prevent UI element overlap.
- Enhanced analytics dashboard integration.
- Improved tool placement for different platforms.
Cross-Platform Support
- Enhanced compatibility across platforms:
- Added hierarchical background support for iOS/macOS.
- Implemented platform-specific styling.
- Fixed layout constraints for multi-platform alignment.
Developer Notes
- The Analytics Service is located in the
Servicesdirectory. - Analytics UI components are in the
Views/Analyticsdirectory. - The FloatingCategorySwitcher has been completely refactored for better layout. Still needs a lot of work.
- Platform-specific code is properly isolated with compiler directives.
- The CategoryManager now tracks analytics mode state.
Future Plans
This is an interim release that moves us closer to the full v0.7.0-alpha release, which will include:
- Fully functioning analytics with real data integration.
- Performance optimizations for analytics calculations.
- Export functionality for analytics data.
- New Home Screen design.
- Global search functionality.
- Villager support with GameCube villagers database.
Known Issues
- Some UI elements in the analytics dashboard may overlap or appear improperly positioned.
- Analytics charts may not display real data correctly in all scenarios.
- The analytics dashboard sheet may have positioning issues on smaller screens.
- Not all analytics features are fully functional yet.
Installation
- Clone the repository.
- Check out the
feature-analyticsbranch. - Build and run on iOS 17.0+, macOS 14.0+, or visionOS 1.0+.
- Xcode 15.5+ is required.
Released: February 27, 2025
What's Changed
- Floating Category Fix by @jacuzzicoding in #33
- Update README.md for v0.7.0-alpha-preview-2: Introduce Analytics GUI … by @jacuzzicoding in #34
Full Changelog: v0.7.0-alpha-preview...v0.7.0-alpha-preview-2
v0.7.0-alpha-preview
Animal Crossing GCN Tracker v0.7.0-alpha-preview Release Notes
Released: February 26, 2025 3:22 AM
This release represents a significant architectural upgrade from v0.6.2-alpha, introducing major improvements to the model relationship system, a new service layer for business logic, and enhanced progress tracking functionality.
Important Notice: This version breaks save compatibility with previous versions. Users upgrading to v0.7.0-alpha-preview will need to set up their towns and collections again.
What's New
- Enhanced Town Management: Towns now store player name, game version, and creation date.
- Progress Tracking: Visual progress indicators for donation completion by category.
- Service Layer Implementation: New DonationService for centralized business logic.
- Data Transfer Objects: Added DTOs for cleaner view presentation.
- ID-based Relationships: Improved model relationships using ID references.
Technical Improvements
Service Layer
- Implemented a comprehensive Service Layer pattern:
- Created DonationService to manage relationships between towns and collectibles.
- Added methods for linking and unlinking items to towns.
- Implemented progress tracking functions to calculate completion percentages.
- Created clean separation between data access and business logic.
Data Transfer Objects
- Introduced a DTO layer for transforming models into view-friendly objects:
- Defined CollectibleDTO protocol to ensure consistency.
- Implemented FossilDTO, BugDTO, FishDTO, and ArtDTO.
- Created TownDTO with progress information.
- Added formatters for consistent date presentation.
Enhanced Model Relationships
- Updated data models with expanded relationships:
- Expanded Town model with playerName, gameVersion, and creationDate.
- Added townId to all collectible models for clean relationships.
- Implemented efficient filtering by town.
- Improved type safety with explicit protocol conformance.
DataManager Updates
- Enhanced DataManager implementation:
- Updated to use the service layer for business logic operations.
- Added methods for town-specific queries.
- Implemented DTO conversion methods.
- Added progress tracking access points.
- Created initialization function for new towns.
Developer Notes
- The Service Layer is located in the new
Servicesdirectory. - DTOs are found in
Models/DTOsdirectory. - All collectible models now have a
townIdproperty linking them to towns. - The DataManager now uses the service layer for business logic.
- Progress tracking can be accessed via methods in the DataManager.
Future Plans
This release (v0.7.0-alpha-preview) is setting the foundation for:
- Analytics GUI with data visualization in the full v0.7.0-alpha release.
- Expanded multi-game support beyond GameCube version in v0.7.x.
- Hand-drawn icons and thumbnails in v0.8.0.
- Enhanced iOS features (haptics, widgets) in v0.9.0.
- A full-featured Animal Crossing companion app by v1.0.0.
Known Issues
- Unit tests are still being developed for the new service layer.
- UI has not been fully updated to leverage all new features.
- Performance with very large datasets (1000+ items) may need optimization.
Installation
- Clone the repository.
- Check out the
code-cleanupbranch. - Build and run on iOS 17.0+, macOS 14.0+, or visionOS 1.0+.
- Xcode 15.5+ is required.
What's Changed
- Code cleanup pt 2 (v0.7.0-alpha-preview) by @jacuzzicoding in #32
Full Changelog: v0.6.2-alpha...v0.7.0-alpha-preview
v0.6.2-alpha
Animal Crossing GCN Tracker v0.6.2-alpha Release Notes
Released: February 26, 2025 12:52 AM
This release introduces significant architectural improvements aimed at enhancing code maintainability, testability, and future feature development. While user-facing changes are minimal, these structural updates lay a strong foundation for upcoming enhancements.
What's New
- Repository Pattern Implementation: Introduced a structured abstraction layer between the data model and application logic.
- Model-View Separation: Successfully separated view code from data models for better modularity.
- Code Organization: Refactored project structure to improve clarity and maintainability.
Technical Improvements
Repository Pattern
- Implemented a structured Repository Pattern:
- Defined base repository protocols for standard CRUD operations.
- Developed
CollectibleRepositoryprotocol with extended functionality for collectible items. - Introduced concrete repository implementations for all model types.
- Centralized error handling for better debugging and stability.
Model-View Separation
- Extracted views from model files to maintain a clear separation of concerns:
- Created dedicated
DetailViewfiles for each collectible type. - Updated binding implementations to preserve functionality.
- Removed SwiftUI dependencies from model files to streamline architecture.
- Created dedicated
Code Quality Enhancements
- Fixed circular references in
CollectibleItemextensions. - Resolved model ambiguity by eliminating redundant model files.
- Improved documentation for better developer accessibility.
- Strengthened error handling for increased application stability.
Developer Notes
- The Repository Pattern implementation is located in the new
Repositoriesdirectory. - Base repository functionality is centralized in
BaseRepository.swift. - Each model now has its dedicated repository with model-specific methods.
DataManagernow delegates data operations to repositories, enhancing modularity and scalability.
Future Plans
This release (v0.6.2-alpha) is a key step toward my big planned v0.7.0-alpha update, paving the way for:
- Enhanced model relationships in v0.6.5-alpha.
- Improved donation tracking in v0.6.5-alpha.
- Advanced filtering and sorting capabilities.
- Multi-town support for expanded gameplay tracking.
- New user interface with hand drawn icons.
Known Issues
- No major new issues introduced in this release.
- Refer to GitHub Issues for ongoing enhancements and bug fixes.
Installation
- Clone the repository.
- Open in Xcode 15.0 or later.
- Build and run on iOS 17.0+, macOS 14.0+, or visionOS 1.0+.
What's Changed
- Code cleanup by @jacuzzicoding in #31
Full Changelog: v0.6.1-alpha...v0.6.2-alpha
v0.6.1.-alpha; Donation Date Tracking
v0.6.1-alpha Pre-release
The Donation Timestamp Update
Released: December 18, 2024 2:05 AM
Major Features
Donation Timestamp System
- Added timestamp tracking for all museum donations
- Built DetailMoreInfoView to display donation info and (soon) much more
- Smooth SwiftData integration for persistent tracking
- Works great across iOS, iPadOS, and macOS
DetailMoreInfoView Updates
- New expandable info panel in item details
- Currently shows donation timestamps
- Built to be expandable - will be adding way more item info soon
- Clean, simple interface that works well on all devices

Backend & Technical
- Enhanced SwiftData models for timestamp support
- Better organized data model structure
- Improved donation toggles and state management
- Added debug logging because why not
UI Improvements
- New "More info" button when you click on an item. Currently shows the date, but will house all the new item info I mentioned earlier in the coming updates.
Technical Stuff
- New timestamp protocol and extensions
- Updated core models to support timestamps
- DetailMoreInfoView component for future expansion
- Organized everything better for easier updates
- Works perfectly across all Apple platforms (seriously, tested extensively)
Known Issues
- Search still only works in current category (just haven't gotten around to it)
Coming Soon
- The DetailMoreInfoView is going to become a central hub for all item information. I'm planning to include:
- Which games each item appears in (since we now track multiple AC games)
- For fish: Everything you need to know - seasons, time of day, shadow size
- For fossils: Whether it's standalone or part of a larger set, and thinking about adding some cool trivia like what prehistoric era it's from
- For art: Authentication tips and details
- Adding the ability to set custom donation dates - this way if you're coming from another tracking method or just logging based off of when you previously donated something, you can save it properly
- Python version dropping this week - I'm making this half for fun and half for practice, but there's actually a practical reason too: Swift apps are a pain to self-install, so this will let people actually test it out. Thinking about sharing it on Reddit to get some early feedback before the App Store release.
- More improvements as I think of them - I'm always open to suggestions!
Development Notes
- Xcode 15+ required
- iOS/iPadOS 17.0+ or macOS 14.0+
- Uses SwiftData & SwiftUI
- Complete feature parity across platforms
Installation
- Clone the repo
- Open in Xcode 15+
- Build and run on any supported platform
What's Changed
- Feat/timestamps by @jacuzzicoding in #28
Full Changelog: v0.6.0-alpha...v0.6.1-alpha
v0.6.0-alpha
The Town and Games Update
Released: December 16, 2024 2:05 AM
Major Features
Town System Implementation
- Added new Town feature allowing players to name their town
- Implemented SwiftData integration for town persistence
- Cross-platform town editing interface for both iOS and macOS
Multi-Game Support Framework
- Implemented ACGame enum system for game version tracking
- Added foundational multi-game support structure
- Prepared database schema for cross-game item tracking
- Updated all item models with game version support
- Reformatted data structures for better maintainability
- Added ACGCN tags to all existing items (fossils, bugs, fish, and art)
Backend Improvements
- New DataManager system for centralized data handling (mostly for the town struct for now)
- Enhanced SwiftData integration with proper error handling
- Improved cross-platform compatibility
- Optimized data fetching and persistence
UI/UX Enhancements
- Platform-specific town editing interfaces
- Custom macOS window sizing and controls
- Improved form handling and data validation
Technical Details
New Components
- Town.swift: Core town data model with SwiftData integration
- DataManager.swift: Centralized data management system
- EditTownView.swift: Cross-platform town editing interface
- Games.swift: Game enumeration and configuration system
Architecture Changes
- Implemented ObservableObject pattern for UI state management
- Added proper main thread handling for UI updates
- Enhanced error handling for database operations
- Improved model container initialization
- Restructured data models to support game versioning
- Enhanced fish collection with game-specific data
- Prepared for expansion from 40 to 80 fish entries
- Added support for multiple Animal Crossing titles:
- Animal Crossing GameCube (ACGCN)
- Wild World (ACWW)
- City Folk (ACCF)
- New Leaf (ACNL)
- New Horizons (ACNH)
Cross-Platform Support
- Platform-specific UI implementations using #if os(macOS)
- Consistent behavior across iOS and macOS
- Optimized layouts for different screen sizes
- Modern navigation APIs for iOS
Known Issues
- Search still limited to current category
- No transition animations for category switches
Future Plans
- Complete New Horizons fish data integration
- Expand fish collection to 80 entries
- Add sea creatures category
- Implement game-specific filtering system
- Consider project rebranding to reflect broader scope
- Expanded town customization options
- Multi-town support preparation
- Enhanced data migration system
- Additional platform-specific optimizations
- Villager management system (up to 15) with birthday tracking
- Calendar system with game-specific holiday tracking
- Special event tracking (fishing tourneys, etc.) based on selected game
- Donation date tracking with visual progress graphs
- Haptic feedback support for iOS
- Potential Python port for expanded desktop user base
Development Notes
- Built with Xcode 15+
- Requires iOS 17.0 or macOS 14.0 and above
- Uses SwiftData for persistence
- Implements SwiftUI for all user interfaces
Installation
- Clone the repository
- Open in Xcode 15 or later
- Build and run on iOS 17.0+ or macOS 14.0+
Feedback and Contributions
- Report issues on GitHub
- Pull requests welcome
Screenshots:
iOS
Released by Brock Jenkinson (@jacuzzicoding)
December 16, 2024
What's Changed
- Feature/multi-game-support by @jacuzzicoding in #25
- merge main by @jacuzzicoding in #26
- Feature/towns by @jacuzzicoding in #27
Full Changelog: v0.5.1-alpha...v0.6.0-alpha
v0.5.1-alpha Mac OS Fix
Release Date: December 7, 2024, 3:51 AM EST
This update resolves the critical macOS category switching bug while implementing a more organized project structure. Stable across iOS, iPadOS, and macOS platforms.
TL;DR:
- Fixed macOS category switching bug (#17)
- Implemented new modular file organization
- Enhanced
FloatingCategorySwitcherwith improved state management - Added macOS-specific UI improvements
- Better code organization and documentation
Technical Details:
- CategoryManager for state handling
- Enhanced hit testing and button interaction on macOS
- Reorganized project into clear directory structure (
App/,Models/,Views/) - Added
Constants.swiftfor utility constants - Improved navigation destination logic
- Optimized
FloatingCategorySwitcherlayout for both iOS and macOS
Screenshots:
iOS Museum Tracker
macOS Museum Tracker
Known Issues:
- Search still limited to the current category.
What's Changed
- Mac OS Fix (v0.5.1-alpha) by @jacuzzicoding in #24
Full Changelog: v0.5.0-alpha...v0.5.1-alpha
v0.5.0-alpha UI Update
Release Date: November 23, 2024 3:18 am
This update brings the first major UI overhaul while building on the code cleanup from v0.4.3-alpha. Stable on iOS/iPadOS, but has some known issues on macOS.
TLDR;
New floating category buttons instead of the top selector
Each category now has a unique icon
Main view defaults to fossils and can be switched. It is no longer a toggle on/off selection.
Enhanced search and navigation
Minor animation improvements
Foundation for future UI improvements
Technical Details:
Enhanced CollectibleItem protocol now conforms to Hashable
Added symbolName to category enum for icons
New FloatingCategorySwitcher and CollectibleRow structs
Updated CategorySection for better item presentation
Maintained existing SwiftData integration
Known Issues:
macOS breaks when switching categories (#17)
Search limited to current category
Needs additional macOS testing
What's Changed
- UI Update Alpha (Mac Issues) by @jacuzzicoding in #19
Full Changelog: v0.4.3-alpha...v0.5.0-alpha
What's Changed
- UI Update Alpha (Mac Issues) by @jacuzzicoding in #19
Full Changelog: v0.4.3-alpha...v0.5.0-alpha