Configuration File¶
TaskRepo configuration is stored as YAML at ~/.TaskRepo/config.
File Location¶
Default path: ~/.TaskRepo/config
Custom location: Set TASKREPO_CONFIG environment variable
Legacy migration: Old ~/.taskreporc is automatically migrated on first run
Configuration Format¶
parent_dir: ~/tasks
default_priority: M
default_status: pending
default_assignee: null
default_github_org: null
default_editor: null
sort_by:
- due
- priority
cluster_due_dates: false
Configuration Options¶
parent_dir¶
Type: Path Required: Yes Default: ~/tasks
Directory where task repositories are stored. Each repository will be created as tasks-{name} subdirectory.
Tilde expansion: ~ is automatically expanded to home directory
default_priority¶
Type: String Values: H (High), M (Medium), L (Low) Default: M
Default priority for new tasks when not specified.
default_status¶
Type: String Values: pending, in-progress, completed, cancelled Default: pending
Default status for new tasks.
default_assignee¶
Type: String (GitHub handle with @ prefix) or null Default: null
If set, automatically assigns this GitHub handle to new tasks when no assignees are specified. Useful for personal task management.
Behavior: Only applied when creating tasks without explicit assignees.
default_github_org¶
Type: String (GitHub organization/username) or null Default: null
If set, used as default organization when creating GitHub repositories with tsk create-repo.
default_editor¶
Type: String (editor command) or null Default: null
Text editor for editing task descriptions. If not set, uses $EDITOR or $VISUAL environment variables.
Common editors: vim, nano, code, emacs, subl
sort_by¶
Type: List of strings Default: ['due', 'priority']
Defines task sorting order. Tasks are sorted by fields in the order specified.
Supported fields: - priority - Priority (H > M > L) - due - Due date (earliest first) - created - Creation timestamp (oldest first) - modified - Last modified timestamp (newest first) - status - Task status - title - Alphabetically by title - project - Alphabetically by project - assignee - By first assignee (see Assignee Sorting below)
Descending order: Prefix field with - to reverse order
sort_by:
- -priority # High priority last
- due # Then by due date (earliest first)
- created # Then by creation time
Assignee Sorting¶
The assignee field supports special syntax for preferred sorting:
Basic alphabetical:
Preferred assignee:
Descending order:
cluster_due_dates¶
Type: Boolean Default: false
When enabled, groups tasks by countdown buckets instead of exact due dates. This allows secondary sort fields (like priority) to take precedence within each time bucket.
Time buckets: - Overdue (2+ weeks, 1 week, 1-6 days) - Today - Tomorrow - 2-3 days - 4-13 days - 1-3 weeks - 1 month - 2+ months - No due date
Example: Clustering Effect¶
Without clustering (cluster_due_dates: false):
1. Task A (due today 11:59 PM, priority: L)
2. Task B (due tomorrow 12:01 AM, priority: H) # Earlier timestamp
With clustering (cluster_due_dates: true):
1. Task C (due today 11:59 PM, priority: H) # Same bucket, higher priority
2. Task A (due today 11:59 PM, priority: L)
3. Task B (due tomorrow 12:01 AM, priority: H) # Different bucket
With clustering enabled and sort_by: [due, priority]: - All "today" tasks are sorted by priority first - Then all "tomorrow" tasks are sorted by priority - Exact timestamps within a bucket don't matter
Complete Example¶
# TaskRepo Configuration
# Task repository location
parent_dir: ~/work/tasks
# Default values for new tasks
default_priority: M
default_status: pending
default_assignee: '@paxcalpt'
# GitHub integration
default_github_org: 'HenriquesLab'
# Text editor
default_editor: 'code --wait'
# Sorting configuration
sort_by:
- assignee:@paxcalpt # My tasks first
- due # Then by due date
- priority # Then by priority
- created # Finally by creation time
# Enable due date clustering
cluster_due_dates: true
Configuration Management¶
View Configuration¶
Edit Configuration¶
Opens a TUI with: - Arrow keys to navigate fields - Enter to edit values - 's' to save changes - 'q' to quit without saving
Manual Editing¶
You can also edit ~/.TaskRepo/config directly with any text editor:
Important: Ensure YAML syntax is valid after manual edits.
Cache Files¶
TaskRepo maintains cache files alongside the configuration:
~/.TaskRepo/id_cache.json Maps display IDs (1, 2, 3...) to task UUIDs for consistent referencing.
~/.TaskRepo/update_check_cache.json Tracks when update checks were last performed to avoid excessive network requests.
Note: Cache files are automatically managed. Manual editing is not recommended.
Migration from Legacy Config¶
If you have an old ~/.taskreporc file, TaskRepo automatically migrates it to the new location on first run:
- Reads
~/.taskreporc - Converts to new format at
~/.TaskRepo/config - Renames old file to
~/.taskreporc.backup
Legacy cache files are also migrated: - ~/.taskrepo_id_cache.json → ~/.TaskRepo/id_cache.json - ~/.taskrepo_update_check.json → ~/.TaskRepo/update_check_cache.json
Next Steps¶
- CLI Commands - Complete command reference
- Task File Format - Task markdown format
- Configuration Guide - Configuration best practices