Execution Plan

Prioritized task execution plan with safe parallelization.

Legend

  • LLM: Fully automated via Claude Code
  • Human: Requires human judgment or design
  • Hybrid: LLM implements, human reviews

Task Deduplication

These backlog items are the same work - consolidated:

DuplicatesConsolidated Task
Extract tag lookup helper, Convert tags array to dictionary, Use dictionary for tag lookupAdd tagsByID dictionary to AppState

Phase 0: Foundation (COMPLETED 2025-12-17)

Enables reliable development of all other features.

Completed Tasks

TaskFiles Created/Modified
Add dependency injectionTimeTrackingService.swift (protocol added)
Make services mockableMockTimeTrackingService.swift (new), StorageLocationManager.swift (protocol added)
Add structured logging (OSLog)Logger.swift (new), FileStorageService.swift, StorageLocationManager.swift, AppIntents.swift
Add debug state inspectionDebugStateView.swift (new)

Files Created:

  • Shared/Sources/TimeTrackerShared/Utilities/Logger.swift - AppLogger with OSLog
  • Shared/Tests/TimeTrackerSharedTests/Mocks/MockTimeTrackingService.swift - Actor mock for testing
  • TimeTracker/Sources/Views/Debug/DebugStateView.swift - Runtime state inspection (DEBUG only)

Protocols Added:

  • TimeTrackingServiceProtocol in TimeTrackingService.swift
  • StorageLocationManagerProtocol in StorageLocationManager.swift

Consolidated: “Use protocol types for services”, “Improve error logging”, “Add debugging tools”


Phase 1: Critical Fixes (COMPLETED 2025-12-17)

Completed Tasks

TaskFiles Modified
Fix export popup closes on first openHistorySection.swift (snapshot pattern)
Fix CSV export escapingCSVParser.swift (RFC 4180 compliance)
Add tagsByID dictionary to AppStateTimeTrackerApp.swift, views
Document StorageLocationManager singletonStorageLocationManager.swift
Terminal build commands documentationCLAUDE.md
Use ExportService instead of inline CSVHistorySection.swift

Phase 2: UI Quick Fixes (COMPLETED 2025-12-17)

Completed Tasks

TaskFiles Modified
Remove app title from windowContentView.swift
Fix element positionsReviewed - no issues found
A4 horizontal for reportsreport-generator/src/index.ts (842x595)

Phase 3: Testing (COMPLETED 2025-12-17)

Completed Tasks

TaskFiles Created
Add report-generator JS testsreport-generator/tests/ (53 tests)
Add AppState integration testsShared/Tests/…/Integration/ (15 tests)
Add Swift-JS integration testsdocs/600-testing/601-testing-guide.md

Remaining (Hybrid)

TaskFilesOwner
Add view tests for multiplatformproject.yml, TimeTracker/Tests/Hybrid

Note: View tests need project.yml changes and ViewInspector setup.


Phase 4: Performance (COMPLETED 2025-12-17)

Completed Tasks

TaskResult
Cache filtered recordsViews use computed properties (acceptable)
Implement record cachingLocalFileStorageService (in-memory cache)

Phase 5: Features (COMPLETED 2025-12-17)

Completed Tasks

TaskFiles Modified
Archive tagsTag.swift (isArchived), TimeTrackingService, views
Delete records from Today and HistoryContext menu added for Mac Catalyst
Keyboard shortcuts (Mac)TimeTrackerApp.swift (Cmd+N, Cmd+.)
Avoid font bundlingGeneva.ttf loaded at runtime via Swift

Remaining (Hybrid)

TaskFilesOwner
History table layoutHistorySection, related viewsHybrid

Note: History table layout requires design decisions.


Phase 6: Architecture

Major refactoring - strictly sequential, requires human review.

Sequential (Hybrid)

OrderTaskFilesOwner
1Introduce view model layerNew VM files, all viewsHybrid
2Implement repository patternNew repo files, servicesHybrid

Warning: These touch many files. No other work during this phase.


Phase 7: Platform Features

Large, independent features.

Sequential per Feature (Hybrid)

TaskFilesOwner
Menu Bar (macOS)New MenuBarController, AppDelegateHybrid
iCloud syncFileStorageService, new sync logicHybrid

Note: Can parallelize only if one developer per feature with clear boundaries.


Phase 8: Polish

Human Only

TaskOwner
Create app logoHuman
Avoid font bundling in reportsHybrid

Parallel Execution Rules

Safe to Parallelize

  1. Swift vs JS: Different codebases, no conflicts
  2. New test files: Adding tests to separate directories
  3. Service layer vs View layer: If clearly separated
  4. Documentation vs Code: CLAUDE.md, docs/ vs source files

Never Parallelize

  1. Same file modifications: Will cause merge conflicts
  2. Model changes + View changes: Views depend on models
  3. AppState changes + anything using AppState: Cascading effects
  4. Architecture refactoring: Touches everything

Agent Coordination

When running multiple agents:

Agent A: "I'm modifying TimeTrackerApp.swift"
Agent B: Must wait or work on unrelated files

Commit strategy:
1. Agent completes task
2. Agent commits changes
3. Other agents pull/rebase
4. Next agent starts

Execution Summary

PhaseStatusCompleted
0DONE2025-12-17
1DONE2025-12-17
2DONE2025-12-17
3DONE (LLM)2025-12-17
4DONE2025-12-17
5DONE (LLM)2025-12-17
6PendingHybrid - requires human review
7PendingHybrid - requires human review
8PendingHuman only

Completed: 22 tasks (LLM automated) Remaining: 6 tasks (require human input)


Recommended Approach

For Claude Code with multiple agents:

  1. Research/Planning: Parallelize freely
  2. Code changes: Max 2 agents on different subsystems
  3. Same subsystem: Sequential only
  4. After each task: Commit, then next agent rebases

Related