Commit Graph

30 Commits

Author SHA1 Message Date
Trey t
035dd6f5de docs: add TDD test rewrite design
Specification-first + property-based TDD methodology to surface
logic bugs by testing expected behavior, not current implementation.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 11:11:46 -06:00
Trey t
966a580def docs: add unit test rewrite design
Comprehensive plan to delete broken tests and create new Swift Testing
coverage for Planning Engine, Domain Models, and Services with parallel
execution across multiple simulators.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 10:22:25 -06:00
Trey t
8bba5a1592 docs(plans): add brutalist app-wide implementation plan
Detailed step-by-step plan for extending brutalist style to:
- TripDetailView
- SavedTripsListView
- ScheduleListView
- SettingsView

Includes StyleProvider protocol, adaptive routers, and complete
code snippets for each task.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 09:13:10 -06:00
Trey t
dc43bf0d53 docs: add brutalist app-wide design spec
Design for extending Brutalist style from home-screen-only to app-wide:
- StyleProvider protocol for shape/typography language
- Adaptive view routers for each major screen
- Brutalist variants for TripDetail, MyTrips, Schedule, Settings
- Colors still controlled by user's selected Theme

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 09:04:32 -06:00
Trey t
2b16420fb4 docs: add sharing overhaul implementation plan
13-task plan covering:
- Delete old ProgressCardGenerator
- Create ShareableContent protocol and 8 theme presets
- Create shared card components (header, footer, stats, maps)
- Create generators for progress, trip, and achievement cards
- Create ShareService for Instagram and system sharing
- Create SharePreviewView and ShareButton
- Integrate into ProgressTabView, TripDetailView, AchievementsListView

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 22:34:17 -06:00
Trey t
c989b7b1d1 docs: add sharing system overhaul design
Complete redesign of sharing to support:
- Trip summary cards with route maps
- 4 achievement card types (spotlight, collection, milestone, context)
- Stadium progress cards
- 8 user-customizable color themes
- Instagram Stories as primary target (1080×1920)
- Contextual share buttons throughout app

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 22:28:21 -06:00
Trey t
16514a40ac Merge branch 'feature/sync-reliability' 2026-01-13 22:09:26 -06:00
Trey t
8e78828bde docs: add group trip polling implementation plan
12 tasks with TDD workflow:
- Domain, CloudKit, and SwiftData models
- PollService for CloudKit operations
- Creation and detail ViewModels
- SwiftUI views with vote ranking
- Deep link handling
2026-01-13 21:01:58 -06:00
Trey t
cd68ba834b docs: add group trip polling design
Design for CloudKit-based group coordination feature:
- Ranked choice voting on trip options
- Share via link with 6-char codes
- Anonymous results (aggregate only)
- Real-time updates via CloudKit subscriptions

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 20:47:30 -06:00
Trey t
5686af262f feat(sync): add pagination, cancellation, and network restoration
- CloudKit pagination: fetchAllRecords() handles >400 record batches
  with cursor-based pagination (400 records per page)
- Cancellation support: SyncCancellationToken protocol enables graceful
  sync termination when background tasks expire
- Per-entity progress: SyncState now tracks timestamps per entity type
  so interrupted syncs resume where they left off
- NetworkMonitor: NWPathMonitor integration triggers sync on network
  restoration with 2.5s debounce to handle WiFi↔cellular flapping
- wasCancelled flag in SyncResult distinguishes partial from full syncs

This addresses critical data sync issues:
- CloudKit queries were limited to ~400 records but bundled data has ~5000 games
- Background tasks could be killed mid-sync without saving progress
- App had no awareness of network state changes

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 19:18:55 -06:00
Trey t
b433e1dad5 docs: add sync reliability design for CloudKit pagination and cancellation
Design covers three improvements:
- Paginated CloudKit fetches to handle >400 records
- Graceful cancellation with per-entity progress saving
- NWPathMonitor for auto-sync on network restoration

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 18:49:12 -06:00
Trey t
f180e5bfed feat(sync): add CloudKit sync for dynamic sports
- Add CKSport model to parse CloudKit Sport records
- Add fetchSportsForSync() to CloudKitService for delta fetching
- Add syncSports() and mergeSport() to CanonicalSyncService
- Update DataProvider with dynamicSports support and allSports computed property
- Update MockAppDataProvider with matching dynamic sports support
- Add comprehensive documentation for adding new sports

The app can now sync sport definitions from CloudKit, enabling new sports
to be added without app updates. Sports are fetched, merged into SwiftData,
and exposed via AppDataProvider.allSports alongside built-in Sport enum cases.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 18:27:56 -06:00
Trey t
3d40145ffb docs: update planning documents and todos
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 13:16:52 -06:00
Trey t
e4204175ea docs: add In-App Purchase implementation plan
14 bite-sized TDD tasks covering:
- StoreKit configuration file setup
- StoreManager with entitlement checking
- PaywallView and OnboardingPaywallView
- ProGate view modifier for feature gating
- Trip saving, PDF export, and Progress tab gating
- Settings subscription management

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 10:11:02 -06:00
Trey t
56138d3282 docs: add in-app purchase and subscription system design
Freemium model with StoreKit 2 local-only entitlement checking.
Pro features: unlimited trips, PDF export, progress tracking.
Monthly ($4.99) and annual ($49.99) pricing with Family Sharing.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-13 10:07:08 -06:00
Trey t
f8204007e6 docs: add loading redesign implementation plan
13 tasks covering LoadingSpinner, LoadingPlaceholder, LoadingSheet
creation, ProgressView replacements, and deprecated component removal.
Includes TDD with 13 new tests.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 22:17:33 -06:00
Trey t
7cb5aafd67 docs: add loading system redesign design
Complete design spec for overhauling all loading views, progress
indicators, and spinners. Covers LoadingSpinner, LoadingPlaceholder,
and LoadingSheet components with Apple-style minimal aesthetic.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 22:14:57 -06:00
Trey t
9531ed1008 docs: add Trip Planning Enhancements implementation plan
12 tasks with TDD approach:
- TripWizardViewModel with reveal state logic
- 8 step components (PlanningMode, Sports, Dates, Regions, etc.)
- TripWizardView container with auto-scroll
- Settings toggle for classic vs wizard mode
- Integration tests

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 19:38:05 -06:00
Trey t
4999c90595 docs: add dynamic sports via CloudKit design
Hybrid approach: keep Sport enum for existing 7 sports,
add DynamicSport struct for CloudKit-defined leagues.
Unified via AnySport protocol for seamless UI integration.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 19:32:42 -06:00
Trey t
3530b31cca docs: add 3 feature enhancement design plans
- Trip Planning Enhancements: progressive reveal single-screen wizard
- Progress Tracking Enhancements: multiple visits, games history, zoomable map
- Polish Enhancements: grouped sorting, 100+ planning tips

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 19:07:46 -06:00
Trey t
aa0bc4def8 docs: add bug fixes design for 9 TODO issues
Covers performance (launch freeze, list lag), UI polish (animations,
missing location info, timezone display), and scraper alias fix.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 18:06:27 -06:00
Trey t
b514d2119c docs: add delta sync implementation plan
16-task TDD implementation plan for:
- CloudKit delta sync using modificationDate
- Remove 90-day game browsing limit
- Rename fetch* to filter* for clarity
- Add allGames/allRichGames methods

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 10:44:42 -06:00
Trey t
ffe5c0b6f7 docs: add delta sync and game browsing design
Addresses issue where Houston Astros only shows 7 games in "By Games" mode.
Documents plan to remove arbitrary date restrictions and implement proper
delta sync using CloudKit modificationDate.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-12 10:41:17 -06:00
Trey t
4b2cacaeba docs: add canonical ID refactor design
Design to eliminate UUID layer and use canonical IDs as the single
stadium/team/game identifier throughout the client. Key changes:
- Domain models use String IDs (canonical IDs)
- Remove UUID mapping dictionaries from DataProvider
- Simplify AchievementEngine (delete resolution helper)
- StadiumVisit uses single stadiumId field

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 22:56:37 -06:00
Trey t
c2f52aaccc docs: add bug fixes design for 12 planning and UI issues
Covers:
- Planning mode bugs (follow team location, must-stop filtering, date range)
- UI improvements (sort options, map locking, today highlight)
- Coast-to-coast filter to show top 2 by stops

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 17:55:08 -06:00
Trey t
e7fb3cfbbe docs: add WCAG 2.1 AA accessibility design
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 11:14:40 -06:00
Trey t
769342addc docs: add privacy policy and terms of service design
Plain English privacy policy and ToS for freemium iOS app.
Key decisions: 13+ age requirement, no accounts, CloudKit
analytics, Texas jurisdiction.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 10:55:34 -06:00
Trey t
8affa3ce0d docs: add Dynamic Type implementation design
Replace all custom font sizes with Apple's built-in text styles
for accessibility compliance. Remove Theme.FontSize enum entirely.
Export files keep fixed sizes for consistent PDF output.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 10:04:13 -06:00
Trey t
3aef39adba docs: add Follow Team mode design
New 4th planning mode for fans to build trips around their team's
schedule (home + away games). Includes region/date filtering,
flexible start/end location, and repeat city handling.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 09:56:13 -06:00
Trey t
5fba9e6052 docs: add localization design
String Catalogs + AI translation pipeline for 5 languages:
Spanish, French, German, Japanese, Chinese (Simplified)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 01:55:42 -06:00