Task Time Tracker

February 2, 2026 Β· View on GitHub

Jest tests & linter checks VS Code Marketplace

A powerful Visual Studio Code extension for tracking time spent on tasks directly from your Git branches. Automatically detect ticket IDs from branch names and track your work time with precision.

Task Time Tracker

πŸ“¦ Install from VS Code Marketplace

✨ Features

🎯 Automatic Ticket Detection

  • Automatically extracts ticket IDs from Git branch names (e.g., feat/GDD-750_my-feature)
  • Supports multiple ticket prefix patterns (configurable)
  • Works with any ticket system (Jira, GitHub Issues, Linear, etc.)

⏱️ Time Tracking

  • Precise time calculation in days with configurable increments (0.1, 0.2, 0.5, 1, etc.)
  • Detailed time breakdown showing days, hours, minutes, and seconds spent on each ticket
  • Multiple work sessions support with automatic pause/resume
  • Real-time tracking for active tickets with live time updates
  • Configurable working hours (24h or 12h format)
  • Customizable time increment for rounding (default: 0.5 days)
  • Days off configuration: Exclude specific days of the week from time tracking (e.g., weekends)
  • Automatic time calculation based on configured work hours
  • Smart period merging to avoid double-counting overlapping work periods

Time tracking

πŸ”„ Smart Branch Management

  • Automatic pause of active tickets when switching branches
  • Automatic resume of tracking when switching to a tracked ticket's branch
  • One-click branch checkout by double-clicking on a tracked ticket

πŸ“Š Visual Interface

  • Custom panel in Source Control view
  • Current branch display with ticket information
  • Collapsible monthly tracking sections
  • Visual indicators for ticket status:
    • β˜• Coffee icon: Completed/Paused tickets
    • ✏️ Edit session icon: Active tickets
  • Quick settings panel showing current configuration

πŸ“€ Export to Spreadsheet

  • Export monthly tracking to spreadsheet files
  • Multiple formats supported:
    • XLSX (Excel)
    • ODS (OpenDocument Spreadsheet)
    • CSV (Comma-separated values)
  • Configurable output path for exported files
  • Automatic file opening with configured application (optional)
  • Comprehensive data including:
    • Ticket ID and branch name
    • Author information
    • Time spent (days and detailed breakdown)
    • Status and completion date

Spreadsheet config

🎨 User Experience

  • Quick actions directly from the panel:
    • Add ticket to tracking
    • Remove ticket from tracking
    • Mark ticket as completed
    • Resume paused ticket
    • Delete ticket
    • Open ticket in browser
    • Checkout associated branch
    • Export month to spreadsheet
  • Real-time updates when Git branch changes
  • Automatic refresh every minute for active tickets
  • Internationalization (i18n): Choose between English and French
  • Flexible storage: Save tracking data in workspace settings or user settings
  • One-click migration: Easily migrate tracking data between workspace and user settings Language

βš™οΈ Configuration

  • Ticket base URL: Configure your ticket system URL Ticket base URL
  • Branch prefixes: Customize ticket prefix patterns (e.g., EDI, GDD)
  • Working hours: Set start and end times (24h or 12h format)
  • Days off: Configure which days of the week should be excluded from time tracking
  • Time format: Choose between 24h and 12h display format
  • Language: Choose between English and French for the extension interface
  • Storage location: Choose to save tracking data in workspace settings (project-specific) or user settings (global)
  • Export settings: Configure export format, output path, and application to open files

πŸ“¦ Installation

From VS Code Marketplace

Install from VS Code Marketplace

Or manually:

  1. Open VS Code
  2. Go to Extensions (Ctrl+Shift+X / Cmd+Shift+X)
  3. Search for "Task Time Tracker"
  4. Click Install

From VSIX File

  1. Download the .vsix file from the Releases page
  2. Open VS Code
  3. Go to Extensions
  4. Click the ... menu and select "Install from VSIX..."
  5. Select the downloaded file

πŸš€ Quick Start

  1. Configure your ticket system URL:

    • Open VS Code Settings (Ctrl+, / Cmd+,)
    • Search for "Task Time Tracker"
    • Set Task Time Tracker: Ticket Base Url (e.g., https://your-company.atlassian.net/browse)
  2. Configure branch prefixes (optional):

    • Set Task Time Tracker: Branch Prefixes (default: ["EDI", "GDD"])
  3. Set your working hours:

    • Configure Task Time Tracker: Work Start Hour and Work End Hour
    • Choose your preferred time format (24h or 12h)
  4. Start tracking:

    • Create a branch with a ticket ID (e.g., feat/GDD-750_my-feature)
    • Open the Source Control panel
    • Find the "Task Time Tracker" tab
    • Click the "Add to tracking" button next to your branch

πŸ“– Usage

Adding a Ticket to Tracking

  1. Ensure your current branch contains a ticket ID matching your configured prefixes
  2. In the Task Time Tracker panel, click the "Add to tracking" button (πŸ“„ icon)
  3. The ticket will be automatically added to the current month's tracking

Managing Tickets

  • Mark as completed: Click the checkmark icon on an active ticket
  • Resume tracking: Click the refresh icon on a completed ticket
  • Delete ticket: Click the trash icon
  • Open ticket: Click the external link icon to open the ticket in your browser
  • Checkout branch: Double-click on a ticket to checkout its associated branch

Viewing Tracking Data

  • Expand the monthly sections (e.g., "Suivi dΓ©cembre 2025") to see all tracked tickets
  • Each ticket displays:
    • Ticket ID
    • Status (En cours / Completion date)
    • Time spent in days (rounded to configured increment)
    • Precise time breakdown in format: Xj Yh Zm (days, hours, minutes)
      • Example: 2j 5h 30m means 2 days, 5 hours, and 30 minutes
      • Only non-zero units are displayed
      • Seconds are shown only if all other units are zero
    • Associated branch name

Exporting Monthly Tracking

  1. In the Task Time Tracker panel, expand a monthly section (e.g., "Suivi dΓ©cembre 2025")
  2. Click the table icon (πŸ“Š) next to the month title
  3. Choose to export only your tickets or all tickets
  4. The file will be generated in the configured format (XLSX, ODS, or CSV)
  5. If configured, the file will automatically open with your specified application
  6. The exported file contains:
    • Ticket ID
    • Branch name
    • Author
    • Time spent (days and detailed breakdown)
    • Status
    • Completion date

Managing Storage Location

  1. In the Task Time Tracker panel, expand the "Current Settings" section
  2. Find the "Storage location" line showing either "Workspace" or "User"
  3. Click on the storage location line to migrate your tracking data
  4. The extension will automatically:
    • Copy all tracking data to the new location
    • Update the storage preference
    • Remove data from the old location
  5. This is useful when:
    • You want to share tracking data across multiple projects (use User settings)
    • You want project-specific tracking (use Workspace settings)

Configuring Days Off

  1. In the Task Time Tracker panel, expand the "Current Settings" section
  2. Find the "Days off" line showing your currently configured days off (or "No days off configured")
  3. Click on the "Days off" line to open the configuration dialog
  4. Select the days of the week when you don't work (e.g., Saturday and Sunday)
  5. Selected days will be excluded from all time calculations
  6. This is useful for:
    • Excluding weekends from your time tracking
    • Excluding specific weekdays when you don't work
    • Ensuring accurate time calculations that only count working days

Automatic Features

  • Branch switching: When you switch Git branches, active tickets are automatically paused
  • Auto-resume: If you switch to a branch whose ticket is already tracked, tracking automatically resumes
  • Real-time updates: Time spent is calculated in real-time for active tickets

βš™οΈ Configuration Options

ConfigurationDescriptionDefaultExample
task-time-tracker.ticketBaseUrlBase URL for your ticket system. The ticket ID will be appended to this URL.""https://your-company.atlassian.net/browse
task-time-tracker.branchPrefixesArray of branch prefixes to detect ticket IDs from.["EDI", "GDD"]["EDI", "GDD", "TASK"]
task-time-tracker.workStartHourHour when your work day starts (24h format, 0-23).99
task-time-tracker.workEndHourHour when your work day ends (24h format, 0-23).1818
task-time-tracker.timeFormatTime display format: "24h" or "12h"."24h""24h" or "12h"
task-time-tracker.workStartHour12hWork start hour in 12h format (1-12). Used when timeFormat is "12h".99
task-time-tracker.workStartPeriodAM/PM period for work start. Used when timeFormat is "12h"."AM""AM" or "PM"
task-time-tracker.workEndHour12hWork end hour in 12h format (1-12). Used when timeFormat is "12h".66
task-time-tracker.workEndPeriodAM/PM period for work end. Used when timeFormat is "12h"."PM""AM" or "PM"
task-time-tracker.timeIncrementTime increment in days for tracking. Time spent will be rounded to this increment. Minimum: 0.1, Maximum: 1, Must be a multiple of 0.1.0.50.1, 0.2, 0.5, 1
task-time-tracker.excelOutputPathOutput directory path for exported spreadsheet files. If empty, files will be saved in the current workspace directory.""/Users/username/Documents/exports
task-time-tracker.excelExecutablePath to the executable application to open exported files automatically. If empty, files will not be opened automatically. On macOS, you can use .app bundle paths.""macOS: /Applications/Microsoft Excel.app
Linux: /usr/bin/libreoffice
Windows: C:\Program Files\Microsoft Office\Office16\EXCEL.EXE
task-time-tracker.excelExportFormatExport format for monthly tracking files. Options: "xlsx" (Microsoft Excel), "ods" (OpenDocument), "csv" (Comma-separated values)."xlsx""xlsx", "ods", "csv"
task-time-tracker.languageExtension language. Options: "en" (English) or "fr" (French)."en""en", "fr"
task-time-tracker.useGlobalStorageSave tracking data in user settings instead of workspace settings. When enabled, data is stored globally and shared across all workspaces.truetrue, false
task-time-tracker.daysOffArray of days of the week to exclude from time tracking. Values: 0 (Sunday), 1 (Monday), 2 (Tuesday), 3 (Wednesday), 4 (Thursday), 5 (Friday), 6 (Saturday).[][0, 6] (weekends), [1, 2, 3, 4, 5] (weekdays only)

🎯 How It Works

Ticket Detection

The extension uses regex patterns to extract ticket IDs from branch names:

  • Pattern: {PREFIX}-{NUMBER} (case-insensitive)
  • Example: feat/GDD-750_my-feature β†’ GDD-750

Time Calculation

Time is calculated based on:

  • Working hours: Only time within your configured work hours counts
  • Days off: Days configured as "days off" are completely excluded from time calculations
  • Increments: Time is rounded to your configured increment (default: 0.5 days) for the days display
  • Precise calculation: Detailed breakdown (days, hours, minutes, seconds) is calculated separately and shown alongside the rounded days
  • Minimum: Minimum tracked time equals your configured time increment
  • Multiple sessions: Overlapping periods on the same day are automatically merged to avoid double-counting
  • Real-time updates: For active tickets, the precise time is recalculated every minute

Data Storage

Tracking data can be stored in either workspace settings or user settings:

  • Workspace settings (default): Data is stored in .vscode/settings.json and is project-specific
  • User settings: Data is stored globally and shared across all workspaces
  • Easy migration: Click on the storage location in the quick settings to migrate data between workspace and user settings
  • Organized by month and year
  • Each ticket contains:
    • Ticket ID and full URL
    • Branch name
    • Work periods (start/end dates)
    • Author information
    • Calculated time spent (in days, rounded to increment)
    • Precise time spent (days, hours, minutes, seconds) - automatically recalculated on each access

πŸ› οΈ Development

Prerequisites

  • Node.js 20+
  • npm or yarn
  • VS Code

Setup

# Clone the repository
git clone https://github.com/MisterGoodDeal/task-time-tracker.git
cd task-time-tracker

# Install dependencies
npm install

# Compile TypeScript
npm run compile

# Run tests
npm test

# Run linter
npm run lint

Building

# Build VSIX package
npm run package

# The VSIX file will be in the build/ directory

Testing

# Run all tests
npm test

# Run tests in watch mode
npm run test:watch

# Run linter
npm run lint

# Fix linting issues automatically
npm run lint:fix

πŸ“ License

MIT License - see LICENSE.md for details

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Clone the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

πŸ“§ Support

If you encounter any issues or have feature requests, please open an issue on GitHub.

πŸ™ Acknowledgments


Made with ❀️ for developers who want to track their time efficiently