TODO Inventory
This document catalogs all TODO comments in the codebase, organized by category and priority for planning future development work.
Summary
| Category | Count | Priority |
|---|---|---|
| KMP Migration Blockers | 8 | High |
| Future Features | 6 | Medium |
| Implementation Gaps | 7 | Medium |
| Test Infrastructure | 8 | Low |
| Navigation/UI | 5 | Low |
| Documentation TODOs | 8 | Low |
KMP Migration Blockers
These TODOs block further Kotlin Multiplatform migration work.
BowSetupRepository Migration
Files affected:
shared/data/src/commonMain/kotlin/com/archeryapprentice/data/repositories/RoundRepository.kt
// TODO: Add bow setup cleanup when BowSetupRepository migrates to shared
// TODO: Fetch bow setup when BowSetupRepository migrates to shared
// TODO: Validate bow setup when BowSetupRepository migrates to shared
val bowSetup: Any?, // TODO: Type as BowSetupWithEquipment when equipment migrates to sharedContext: RoundRepository in shared KMP module cannot fully function until BowSetupRepository is migrated. Currently uses Any? type for bow setup data.
OfflineScoreQueue Migration
Files affected:
app/src/main/java/com/archeryapprentice/data/dao/OfflineScoreQueueDao.ktapp/src/main/java/com/archeryapprentice/data/repository/OfflineScoreQueueManager.kt
// TODO: Re-enable when OfflineScoreQueueEntry is migrated to shared:database
// TODO: Re-enable when OfflineScoreQueueEntry is migrated to shared:domainContext: Offline score queue functionality is disabled pending KMP migration of the queue entry data model.
Future Features
Team Mode
Files affected:
docs/scoring_data_model.mdapp/src/main/java/com/archeryapprentice/ui/roundScoring/RoundDetailsScreen.ktapp/src/main/java/com/archeryapprentice/ui/roundScoring/RoundViewModel.ktdocs/ios-guides/screens/06-ROUND-DETAILS-GUIDE.md
const val TEAM_MODE: Boolean = false // TODO: Flip to true when shipping
val subject = analyticsDelegate.resolveMuSubject(round, null) // TODO: feed Settings when team mode is added
// TODO: Load aggregate stats when all participants are complete
// TODO: Team mode supportContext: Team scoring mode is scaffolded but not yet enabled. Feature flag exists but is set to false.
Accessories Support
Files affected:
app/src/main/java/com/archeryapprentice/domain/repository/BowSetupRepository.kt
// TODO: Add accessories when implemented
accessories = emptyList() // TODO: Add when accessories are implementedContext: Equipment system supports accessories in the data model, but UI is not yet implemented.
Bow Type Derivation
Files affected:
app/src/main/java/com/archeryapprentice/domain/services/RoundPublishingService.kt
bowType = null, // TODO: Future enhancement - derive from equipment dataContext: Published rounds could include bow type (recurve, compound, etc.) derived from the user’s equipment setup.
Implementation Gaps
iOS Services Needing Real Implementations
Files affected:
iosApp/ArcheryApprentice/ArcheryApprentice/ArcheryApprenticeApp.swift
verificationService: PreviewVerificationService(), // TODO: Replace with real serviceContext: Verification deep link handler uses preview service. Needs real Firebase-backed implementation.
iOS ViewModel TODOs
Files affected:
iosApp/ArcheryApprentice/ArcheryApprentice/ViewModels/RoundCreationViewModel.swift
// TODO: Integrate actual RoundRepository when database is set up
// TODO: Repository not yet integrated - return mock ID for now
distanceUnit: "meters", // TODO: Support user preferenceContext: Round creation on iOS uses mock data. Needs KMP repository integration.
Tournament Settings
Files affected:
iosApp/ArcheryApprentice/ArcheryApprentice/ViewModels/TournamentScoringViewModel.swift
// TODO: Load these from TournamentSettings.adminSettings when settings loading is implementedContext: Tournament scoring uses hardcoded settings instead of loading from Firestore.
Android Tournament Features
Files affected:
app/src/main/java/com/archeryapprentice/data/repository/impl/OfflineTournamentRepository.kt
// TODO: Store in local database - would need to create TournamentScoreDao
// TODO: Implement local score storage and observation
// TODO: Implement local tournament round storage
// TODO: Implement local tournament round retrieval
// TODO: Implement local tournament round status updates
// TODO: Implement local tournament round deletionContext: Offline tournament functionality stubs. Would enable offline-first tournament scoring.
Score Conflict Resolution
Files affected:
app/src/main/java/com/archeryapprentice/domain/services/ScoreConflictResolutionService.ktapp/src/main/java/com/archeryapprentice/ui/roundScoring/LiveScoringViewModel.kt
localVersion = 1, // TODO: Add version tracking to local EndScore
// TODO: Apply resolved score to local session if neededContext: Version tracking for conflict resolution is hardcoded. Needs proper implementation for multi-device sync.
Test Infrastructure
iOS Test Gaps
Files affected:
iosApp/ArcheryApprentice/ArcheryApprentice/Views/RoundListView.swift
// TODO: Add preview with mock repositoryAndroid Test Gaps
Files affected:
app/src/test/java/com/archeryapprentice/ui/roundScoring/ActiveScoringScreenTest.ktapp/src/test/java/com/archeryapprentice/ui/roundScoring/RoundViewModelTeamScaffoldingTest.ktapp/src/test/java/com/archeryapprentice/data/repository/impl/OfflineTournamentRepositoryTest.kt
// TODO: Add tests for current ActiveScoringScreen implementation
// TODO: Create actual RoundViewModel instance for testing (3 occurrences)
// TODO: Fix this test - temporarily disabled due to mocking complexityAlternative Testing Approaches
Files affected:
app/build.gradle.kts
// TODO: Investigate alternative testing approaches (native Android instrumented tests)Navigation/UI
Equipment Navigation
Files affected:
app/src/main/java/com/archeryapprentice/ui/equipment/navigation/DetailEquipmentNavGraph.ktiosApp/ArcheryApprentice/ArcheryApprentice/Views/Equipment/IndividualEquipmentPerformanceView.swiftapp/src/main/java/com/archeryapprentice/ui/equipment/components/IndividualEquipmentPerformanceTab.kt
// TODO: Add other detail screens as we create them
// TODO: Navigate to rounds filtered by this equipment// TODO: Navigate to filtered rounds listContext: Equipment detail screens need navigation to filtered round history.
Tournament Navigation
Files affected:
app/src/main/java/com/archeryapprentice/ui/tournament/navigation/TournamentNavGraph.kt
// TODO: Navigate to tournament lobby when implemented
// TODO: Implement TournamentLobbyScreen in future phaseRound Management Navigation
Files affected:
app/src/main/java/com/archeryapprentice/ui/roundScoring/HistoricalRoundsScreen.ktapp/src/main/java/com/archeryapprentice/ui/roundScoring/RoundScoringEntryScreen.kt
// TODO: RoundManagementViewModel doesn't handle session management (3 occurrences)
// TODO: Navigate to template management screenSettings/Cleanup
Data Cleanup Features
Files affected:
iosApp/ArcheryApprentice/ArcheryApprentice/Screens/SettingsTabView.swift
// TODO: Phase 5f+ - Add comprehensive data cleanup:
// - Clear all local rounds
// - Clear published rounds from Firestore
// - Clear leaderboard entries
// - Factory reset optionContext: Settings screen needs data management options for user privacy and testing.
Equipment Analytics
Files affected:
docs/ios-guides/screens/10-EQUIPMENT-ANALYTICS-GUIDE.mdapp/src/main/java/com/archeryapprentice/ui/equipment/viewModels/componentViewModels/BowSetupViewModel.ktapp/src/main/java/com/archeryapprentice/ui/equipment/components/IndividualEquipmentPerformanceTab.kt
// TODO: Implement JSON export
// TODO: Replace with real repository-driven stats
// TODO: Add drift calculation
// TODO: Replace with actual daily breakdown query
// TODO: Implement proper DAO queries for individual equipment stats
bestScore = 0, // TODO: Calculate from rounds
rounds = 1, // TODO: Aggregate properlyContext: Equipment analytics features are partially implemented with placeholder calculations.
Logging/Debugging
Files affected:
shared/data/src/commonMain/kotlin/com/archeryapprentice/data/datasource/GitLiveFirebaseDataSource.kt
// TODO: Replace with platform-appropriate logging (Logcat/OSLog) in productionContext: Debug logging needs platform-specific implementation for production builds.
Priorities
High Priority (Blocking Other Work)
- BowSetupRepository KMP migration
- OfflineScoreQueue KMP migration
Medium Priority (Feature Gaps)
- iOS verification service real implementation
- Round creation KMP integration on iOS
- Tournament settings loading
- Offline tournament support
Low Priority (Improvements)
- Team mode enablement
- Equipment accessories UI
- Test coverage improvements
- Navigation enhancements
Tracking Updates
When addressing a TODO:
- Remove the TODO comment
- Update this inventory document
- Note the resolution in the PR description
Last updated: December 2025