- Platform: Windows only
- Framework: WPF (.NET 8)
- Pattern: MVVM
- Target: net8.0-windows
- Storage: CSV + JSON
- Active: user input present
- Idle: no input beyond idle threshold
- Locked: Windows session locked
State transitions are based on:
- Windows session events
- Idle time detection
- Active window polling
Path: %LocalAppData%\SystemActivityTracker\settings.json
Pattern: activity-log-YYYY-MM-DD.csv
Each row includes:
- StartTime
- EndTime
- ProcessName
- State flags
- Daily summary → single CSV
- Weekly summary → multiple daily CSVs
- Monthly summary → aggregated daily CSVs
Historical data is never rewritten.
- Counts only Active state
- Pauses during Idle or Locked
- Resumes automatically
- User edits settings
- Clicks Save Settings
- App:
- Writes JSON
- Applies thresholds
- Restarts timers
- Refreshes summaries
Enabled only when:
- EnableLiveRefresh = true
- Tracking is running
- Selected date is today
- Flushes current segment to CSV
- Triggers summary refresh
- No historical modification
- Header: title, date, live indicator, exit
- Summary cards: Day, Week, Controls
- Tabs:
- Application Usage
- Weekly Overview
- Monthly Usage
- Settings
- Window close hides to tray
- Explicit exit required
- Ensures clean shutdown
- CSV for transparency
- Refresh-based aggregation
- Local-first architecture