An Electron application that automates time logging in Harvest based on Git commit history. Perfect for developers who want to maintain accurate time records without manual time entry.
- 🔄 Automatic Time Tracking: Convert Git commits to Harvest time entries
- 📊 Smart Hour Distribution: Intelligent hour allocation across commits
- 🎯 Repository Management: Enable/disable repositories with persistent settings
- 🔗 Harvest Integration: Seamless sync with Harvest projects and tasks
- 🎨 Modern UI: Material Design with dark theme and intuitive layout
- 🔧 Customizable: Flexible webhook support for message formatting
- 🔍 Branch Pattern Recognition: Smart branch parsing with preset patterns
- ⚙️ Advanced Preferences: Organized settings with tabbed interface
- 🛡️ Enhanced Error Handling: Robust error recovery and clear feedback
- 🕒 Flexible Time Management: Manual adjustments with automatic redistribution
- 📱 Responsive Design: Optimized layout with proper visual hierarchy
- 🔔 Rich Notifications: Clear feedback for all operations
-
🕒 Flexible Time Distribution
- Automatic hour distribution based on commit size, time, or equal distribution
- Manual hour adjustments with automatic redistribution
- Configurable daily hours enforcement (1-20 hours, default: 8)
- Cross-repository hour distribution support
- Precise hour calculations with floating-point tolerance
- Repository-specific hour preferences
-
🔄 Smart Git Integration
- Automatic commit history processing
- Branch-based commit filtering
- Configurable date ranges
- Multiple repository support
- Customizable branch parsing patterns
- Ticket number extraction
-
🎯 Harvest Integration
- Secure API token storage
- Project and task synchronization
- Bulk time entry creation
- External issue tracking support
- Custom notes formatting
-
💾 Data Management
- Local repository settings storage
- Persistent user preferences
- Secure credential management
- Error-resilient storage operations
-
🎨 User Interface
- Material UI with dark theme
- Interactive time entry preview
- Real-time hour validation
- Visual feedback for all operations
- Loading states and progress indicators
- Intuitive repository management
Download the latest version from the Releases page:
- macOS:
AI-Harvest-Timesheet-Mac-{version}-Installer.dmg
For detailed installation instructions, see our Installation Guide.
- Launch the application
- Enter your Harvest credentials
- Get them from Harvest Developer Tools
- Create a new Personal Access Token
- Note down your Account ID and Token
- Configure global preferences (optional)
- Set default working hours
- Choose branch parsing pattern
- Configure distribution settings
- Click "Add Repository"
- Enter the full path to your Git repository
- Click "Add"
- Configure repository settings:
- Select Harvest project
- Select task
- Optional: Configure webhook URL
- Optional: Set repository-specific preferences
- Enable/Disable: Toggle switch for repository activity
- Settings: Configure repository-specific options
- Remove: Delete repository from application
- 🟢 Enabled: Full opacity, active border
- ⚫ Disabled: Grayed out, inactive border
- ✓ Configured: Settings complete indicator
⚠️ Warning: Configuration issues- ❌ Error: Connection/access problems
- Quick selections:
- Today (default)
- Yesterday
- Custom range
- Date validation and constraints
- Visual calendar interface
- Commit details with formatted messages
- Branch information with ticket numbers
- Editable hour allocations
- Total hours display
- Distribution indicators
- Loading states for operations
- Manual hour adjustments
- Automatic redistribution
- Cross-repository distribution
- Hour constraints enforcement
- Visual feedback for changes
Access via "Preferences" button in three organized sections:
- Default working hours
- Auto-redistribution options
- Cross-repository settings
- UI preferences
- Notification settings
- Preset patterns available:
- Feature/Bugfix:
feat/ABC-123-branch-title
- Jira Style:
JIRA-123/add-new-feature
- Type/Ticket:
feature/123/add-login
- Simple Ticket:
123-add-feature
- Feature/Bugfix:
- Live pattern preview
- Message template customization
- Fallback behavior configuration
- Hour distribution logic
- Default daily hours
- Cross-repository options
- Rounding preferences
- Minimum time allocations
Customize commit processing with webhook integration:
- Custom message formatting
- Dynamic hour allocation
- Ticket system integration
- Metadata processing
- Error handling and fallbacks
- In repository settings, provide a webhook URL
- The webhook will receive POST requests with commit data
- Return formatted messages and optional custom hours
- All communication is in JSON format
{
"request": {
"repositoryName": "my-project",
"branchName": "123-feature-branch",
"commits": [
{
"hash": "abc123",
"message": "Add new feature",
"date": "2024-03-14T10:30:00Z"
}
]
}
}
{
"repositoryName": "my-project",
"branchName": "123-feature-branch",
"commits": [
{
"hash": "abc123",
"message": "Add new feature",
"date": "2024-03-14T10:30:00Z",
"formattedMessage": "PROJ-123: Add new feature - Implementation complete",
"hours": 2.5
}
]
}
formattedMessage
: (Optional) Custom formatted message for the time entryhours
: (Optional) Custom hours for the commit (overrides automatic distribution)
- If the webhook fails, original commit messages will be used
- If custom hours are not provided, automatic distribution applies
- Network timeouts are handled gracefully
- CORS must be properly configured on the webhook server
-
Ticket System Integration
- Extract ticket numbers from branch names
- Fetch ticket details from your issue tracker
- Include ticket summaries in time entries
-
Custom Time Allocation
- Set specific hours based on commit tags
- Allocate time based on file changes
- Apply team-specific time allocation rules
-
Message Standardization
- Enforce consistent message formats
- Add project prefixes
- Include additional context from external systems
Intelligent branch parsing system:
- Automatic ticket extraction
- Multiple format support
- Template customization
- Live preview validation
- Error handling
- Fallback processing
-
Feature/Bugfix Format
feat/ABC-123-branch-title
feature/ABC-123-branch-title
bugfix/123-fix-issue
-
Jira Style Format
JIRA-123/add-new-feature
PROJ-456/fix-login-issue
ABC-789/update-docs
-
Type/Ticket Format
feature/123/add-login
fix/456/resolve-bug
chore/789/update-deps
-
Simple Ticket Format
123-add-feature
456-fix-bug
789-update-docs
Comprehensive error management:
- Availability verification
- Quota management
- Data recovery
- Fallback values
- Error reporting
- Connection management
- Timeout handling
- Retry logic
- Offline support
- Status reporting
- Input validation
- Error feedback
- Recovery guidance
- Constraint enforcement
- Status notifications
Common issues and solutions:
-
Repository Issues
- Invalid path: Verify full repository path
- Access denied: Check file permissions
- Git errors: Verify Git installation
- Branch errors: Check branch name format
-
Harvest Integration
- Authentication: Verify credentials
- Project access: Check project permissions
- Task selection: Verify task availability
- Sync failures: Check network connection
-
Time Entry Issues
- Missing commits: Check repository status
- Hour distribution: Verify preferences
- Sync errors: Check Harvest connection
- Pattern matching: Verify branch format
-
Performance Issues
- Slow loading: Check repository size
- UI lag: Reduce date range
- Memory usage: Close unused repositories
- Network delays: Check connection speed
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request