Skip to content

Focus Mode — Track developer distractions and productivity #33

Description

@NK2552003

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

  • Starts/stops cleanly with commands
  • Tracks ≥3 distraction types accurately
  • Displays real-time stats in status bar
  • Generates session summary on completion
  • Persists data across restarts without blocking startup

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1-highHigh-impact work that significantly improves the product.advancedComplex features involving deep logic, architecture decisions, or integration with multiple systems.enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions