Developers lose flow due to frequent file switching, command palette overuse, terminal context switching, and notification interruptions. There is no built-in way to measure or visualize focus drift.
NOTE :- Implement it on Code Session Tracker ( as some functionalities are similar to it)
Objective
Build a session-based focus tracker that monitors editor distractions, computes a focus score, and provides real-time + session-end feedback.
Scope & Implementation Details
1. Session Control
- Command:
focusMode.start / focusMode.stop
- Default session length: 25 min (configurable)
- Auto-save session state on window close
2. Event Tracking
vscode.window.onDidChangeActiveTextEditor → file switches
vscode.commands.onDidExecuteCommand → command palette/shortcut usage
vscode.window.onDidChangeTerminalShellExecution or terminal creation → terminal distractions
- Optional:
vscode.window.onDidChangeWindowState for app minimization/focus loss
3. Metrics Engine
- Track per-session:
distractionCount
timeFocused (total duration - distraction time)
interruptionFrequency (distractions / minute)
- Compute Focus Score (0–100):
4. Output UI
- Status Bar Item:
Focus: ON | 14:32 | Distractions: 3
- On stop: Show summary via
vscode.window.showInformationMessage or quick pick report
- Store sessions in
globalState for persistence
- Score = max(0, 100 - (distractionCount * weight) - (contextSwitchPenalty))
Acceptance Criteria
Technical Notes
- Use
setTimeout/setInterval for time tracking (avoid Date.now() polling on every event)
- Debounce rapid file switches (count as 1 distraction within 500ms window)
- Keep storage lightweight; prune sessions older than 30 days
- Ensure zero performance impact on typing/navigation
Developers lose flow due to frequent file switching, command palette overuse, terminal context switching, and notification interruptions. There is no built-in way to measure or visualize focus drift.
NOTE :- Implement it on Code Session Tracker ( as some functionalities are similar to it)
Objective
Build a session-based focus tracker that monitors editor distractions, computes a focus score, and provides real-time + session-end feedback.
Scope & Implementation Details
1. Session Control
focusMode.start/focusMode.stop2. Event Tracking
vscode.window.onDidChangeActiveTextEditor→ file switchesvscode.commands.onDidExecuteCommand→ command palette/shortcut usagevscode.window.onDidChangeTerminalShellExecutionor terminal creation → terminal distractionsvscode.window.onDidChangeWindowStatefor app minimization/focus loss3. Metrics Engine
distractionCounttimeFocused(total duration - distraction time)interruptionFrequency(distractions / minute)4. Output UI
Focus: ON | 14:32 | Distractions: 3vscode.window.showInformationMessageor quick pick reportglobalStatefor persistenceAcceptance Criteria
Technical Notes
setTimeout/setIntervalfor time tracking (avoidDate.now()polling on every event)