The Green Monster (Fenway) and Ivy League (Wrigley) achievements weren't working because: 1. Symbolic IDs use lowercase sport (stadium_mlb_bos) 2. Sport enum uses uppercase raw values (MLB) 3. Visits store stadium UUIDs, not symbolic IDs Added resolveSymbolicStadiumId() helper that: - Uppercases the sport string before Sport(rawValue:) - Looks up team by abbreviation and sport - Returns the team's stadiumId as UUID string Also fixed: - getStadiumIdsForLeague returns UUID strings (not symbolic IDs) - AchievementProgress.isEarned computed from progress OR stored record - getStadiumIdsForDivision queries CanonicalTeam properly Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5.2 KiB
Plan: Remove College Basketball (CBB) from iOS App
Status: Complete Created: 2026-01-11 Last Updated: 2026-01-11
Overview
Goal: Permanently remove all traces of College Basketball (CBB) from the SportsTime iOS app.
Reason: Too many games (~5,000+ per season with ~360 Division I teams) creates complexity without sufficient user value.
Scope:
- Remove CBB from Sport enum and all related properties
- Remove CBB theme colors
- Remove CBB from documentation
- No backend/CloudKit changes required
- No saved trip migration needed (no users have CBB trips)
Pre-Implementation Checklist
- Confirm no active users have saved trips with CBB games
- Verify CloudKit has no CBB data that needs cleanup
Phase 1: Core Model Removal
Status: Not Started
Remove CBB from the Sport enum and its associated properties.
| Status | Task | File | Details |
|---|---|---|---|
| [ ] | 1.1 Remove .cbb enum case |
Core/Models/Domain/Sport.swift |
Line 17: case cbb = "CBB" |
| [ ] | 1.2 Remove CBB displayName | Core/Models/Domain/Sport.swift |
Line 30: "College Basketball" in displayName computed property |
| [ ] | 1.3 Remove CBB iconName | Core/Models/Domain/Sport.swift |
Line 43: "basketball.fill" in iconName computed property |
| [ ] | 1.4 Remove CBB color | Core/Models/Domain/Sport.swift |
Line 56: .mint in color computed property |
| [ ] | 1.5 Remove CBB seasonMonths | Core/Models/Domain/Sport.swift |
Line 70: (11, 4) in seasonMonths computed property |
| [ ] | 1.6 Remove CBB from Sport.supported |
Core/Models/Domain/Sport.swift |
Line 90: Remove .cbb from supported array |
Verification: Build succeeds with no compiler errors about missing switch cases.
Phase 2: Theme Cleanup
Status: Not Started
Remove CBB-specific theme colors and view modifier mappings.
| Status | Task | File | Details |
|---|---|---|---|
| [ ] | 2.1 Remove cbbMint color constant |
Core/Theme/Theme.swift |
Line 131: static let cbbMint = Color(hex: "3EB489") |
| [ ] | 2.2 Remove CBB case from themeColor |
Core/Theme/ViewModifiers.swift |
Line 220: case .cbb: return Theme.cbbMint |
Verification: Build succeeds, no references to Theme.cbbMint remain.
Phase 3: Documentation Updates
Status: Not Started
Update all documentation to reflect CBB removal.
| Status | Task | File | Details |
|---|---|---|---|
| [ ] | 3.1 Remove CBB from Supported Leagues table | README.md |
Line 29: Remove CBB row from table |
| [ ] | 3.2 Update league count in features | README.md |
Line 7: Change "8 professional and college leagues" to reflect new count |
| [ ] | 3.3 Remove CBB section from data scraping docs | docs/DATA_SCRAPING.md |
Lines 114-125: Remove entire CBB section |
| [ ] | 3.4 Update TO-DOS.md | TO-DOS.md |
Remove or mark complete task #10 |
Verification: Documentation accurately reflects supported sports.
Phase 4: Verification & Testing
Status: Not Started
Ensure the app builds, runs, and all tests pass.
| Status | Task | Command/Action | Expected Result |
|---|---|---|---|
| [ ] | 4.1 Full build | xcodebuild ... build |
BUILD SUCCEEDED |
| [ ] | 4.2 Run all tests | xcodebuild ... test |
All tests pass |
| [ ] | 4.3 Manual UI verification | Launch in Simulator | CBB does not appear in any sport picker, filter, or settings |
| [ ] | 4.4 Verify Sport.supported count | Code inspection | Array has correct number of sports (7 remaining) |
Build Command:
xcodebuild -project SportsTime.xcodeproj -scheme SportsTime -destination 'platform=iOS Simulator,name=iPhone 17,OS=26.2' build
Test Command:
xcodebuild -project SportsTime.xcodeproj -scheme SportsTime -destination 'platform=iOS Simulator,name=iPhone 17,OS=26.2' test
Phase 5: Commit & Cleanup
Status: Not Started
| Status | Task | Details |
|---|---|---|
| [ ] | 5.1 Stage all changes | git add -A |
| [ ] | 5.2 Create commit | Message: chore: remove college basketball (CBB) from iOS app |
| [ ] | 5.3 Push to remote | If on feature branch |
| [ ] | 5.4 Mark plan complete | Update this file's status to "Complete" |
Files Changed Summary
| File | Change Type | Lines Affected |
|---|---|---|
Core/Models/Domain/Sport.swift |
Modify | Remove CBB from enum + 5 computed properties |
Core/Theme/Theme.swift |
Modify | Remove 1 color constant |
Core/Theme/ViewModifiers.swift |
Modify | Remove 1 switch case |
README.md |
Modify | Update table + feature count |
docs/DATA_SCRAPING.md |
Modify | Remove ~12 lines (CBB section) |
TO-DOS.md |
Modify | Remove/update task #10 |
Total: 6 files
Rollback Plan
If issues arise, CBB can be restored by:
git revert <commit-hash>the removal commit- No data migration needed (CBB had no data)
Notes
- Views using
Sport.supportedwill automatically exclude CBB once removed from the array - No CBB-specific views, view models, or tests exist
- Python scraper already has no CBB implementation
- No bundled JSON contains CBB data
Progress Log
| Date | Phase | Notes |
|---|---|---|
| 2026-01-11 | Planning | Plan created |