file: ./content/docs/append-date.mdx
meta: {
"title": "Auto Date Management"
}
import { VersionCallout } from "@/components/VersionCallout";
Automatically manage dates based on task status changes. Task Genius can add or remove dates when you change task statuses, supporting both Tasks plugin emoji format and Dataview format.
## Usage
Auto Date Management automatically adds appropriate dates to your tasks when their status changes, and removes them when the status changes to something else. This helps maintain accurate task metadata without manual intervention.
### Supported Date Types
* **Completion dates**: Added when tasks are marked as completed
* **Start dates**: Added when tasks are marked as in progress
* **Cancelled dates**: Added when tasks are marked as abandoned
### Metadata Format Compatibility
The feature works with both popular task metadata formats:
* **Tasks plugin emoji format**: Uses emojis like ✅ for completion dates
* **Dataview format**: Uses field notation like `[completion:: 2025-01-15]`
## Configuration
In the Task Genius settings under "Auto Date Manager":
### Enable Auto Date Manager
Toggle this setting to enable automatic date management when task status changes. When enabled, dates will be added or removed based on your preferred metadata format.
### Manage Completion Dates
When enabled, completion dates are automatically:
* **Added** when tasks are marked as completed
* **Removed** when tasks are changed to other statuses
### Manage Start Dates
When enabled, start dates are automatically:
* **Added** when tasks are marked as in progress
* **Removed** when tasks are changed to other statuses
### Manage Cancelled Dates
When enabled, cancelled dates are automatically:
* **Added** when tasks are marked as abandoned
* **Removed** when tasks are changed to other statuses
## Examples
When you change a task status, the appropriate date metadata is automatically managed:
```markdown
- [ ] Task 1 => - [x] Task 1 [completion:: 2025-01-15]
```
```markdown
- [x] Task 1 [completion:: 2025-01-15] => - [ ] Task 1
```
```markdown
- [ ] Task 1 => - [>] Task 1 [start:: 2025-01-15]
```
```markdown
- [>] Task 1 [start:: 2025-01-15] => - [-] Task 1 [start:: 2025-01-15] [cancelled:: 2025-01-15]
```
## Settings
You can configure the auto date manager in the Task Genius settings under "Auto Date Manager":
### Enable Auto Date Manager
Toggle this setting to enable automatic date management when task status changes. When enabled, dates will be added or removed based on your preferred metadata format.
file: ./content/docs/bases-support.mdx
meta: {
"title": "Bases Support",
"description": "Use Task Genius views within Obsidian Bases for enhanced data visualization"
}
import { VersionCallout } from "@/components/VersionCallout";
Task Genius now fully supports [Obsidian Bases](https://help.obsidian.md/bases), the core plugin introduced in Obsidian 1.9.0 that allows you to create database-like views of your notes. This integration extends Task Genius's powerful task management capabilities to work seamlessly with Obsidian's native file indexing system.
## What are Bases?
Bases is a core Obsidian plugin that lets you create database-like views of your notes. Using a base, you can view, edit, sort, and filter files and their properties. Each base can have several views with different layouts such as tables and cards.
All data in Obsidian Bases is stored in your local Markdown files and their properties. The views are described by the Bases syntax, which can be saved as a `.base` file or embedded in code blocks within your Markdown files.
## Task Genius Integration
Task Genius extends Bases functionality by:
### 1. **Base View Support**
You can now select any existing Task Genius view as a view type within a Base. This means you can use:
* Inbox View
* Forecast View
* Project View
* Tag View
* Review View
* Flag View
* Event View (Calendar)
* Status View
* Habit View
* Plan View (Gantt)
* Matrix View
* Custom Views
### 2. **Enhanced Data Sources**
Task Genius supports default source from base view:
* **Bases Data Source**: Leverages Obsidian's native file indexing
* **Note Properties**: Uses file properties as task metadata
* **File-as-Task**: Treats entire notes as tasks when used in a Base
### 3. **Seamless Property Mapping**
Task Genius automatically maps common file properties to task attributes:
* `due` → Due date
* `scheduled` → Scheduled date
* `status` → Task status
* `priority` → Task priority
* `tags` → Task tags
* `project` → Project assignment
## How to Use
### Creating a Task Genius Base View
1. **Create a new Base** or open an existing one
2. **Add a new view** to your Base
3. **Select a Task Genius view type** from the available options
4. **Configure the view settings** as you would in the standard Task Genius interface
### Using File Properties
You can leverage file properties to enhance task management:
```yaml
---
dueDate: 2025-09-15
priority: high
status: in-progress
project: "Website Redesign"
tags: [design, urgent]
---
# Design Homepage Mockup
This note becomes a task when viewed in a Task Genius Base view.
```
## Benefits
### Unified Task Management
* View all file tasks alongside your notes and documents
* Maintain context between tasks and their related content
* Use familiar Task Genius features within Bases
### Flexible Organization
* Create multiple views of the same data
* Switch between task-focused and document-focused perspectives
* Combine Task Genius's powerful filtering with Bases queries
### Enhanced Workflows
* Use Bases for project management with Task Genius views
* Create reading lists that integrate with task tracking
* Build knowledge bases with actionable items
## Configuration
### Settings
Access Bases-specific settings in Task Genius:
Open Bases Support Settings
#### How To Use
1. Open Task Genius settings
2. Navigate to the "Integrations" tab
3. Find "Bases Support" section
4. Enable the "Bases Support" option
## Limitations
* Some Task Genius features may have limited functionality in Base views
* Complex task dependencies work best with regular markdown files, not with the tasks in markdown notes
* Canvas integration is view-only in Bases context
## Troubleshooting
### Property Sync Issues
* Confirm property mappings in settings
### Performance
* Limit Base sources to specific folders for large vaults
* Use focused queries to reduce processing overhead
## See Also
* [Task View Documentation](/docs/task-view)
* [Obsidian Bases Documentation](https://help.obsidian.md/bases)
* [File Properties in Obsidian](https://help.obsidian.md/Editing+and+formatting/Properties)
file: ./content/docs/bulk-operations.mdx
meta: {
"title": "Bulk Operations"
}
import { VersionCallout } from "@/components/VersionCallout";
import {
CheckSquareIcon,
CalendarIcon,
AlertTriangleIcon,
FolderIcon,
TrashIcon,
XIcon,
ListIcon,
GitBranchIcon
} from "lucide-react";
Bulk Operations allow you to perform actions on multiple tasks simultaneously, dramatically improving efficiency when managing large numbers of tasks. Select multiple tasks and execute common operations like status changes, date adjustments, priority updates, and more.
## Overview
Instead of editing tasks one by one, Bulk Operations enable you to:
* **Select multiple tasks** using Shift + Click
* **Modify task properties** for all selected tasks at once
* **Execute operations** via right-click context menu
* **Save time** when managing similar tasks
**Key Benefits:**
* Efficient batch processing of tasks
* Consistent updates across multiple tasks
* Reduced repetitive work
* Powerful project management workflows
## Selecting Tasks
### How to Select Multiple Tasks
1. **Hold the Shift key** on your keyboard
2. **Click on tasks** one by one to add them to your selection
3. Each selected task will display visual feedback (see below)
4. Continue Shift + Clicking to add more tasks
**Important Notes:**
* You must **hold Shift** while clicking each task
* **Ctrl/Cmd + Click** is not supported
* **Ctrl/Cmd + A** (Select All) is not supported
* There is **no maximum limit** on the number of tasks you can select
### Visual Feedback
When tasks are selected, they display:
* **Left border**: A colored border appears on the left edge of the task
* **Background color change**: The task background changes to indicate selection
* **No toolbar**: Unlike single-selection, multi-selection does not show a toolbar
* **Selection count**: The right-click menu shows the number of selected tasks
**Example:**
```
┌────────────────────────────────────┐
│ ▌ ☐ Review quarterly report │ ← Selected (border + background)
│ ▌ ☐ Update project documentation │ ← Selected (border + background)
│ ☐ Schedule team meeting │ ← Not selected
│ ▌ ☐ Submit budget proposal │ ← Selected (border + background)
└────────────────────────────────────┘
```
### Deselecting Tasks
You can clear your selection using any of these methods:
1. **Press the `Escape` key** to clear all selections
2. **Right-click** and choose **"Clear selection"** from the menu
3. **Click outside the task list** (in empty space)
4. **Execute a bulk operation** (selection auto-clears after operation)
## View Mode Support
Bulk Operations are available in the following [View Modes](/docs/view-modes):
### ✅ Supported View Modes
* ** List View**: Fully supported
* ** Tree View**: Fully supported
### ❌ Not Currently Supported
* **Kanban View**: Multi-selection not available (yet)
* **Calendar View**: Multi-selection not available (yet)
**Note:** To use Bulk Operations, ensure you're in List View or Tree View. Switch View Modes using the buttons at the top of the view.
## Bulk Operations Menu
### Accessing the Menu
1. Select multiple tasks using **Shift + Click**
2. **Right-click** on any selected task
3. A context menu appears showing available bulk operations
4. The menu header displays the number of selected tasks
**Menu Structure:**
```
┌─────────────────────────────────────┐
│ 5 tasks selected │ ← Selection count
├─────────────────────────────────────┤
│ ◻ Bulk change status > │
│ 📅 Bulk set date > │
│ ⚠ Bulk set priority > │
│ 📁 Bulk move to project > │
├─────────────────────────────────────┤
│ 🗑 Bulk delete │
├─────────────────────────────────────┤
│ ✕ Clear selection │
└─────────────────────────────────────┘
```
## Available Operations
### Bulk Change Status
Change the completion status for all selected tasks.
**How to Use:**
1. Select tasks
2. Right-click → **Bulk change status**
3. Choose a status from the submenu (e.g., "Todo", "In Progress", "Done")
4. All selected tasks update to the new status
**Submenu Options:**
* All configured task statuses from your [Task Status](/docs/task-status) settings
* Each option shows the status checkbox indicator
* Status names are displayed (e.g., "Todo", "In Progress", "Done")
**Example Use Cases:**
* Mark multiple tasks as "In Progress" when starting a work session
* Change completed tasks back to "Todo" if they need revision
* Batch-update project tasks to a custom status
**Status Change Behavior:**
* If changing to a completed status, the completion date is automatically set
* If changing from completed to incomplete, the completion date is cleared
***
### Bulk Set Date
Modify date fields for all selected tasks.
**How to Use:**
1. Select tasks
2. Right-click → **Bulk set date**
3. Choose from three sub-options (see below)
#### Set Specific Date
Set all selected tasks to the same specific date.
**Submenu:**
* **Due date**: Set a specific due date
* **Start date**: Set a specific start date
* **Scheduled date**: Set a specific scheduled date
**Flow:**
1. Select date type (e.g., "Due date")
2. A date picker modal opens
3. Choose a date from the calendar
4. All selected tasks are updated with that date
**Example Use Case:**
* Set the same deadline for all tasks in a sprint
* Align start dates for a group of related tasks
#### Postpone by...
Shift dates forward or backward by a specified number of days.
**Submenu:**
* **Due date**: Postpone/advance due dates
* **Start date**: Postpone/advance start dates
* **Scheduled date**: Postpone/advance scheduled dates
**Flow:**
1. Select date type (e.g., "Due date")
2. An offset modal opens
3. Enter number of days (positive to postpone, negative to advance)
4. Each task's date is shifted by that amount
**Example Use Cases:**
* Postpone all tasks by 3 days due to a delay
* Advance start dates by 2 days to accommodate early availability
* Shift scheduled dates by 1 week for rescheduling
**Important:** If a task doesn't have the selected date type, the current date is used as the base for offset calculation.
#### Clear Dates
Remove date fields from all selected tasks.
**Submenu:**
* **Clear due date**: Remove all due dates
* **Clear start date**: Remove all start dates
* **Clear scheduled date**: Remove all scheduled dates
**Example Use Case:**
* Clear due dates from backlog tasks to remove deadline pressure
* Remove start dates when tasks are no longer time-bound
***
### Bulk Set Priority
Change the priority level for all selected tasks.
**How to Use:**
1. Select tasks
2. Right-click → **Bulk set priority**
3. Choose a priority level or clear priority
**Submenu Options:**
* **! Priority 1**: Lowest priority
* **!! Priority 2**: Low priority
* **!!! Priority 3**: Medium priority
* **!!!! Priority 4**: High priority
* **!!!!! Priority 5**: Highest priority
* **Clear priority**: Remove priority from all selected tasks
**Example Use Cases:**
* Elevate all project tasks to high priority before a deadline
* Set a batch of low-priority tasks for backlog processing
* Clear priority from completed tasks for cleaner archives
**Visual Indicators:**
Priority is shown with exclamation marks (`!`, `!!`, `!!!`, etc.) in the task display.
***
### Bulk Move to Project
Assign all selected tasks to a specific project.
**How to Use:**
1. Select tasks
2. Right-click → **Bulk move to project**
3. Choose a project from the list
4. All selected tasks are assigned to that project
**Submenu Options:**
* List of all existing projects (dynamically generated from tasks in your vault)
* **Clear project**: Remove project assignment from all selected tasks
* If no projects exist, shows "No projects available" (disabled)
**Example Use Cases:**
* Organize inbox tasks into projects after triage
* Reassign tasks when restructuring projects
* Bulk-remove project tags when archiving
**Note:** The project list is generated from existing task metadata, not from a static configuration. Create projects by assigning them to individual tasks first.
***
### Bulk Delete
Permanently delete all selected tasks.
**How to Use:**
1. Select tasks
2. Right-click → **Bulk delete**
3. A confirmation modal appears showing the number of tasks to be deleted
4. Click **"Delete"** to confirm or **"Cancel"** to abort
**Confirmation Modal:**
```
┌─────────────────────────────────────┐
│ Confirm bulk delete │
│ │
│ Are you sure you want to delete │
│ 12 tasks? │
│ │
│ [Cancel] [Delete] │
└─────────────────────────────────────┘
```
**Important:**
* **Deletion is permanent** and cannot be undone (unless you have version control or backups)
* Always double-check your selection before confirming
* The `deleteChildren` parameter is set to `false`, meaning subtasks are not automatically deleted
**Example Use Cases:**
* Clean up completed tasks in bulk
* Remove duplicate or obsolete tasks
* Archive cleanup after project completion
***
### Clear Selection
Exit selection mode and deselect all tasks.
**How to Use:**
1. Right-click → **Clear selection**
2. All tasks are deselected
3. Selection mode is exited
**Alternative:** Press the **Escape** key to clear selection quickly.
## Operation Results
### Success Notifications
When a bulk operation completes successfully, you'll see a notification:
```
✓ Changed status to "In Progress": 8 tasks updated successfully
```
```
✓ Set dueDate: 15 tasks updated successfully
```
```
✓ Deleted tasks: 10 tasks updated successfully
```
### Partial Success Notifications
If some tasks fail during an operation, you'll see:
```
⚠ Set priority to 3: 7 succeeded, 2 failed
```
**What Happens on Failure:**
* Successfully updated tasks remain updated
* Failed tasks are left unchanged
* Error details are logged to the console (press `Ctrl/Cmd + Shift + I` to view)
* A notice displays the count of successes and failures
**Common Failure Reasons:**
* File permission issues
* Tasks in read-only files
* Corrupted task format
* Plugin API errors
### Checking Console Errors
To view detailed error information:
1. Press **Ctrl/Cmd + Shift + I** to open Developer Tools
2. Click the **Console** tab
3. Look for "Bulk operation errors:" messages
4. Each error includes:
* Task ID
* Task content
* Error message
## Workflows and Use Cases
### Daily Task Management
**Scenario:** You process your inbox every morning.
**Workflow:**
1. Open **Inbox** view in **List View**
2. Select all low-priority tasks (Shift + Click each)
3. Right-click → **Bulk set priority** → **! Priority 1**
4. Select all high-priority tasks
5. Right-click → **Bulk move to project** → **"Urgent Work"**
***
### Project Rescheduling
**Scenario:** A project is delayed by one week.
**Workflow:**
1. Open **Project View** for the delayed project
2. Select all tasks with due dates (Shift + Click)
3. Right-click → **Bulk set date** → **Postpone by...** → **Due date**
4. Enter `7` days
5. All tasks are postponed by one week
***
### Sprint Planning
**Scenario:** Moving tasks from backlog to the current sprint.
**Workflow:**
1. Open **Upcoming** view in **Kanban View** (or switch to **List View** for multi-select)
2. Switch to **List View** temporarily for bulk operations
3. Select all sprint tasks (Shift + Click)
4. Right-click → **Bulk change status** → **"In Progress"**
5. Right-click → **Bulk set date** → **Set specific date** → **Due date** → (Sprint end date)
6. Switch back to **Kanban View** to visualize progress
***
### Task Cleanup
**Scenario:** Archiving or deleting completed tasks from last month.
**Workflow:**
1. Open **Custom View** with filter: Completed = Yes, Completed Date \< 30 days ago
2. Switch to **List View**
3. Select all tasks (Shift + Click)
4. Right-click → **Bulk delete**
5. Confirm deletion
***
### Weekly Review
**Scenario:** Reviewing and reprioritizing tasks for the upcoming week.
**Workflow:**
1. Open **Upcoming** view in **List View**
2. Select all medium-priority tasks for next week
3. Right-click → **Bulk set priority** → **!!! Priority 3**
4. Select tasks without due dates
5. Right-click → **Bulk set date** → **Set specific date** → **Due date** → (End of week)
## Best Practices
### 1. Use List View for Bulk Operations
While Tree View is supported, **List View** provides a clearer, flatter structure for selecting multiple tasks. Switch to List View before performing bulk operations for better visibility.
### 2. Double-Check Selection Before Deleting
Always verify your selection count before executing **Bulk delete**:
* Check the menu header: "X tasks selected"
* Review the confirmation modal carefully
* Use **Clear selection** (or `Esc`) if you selected wrong tasks
### 3. Use Postpone for Relative Date Changes
When rescheduling, prefer **Postpone by...** over **Set specific date** if tasks should maintain their relative timing:
* **Set specific date**: All tasks get the same date (e.g., all due on Jan 15)
* **Postpone by**: Each task's date shifts by the same amount (e.g., all shift 3 days later)
### 4. Batch Similar Tasks Together
Group similar operations to minimize selection effort:
* Instead of selecting all tasks at once, do operations in batches:
1. Select and update status for Group A
2. Select and set priority for Group B
3. Select and move to project for Group C
### 5. Leverage Project-Based Selection
Use project or tag filters to narrow visible tasks before bulk selecting:
1. Apply filter to show only relevant tasks
2. Select all visible tasks (easier than manual selection in large lists)
3. Execute bulk operation
4. Clear filter
### 6. Test with Small Batches First
When using a bulk operation for the first time:
1. Select 2-3 tasks as a test
2. Execute the operation
3. Verify the results
4. Proceed with larger batches once confident
### 7. Combine with View Modes
Use the right [View Mode](/docs/view-modes) for context, then switch to List View for bulk operations:
* **Plan in Calendar View** → Switch to **List View** for bulk date changes
* **Track in Kanban View** → Switch to **List View** for bulk status changes
* **Organize in Tree View** → Use **Tree View** directly for hierarchical bulk operations
## Limitations
### View Mode Restrictions
* **Not supported in Kanban View**: Multi-selection is unavailable
* **Not supported in Calendar View**: Multi-selection is unavailable
* **Only List and Tree View**: Must be in these View Modes to use bulk operations
**Workaround:** Temporarily switch to List View to perform bulk operations, then switch back to your preferred View Mode.
### No Select All
* **No Ctrl/Cmd + A**: Cannot select all visible tasks with a keyboard shortcut
* **No "Select All" button**: Must manually Shift + Click each task
**Workaround:** Use filters to reduce the visible task count, then Shift + Click the remaining tasks.
### No Ctrl/Cmd + Click for Toggle Selection
* **Cannot toggle individual tasks**: No way to add/remove single tasks from selection without Shift
* **Cannot deselect one task**: Must clear all and re-select
**Workaround:** Be careful with initial selection. Use **Clear selection** if you make a mistake, then re-select.
### Selection Clears After Operation
* **No persistent selection**: After executing a bulk operation, selection is automatically cleared
* **Cannot chain operations**: Must re-select tasks for each operation
**Workaround:** Plan to execute only one operation per selection, or use filters to maintain the same visible task set for re-selection.
### No Undo for Bulk Operations
* **Operations are immediate**: Changes are written to files immediately
* **No built-in undo**: Must manually revert changes
**Workaround:**
* Use version control (Git) for your vault to enable rollback
* Test with small batches before large operations
* Keep backups of your vault
### No Progress Indicator for Large Batches
* **No loading bar**: Large bulk operations may appear to "hang"
* **No cancellation**: Cannot abort an in-progress operation
**Workaround:**
* Be patient with large selections (100+ tasks)
* Check the console for progress logs if needed
* Avoid selecting thousands of tasks in a single batch
## Troubleshooting
### Tasks Not Selecting
**Issue:** Clicking tasks while holding Shift doesn't select them.
**Solution:**
* Verify you're in **List View** or **Tree View** (not Kanban or Calendar)
* Ensure you're **holding Shift** before clicking
* Try releasing and re-pressing Shift
* Refresh the view (close and reopen)
### Right-Click Menu Not Showing Bulk Options
**Issue:** Right-click menu shows single-task options instead of bulk menu.
**Solution:**
* Verify multiple tasks are actually selected (visual feedback should be visible)
* Ensure you right-clicked on a **selected task** (not an unselected one)
* Try clearing selection (`Esc`) and re-selecting tasks
### Some Tasks Failing in Bulk Operation
**Issue:** Notification shows "X succeeded, Y failed".
**Solution:**
* Open Console (`Ctrl/Cmd + Shift + I`) and check error messages
* Common fixes:
* Ensure files are not read-only
* Check file permissions
* Verify tasks are not in a corrupted format
* Reload the plugin (Settings → Community Plugins → Reload)
* Successfully updated tasks remain updated; manually fix failed tasks
### Bulk Delete Not Working
**Issue:** Confirmation modal appears, but tasks aren't deleted.
**Solution:**
* Check if files are locked or in use by another application
* Ensure Obsidian has write permissions
* Verify tasks are not in read-only files
* Check Console for error details
### Selection Deselecting Unexpectedly
**Issue:** Tasks deselect while trying to add more to selection.
**Solution:**
* Ensure you're continuously holding Shift (not tapping it)
* Avoid clicking outside the task area
* Don't press Escape accidentally
* Disable any conflicting plugins or hotkeys
## Related Features
* [View Modes](/docs/view-modes): Switch between List, Kanban, Tree, and Calendar views
* [Task Status](/docs/task-status): Configure task statuses for bulk status changes
* [Date & Priority](/docs/date-priority): Understand date and priority fields modified by bulk operations
* [Project](/docs/project): Learn about project organization for bulk project moves
* [Workspace](/docs/workspace): Use workspaces to organize different task contexts
* [Filtering](/docs/filtering): Filter tasks before bulk selection for efficiency
file: ./content/docs/commands.mdx
meta: {
"title": "Commands",
"full": true
}
Task Genius provides a set of commands to help you manage your tasks.
| Command Name | Details | Works in |
| ---------------------------------------------- | --------------------------------- | ----------- |
| Open Task Genius view | Open the task genius view | All views |
| Quick capture (Global) | Capture tasks from anywhere | All views |
| Task capture with metadata | Capture tasks with details | All views |
| Toggle task filter panel | Show/hide the task filter | Editor view |
| Cycle task status forward | Change task status | Editor view |
| Cycle task status backward | Change task status | Editor view |
| Refresh task index | Update the task list | All views |
| Force reindex all tasks | Rebuild the task list cache | All views |
| Set priority Highest | Set task priority | Editor view |
| Set priority High | Set task priority | Editor view |
| Set priority Medium | Set task priority | Editor view |
| Set priority Low | Set task priority | Editor view |
| Set priority Lowest | Set task priority | Editor view |
| Set priority A | Set task priority | Editor view |
| Set priority B | Set task priority | Editor view |
| Set priority C | Set task priority | Editor view |
| Set priority D | Set task priority | Editor view |
| Remove priority | Remove task priority | Editor view |
| Move task to another file | Relocate a specific task | Editor view |
| Move all completed subtasks to another file | Archive completed subtasks | Editor view |
| Move direct completed subtasks to another file | Archive completed subtasks | Editor view |
| Move all subtasks to another file | Relocate all subtasks | Editor view |
| Sort Tasks in Section | Sort tasks under cursor's heading | Editor view |
| Sort Tasks in Entire Document | Sort all tasks in the file | Editor view |
| Toggle quick capture panel | Show/hide quick capture panel | Editor view |
file: ./content/docs/compatibility.mdx
meta: {
"title": "Compatibility"
}
## Tasks Plugin
When using Task Genius alongside the popular Tasks plugin, be aware of potential conflicts, particularly with the **status cycle** feature.
Task Genius offers highly customizable task status markers and cycling behaviors (as detailed in [Task Status & Cycling](/docs/task-status)). The Tasks plugin also has its own system for managing and cycling through task statuses.
If both plugins attempt to manage or cycle task statuses, you may experience:
* Unpredictable status changes when clicking on a task.
* Conflicts in how different status markers are interpreted or displayed.
* Issues with commands related to task status cycling from either plugin.
**Recommendation:**
To avoid conflicts, it is generally recommended to **choose one plugin** to handle task status cycling and configure the other plugin to not interfere.
* If you prefer Task Genius's status cycling, ensure that similar cycling features in the Tasks plugin are disabled or configured not to overlap with Task Genius's markers.
* If you prefer the Tasks plugin's cycling, you might need to simplify or disable custom cycling in Task Genius to prevent clashes, potentially by not using the "Enable task status switcher" setting or by ensuring the defined cycles(You can disable all cycles in Task Genius) do not conflict with Tasks plugin's expected markers.
Carefully review the settings for both Task Genius's "Task Status Switcher" and the Tasks plugin's status configuration to ensure they work harmoniously if you intend to use features from both.
file: ./content/docs/date-priority.mdx
meta: {
"title": "Date & Priority management"
}
Task Genius provides intuitive ways to add and manage due dates and priorities for your tasks directly within Obsidian notes.
Open Date & Priority Settings
## Dates picker
Assign due dates using the calendar emoji (`📅`) followed by a date in `YYYY-MM-DD` format.
```markdown
- [ ] Submit report 📅 2023-12-25
```
* **Calendar Picker**: Click the calendar icon and also the date text (`📅 2023-12-25`) in Live Preview mode to open a date picker menu and easily select or modify the due date.
* **Configurable**: You can customize what kind of the emoji is used as the calendar icon (support start date emoji, scheduled date emoji, due date emoji, etc.) in the settings.
## Priority
Assign priorities using specific emoji or the `priority` dataview-style inline field (`priority::`).
Common emoji used (configurable in settings):
* 🔺 Highest
* ⏫ High
* 🔼 Medium
* 🔽 Low
* ⏬ Lowest
Alternatively, use bracketed priorities like `[#A]`, `[#B]`, `[#C]`.
```markdown
- [ ] Urgent Task 🔺
- [ ] High priority task ⏫
- [ ] Normal task
- [ ] Low priority task [priority:: low]
- [ ] Another way [#B]
```
* **Priority Selector**: In Live Preview mode, click the priority icon (if present) to open a dropdown menu for quick selection.
* **Context Menu**: Right-click on a task line and use the `Task Genius: Set priority` submenu.
* **Commands**: Use commands like `Task Genius: Set priority A`, `Task Genius: Set priority B`, `Task Genius: Remove priority` via the command palette.
file: ./content/docs/deep-link-examples.mdx
meta: {
"title": "Deep Link Button Examples"
}
# Deep Link Button Variants
This page demonstrates the different button variants available for deep links.
## Primary Variant (Default)
Open Settings (Primary)
## Secondary Variant
Open General Settings (Secondary)
## Warning Variant
Open Experimental Settings (Warning)
## Usage Examples
### Basic Usage (Primary by default)
```mdx
Open Settings
```
### With Variant
```mdx
Secondary Action
```
### Custom Fallback Text
```mdx
```
file: ./content/docs/desktop-integration.mdx
meta: {
"title": "Desktop Integration",
"description": "System tray, notifications, and desktop features for Task Genius"
}
import { VersionCallout } from "@/components/VersionCallout";
# Desktop Integration
Task Genius provides powerful desktop integration features including system tray support, desktop notifications, and quick access to tasks from anywhere on your system.
Desktop integration features are only available in the Obsidian desktop app. Mobile versions do not support these features.
## Features Overview
### Tasks Status Bar/Tray Indicator (In Obsidian)
* **Compact Display**: Shows task count in Obsidian's status bar
* **Quick Menu**: Right-click for task actions
* **Flexible Modes**: Choose between system tray, status bar, or both
#### System Tray Integration
* **Task Count Badge**: See pending tasks at a glance
* **Quick Actions Menu**: Access tasks without opening Obsidian (And edit them via dropdown menu)
* **Theme-Aware Icons**: Automatically adapts to light/dark themes
* **Platform Support**: Works on Windows, macOS, and Linux
### Desktop Notifications
* **Task Reminders**: Get notified before tasks are Due
* **Click Actions**: Open tasks directly from notifications
## How to Use
### Getting Started
#### 1. Enable Desktop Integration
Open Desktop Settings
* Open Task Genius settings, if you didn't install yet: [Install Task Genius](/docs/installation)
* Navigate to the **Desktop Integration** tab
* Toggle **Enable notifications** to activate desktop features
#### 2. Choose Your Tray Mode
Select how you want to see task indicators:
* **System Tray**: Shows in your OS system tray/menu bar
* **Status Bar**: Shows in Obsidian's bottom status bar
* **Both**: Shows in both locations simultaneously
#### 3. Configure Notifications
Set up when and how you receive notifications:
* **Daily Summary**: Set a time for your morning task digest
* **Task Reminders**: Choose how many minutes before due time to notify
### System Tray Features
The system tray provides quick access to your tasks without switching to Obsidian:
#### Task Count Display
* **macOS**: Shows count as text next to icon
* **Windows/Linux**: Updates tooltip with count
#### Right-Click Menu
Access these features from the tray menu:
* **Open Task Genius**: Launch the main task view
* **Send Daily Summary**: Get immediate task overview
* **Top 7 Tasks**: Quick view of urgent tasks with actions:
* Edit in file
* Mark complete
* Snooze (1d, 2d, 3d, 1w, or custom)
* Set priority (Highest to Lowest)
### Status Bar Features
The status bar indicator provides in-app quick access:
#### Click Actions
* Left-click opens a context menu with:
* Task list with inline actions
* Quick complete buttons
* Snooze options
* Priority adjustments
#### Visual Indicators
* Shows pending task count
* Updates automatically when tasks change
* Theme-aware styling
### Desktop Notifications
Task Genius sends two types of notifications:
#### Daily Summary
* **When**: At your configured time (default 9:00 AM)
* **What**: List of tasks due today
* **Actions**: Click to open Task Genius
#### Task Reminders
* **When**: X minutes before task due time (configurable)
* **What**: Individual task reminder
* **Actions**: Click to open the specific task
### Configuration Options
#### Notification Settings
| Setting | Description | Default |
| -------------------- | -------------------------------------- | ------------ |
| Enable notifications | Master toggle for all desktop features | Off |
| Daily summary | Send morning task digest | On (9:00 AM) |
| Per-task reminders | Notify before each task | Off (10 min) |
| Tray indicator | Where to show task count | Status bar |
## Platform-Specific Notes
### macOS
* System tray appears in menu bar
* Supports native notification center
* Template images for automatic theme switching
### Windows
* System tray in notification area
* Windows 10/11 notification support
* Tooltip shows task count
### Linux
* System tray support varies by desktop environment
* Works best with GNOME, KDE, XFCE
* Falls back to status bar if tray unavailable
## Troubleshooting
### Tray Icon Not Showing
1. Check if tray mode is set to "System tray" or "Both"
2. Ensure Obsidian has system tray permissions
3. Try restarting Obsidian
4. On Linux, install system tray support for your DE
### Notifications Not Working
1. Check OS notification permissions for Obsidian
2. Ensure notifications are enabled in settings
3. Verify notification times are correctly set
4. Test with "Send now" button in settings
### Task Count Incorrect
1. Wait for task indexing to complete
2. Use "Refresh" option from tray menu
3. Check task filter settings
4. Verify ICS events are properly configured
## Tips & Best Practices
**Morning Routine**: Set daily summary 15 minutes before you start work to review and plan your day.
**Snooze Wisely**: Use quick snooze options (1d, 2d) for tasks that can wait, but set custom dates for important deadlines.
**Priority Management**: Use the tray menu to quickly adjust priorities without opening Obsidian.
## Privacy & Performance
* **Local Processing**: All notifications are processed locally
* **No External Services**: No data sent to external servers
* **Smart Updates**: Only refreshes when tasks change
## Related Features
* [Task View](/docs/task-view) - Main task management interface
* [Quick Capture](/docs/quick-capture) - Rapidly add new tasks
* [Filtering](/docs/filtering) - Configure which tasks appear
* [ICS Support](/docs/ics-support) - Calendar integration settings
file: ./content/docs/file-filter.mdx
meta: {
"title": "File Filter"
}
File Filter controls which files are considered by Task Genius.
Open File Filter Settings
## Include / Exclude
* Include folders/files to explicitly index
* Exclude folders/files to skip from indexing
* Patterns should be kept simple and reviewed periodically
## Interactions With Other Filters
* Global filtering (Tasks/Views) can further restrict items
* File Filter is evaluated early; downstream filters only see remaining items
## Performance Notes
* Broad include/exclude patterns can be expensive on large vaults
* Prefer narrower folder scopes and explicit includes when possible
## Troubleshooting
* Unexpected items? Re-check both File Filter and view-level filters
* After changes, force reindex if necessary: “Task Genius: Force reindex all tasks”
file: ./content/docs/filtering.mdx
meta: {
"title": "In-Editor Task Filtering"
}
Focus on the tasks that matter within a specific note without leaving the editor. Task Genius provides a dynamic filtering panel.
## Usage
1. Open the Obsidian command palette (`Ctrl/Cmd + P`).
2. Run the command: `Task Genius: Toggle task filter panel` (Note: You need to focus on the editor first).
3. A panel will appear (usually at the top or side of the editor pane) with filtering options.
## Filtering Options
Open Filter Settings
Use the panel to filter the tasks displayed in the current editor based on:
* **Status**: Show only tasks with specific statuses (e.g., `[ ]`, `[/]`, `[x]`).
* **Content**: Filter by text or tags present in the task line (e.g., `#projectA`, `urgent`).
* **Relationships**: Filter based on task hierarchy:
* Show only parent tasks.
* Show only child tasks.
* Show tasks related to the current cursor position (parent/children/siblings).
## Presets
* **Save**: If you frequently use a specific set of filter criteria, you can save them as a named preset within the panel.
* **Load**: Quickly apply previously saved presets.
## Toggling
Use the same command (`Task Genius: Toggle task filter panel`) or a button within the panel itself to hide the filters and show all tasks again.
Usually, you can toggle the filter panel on the top-right corner of the editor view.
file: ./content/docs/getting-started.mdx
meta: {
"title": "Getting Started"
}
Task Genius is a comprehensive plugin for Obsidian designed to enhance your task and project management workflow.
It integrates seamlessly into your notes, offering visual progress tracking, flexible status management, powerful filtering, and a dedicated view to manage tasks across your vault.
## Installation
## Quick Access
Open Settings
## Explore Features
Explore the key features to make the most out of Task Genius:
file: ./content/docs/habit.mdx
meta: {
"title": "Habit Tracking"
}
import { VersionCallout } from "@/components/VersionCallout";
Habit Tracking is a powerful feature of Task Genius designed to help you easily track and visualize your habit formation process using Obsidian's daily notes feature.
By adding simple metadata (Frontmatter) to your daily notes, Task Genius can automatically index and display your habit completion status.
## Getting Started
### 1. Define Your Habits
Open Habit Settings
First, you need to tell Task Genius which habits you want to track.
1. Open Task Genius settings.
2. Navigate to the "Habit" settings tab.
3. Click **Add new habit**.
You need to configure the following basic information for each habit:
* **Name:** The display name of the habit, e.g., "Meditation", "Drink Water", "Read".
* **Icon:** Choose a [Lucide icon](https://lucide.dev/icons/) to represent your habit by entering its ID (e.g., `brain`, `glass-water`, `book-open`).
* **ID:** A unique identifier for the habit, usually auto-generated, used for internal reference.
Next, you need to select the appropriate **Type** based on how the habit is tracked and configure the corresponding **Property** and **Completion Condition**.
#### Habit Types and Configuration
Task Genius supports multiple habit types to accommodate different tracking needs:
##### Daily Habit
This is the simplest type, used to record whether a habit was completed on a given day.
* **Type:** Select `daily`.
* **Property:** Define a **Metadata Key** used to mark this habit in the daily note's Frontmatter. For example, you could use `meditation-done` or `journaling_complete`. This key name should be unique.
* **Completion Condition:**
* `exists` (default): Considered complete as long as the `Property` exists in the Frontmatter (regardless of its value).
* `equals`: The value of the `Property` in the Frontmatter must be **strictly equal** to the specified `Value` to be considered complete (e.g., `Property` is `exercise`, `Value` is `"completed"`).
* *Other conditions (`greaterThan`, `lessThan`, `contains`) are less common for daily habits but can be configured if needed.*
**Example (Daily Habit - Meditation):**
* Name: Meditation
* Icon: `brain`
* Type: `daily`
* Property (Metadata Key): `meditation`
* Completion Condition: `exists` (default)
##### Count Habit
Used for tracking goals that require reaching a certain quantity, such as drinking 8 glasses of water or doing 50 push-ups daily.
* **Type:** Select `count`.
* **Property:** Define a **Metadata Key** used to record the count, e.g., `water_cups` or `pushups`.
* **Completion Condition:**
* Typically use `greaterThan` or `equals`.
* `greaterThan`: Considered complete when the value of the `Property` in the Frontmatter is **greater than** the specified `Value`.
* `equals`: Considered complete when the value of the `Property` in the Frontmatter is **equal to** the specified `Value`.
* **Min / Max:** (Optional) Define the expected minimum or maximum count value.
* **Count Unit:** (Optional) Add a unit to the count, e.g., "cups", "times", "minutes".
* **Notice:** (Optional) A notification message triggered when a certain count value is reached.
**Example (Count Habit - Drink Water):**
* Name: Drink Water
* Icon: `glass-water`
* Type: `count`
* Property (Metadata Key): `water_intake`
* Completion Condition: `greaterThan`, Value: `7` (goal is 8 or more glasses)
* Count Unit: cups
##### Scheduled Habit
Used for tracking habits that involve multiple sub-items or specific scheduled events, such as a multi-step morning routine.
* **Type:** Select `scheduled`.
* **Events:** Define the list of sub-events included in the habit, each with a `Name` and `Details`.
* **Properties Map:** Define a unique **Metadata Key** for **each event** to individually mark its completion in the Frontmatter. For example, for a "Morning Routine", events might be "Wake up", "Drink water", "Stretch", with corresponding keys `morning_getup`, `morning_water`, `morning_stretch`.
**Example (Scheduled Habit - Morning Routine):**
* Name: Morning Routine
* Icon: `sunrise`
* Type: `scheduled`
* Events:
* `{ name: "Wake up", details: "Wake up on time" }`
* `{ name: "Drink water", details: "Drink a glass of warm water" }`
* `{ name: "Stretch", details: "Do 5 minutes of stretching" }`
* Properties Map:
* Wake up: `morning_getup`
* Drink water: `morning_water`
* Stretch: `morning_stretch`
* *Note: The overall "completion" status of a scheduled habit might depend on its specific implementation in the view, but tracking is based on individual event metadata keys.*
##### Mapping Habit
Used to map a numerical value or state from your daily note to a specific habit label, such as recording mood or energy level.
* **Type:** Select `mapping`.
* **Property:** Define a **Metadata Key** used to record the original value, e.g., `mood_rating` or `energy_level`.
* **Mapping:** Define a mapping relationship from numerical values to text labels. For example:
* `1`: "Very Low"
* `2`: "Low"
* `3`: "Neutral"
* `4`: "Energetic"
* `5`: "Excellent"
* **Completion Condition:** Usually based on whether the `Property` value exists (`exists`) or meets a specific condition (e.g., `greaterThan` 3 indicates a good state).
**Example (Mapping Habit - Mood Log):**
* Name: Mood Log
* Icon: `smile`
* Type: `mapping`
* Property (Metadata Key): `mood`
* Mapping:
* `1`: "😞"
* `2`: "😟"
* `3`: "😐"
* `4`: "🙂"
* `5`: "😃"
* Completion Condition: `exists` (Tracking is considered complete as long as it's recorded)
### 2. Track Habits in Your Daily Notes
Once you have defined your habits and configured their corresponding **Property (Metadata Key)**, you can start recording them in the Frontmatter of your daily notes (or other periodic notes, depending on your Obsidian setup).
Task Genius will automatically scan the Frontmatter of these notes and determine the completion status of your habits based on the `Property` and `Completion Condition` you set.
**Example Frontmatter:**
Assume today is `2023-10-27`, and the corresponding daily note file is `2023-10-27.md`. Based on the habit examples defined above, your Frontmatter might look like this:
```yaml
---
date: 2023-10-27
# Daily Habit (Meditation) - Existence implies completion
meditation: true
# Count Habit (Drink Water) - Record the specific value
water_intake: 9
# Scheduled Habit (Morning Routine) - Mark completed sub-events
morning_getup: done
morning_water: ✅
morning_stretch: skipped
# Mapping Habit (Mood) - Record the rating
mood: 4
---
Today's journal content...
```
**Explanation:**
* `meditation: true`: Because the `meditation` key exists, the "Meditation" habit is marked as complete. The value could be `true`, `done`, `yes`, or even a number; completion is triggered by the key's presence.
* `water_intake: 9`: Because 9 is greater than the completion condition value of 7 we set, the "Drink Water" habit is marked as complete. Task Genius will record the value 9.
* `morning_getup: done`, `morning_water: ✅`: The keys corresponding to these sub-events of the morning routine exist, so they will be recorded. `morning_stretch: skipped` will also be recorded, but how it's displayed depends on the view.
* `mood: 4`: The "Mood Log" habit is considered complete for tracking purposes because the `mood` key exists. Task Genius records the value 4, which might be displayed as "🙂" in the view based on the mapping.
**Important Notes:**
* Ensure your Frontmatter syntax is correct.
* The `Property` (Metadata Key) used must **exactly match** the one defined in your Task Genius habit settings.
* Task Genius relies on Obsidian's metadata cache (`metadataCache`). If you find data isn't updating, try restarting Obsidian or triggering a data rescan in the Task Genius settings.
### 3. View Your Habit Progress
Task Genius provides a dedicated **Habit View** to visualize your habit data. You can usually access it in [Task Genius Views](/docs/task-view).
file: ./content/docs/ics-support.mdx
meta: {
"title": "ICS Calendar Integration"
}
import { VersionCallout } from "@/components/VersionCallout";
Task Genius provides powerful ICS calendar integration to display external calendar events in your task views, with advanced holiday detection, status mapping, and text processing capabilities.
## Overview
The ICS integration allows you to:
* **Import calendar events** from external ICS/iCal sources
* **Detect and group holidays** to reduce visual clutter
* **Map events to task statuses** based on timing and properties
* **Transform event text** using custom replacement rules
* **Display events** in forecast and calendar views alongside your tasks
## Getting started
### Basic setup
Open ICS Settings
1. Go to `Settings` → `Task Genius` → `ICS Calendar Integration`
2. Configure global settings for refresh intervals and caching
3. Add your first calendar source by clicking `Add New Calendar Source`
### Adding a calendar source
When adding a new source, you'll need to configure:
* **Source name**: Display name for the calendar
* **ICS URL**: The URL to your ICS/iCal file
* **Refresh interval**: How often to sync (in minutes)
* **Color**: Optional color for events from this source
* **Show type**: Display as "Event" or "Badge" in calendar views
#### Supported URL types
* **Google calendar**: Use the public ICS URL from calendar settings
* **Outlook/Office 365**: Export calendar and use the ICS URL
* **CalDAV**: Any CalDAV-compatible calendar service
* **File URLs**: Local or network file paths to ICS files
### Authentication
For private calendars, configure authentication:
* **Basic auth**: Username and password
* **Bearer token**: API token authentication
* **Custom headers**: Custom HTTP headers for specialized services
## Holiday detection & grouping
### Overview
Holiday detection automatically identifies and groups consecutive holiday events to reduce clutter in your calendar views.
### Configuration
Enable holiday detection in your calendar source settings:
```json
{
"enabled": true,
"groupingStrategy": "first-only",
"maxGapDays": 1,
"showInForecast": true,
"showInCalendar": true
}
```
### Grouping strategies
* **None**: Show all events individually
* **First only**: Show only the first day of consecutive holidays
* **Summary**: Show a summary with day count (e.g., "Holiday (3 days)")
* **Range**: Show first and last days (e.g., "Holiday: May 1-3")
### Detection patterns
Configure patterns to identify holiday events:
#### Summary patterns (Regex)
Regular expressions to match event titles:
```
holiday
christmas
day\s+\d+
\d+\s+days?
day\s+\d+\s+of\s+\d+
```
#### Keywords
Simple text matching:
```
holiday
vacation
christmas
festival
```
#### Categories
Event categories that indicate holidays:
```
holiday
vacation
festival
```
### Example: Multi-day holiday calendar
For holiday calendars showing "Christmas Holiday Day 1 of 3", "Christmas Holiday Day 2 of 3", etc.:
1. **Enable holiday detection**
2. **Set grouping strategy** to "First only"
3. **Add detection patterns**:
* Summary: `holiday`, `day\s+\d+`, `\d+\s+days?`
* Keywords: `holiday`, `christmas`
4. **Configure display**: Show only the first day to avoid repetition
## Status mapping
### Overview
Status mapping automatically assigns task statuses to ICS events based on timing and event properties, integrating with your existing task status system.
### Basic configuration
Enable status mapping in your calendar source:
```json
{
"enabled": true,
"overrideIcsStatus": true,
"timingRules": {
"pastEvents": "x",
"currentEvents": "/",
"futureEvents": " "
}
}
```
### Timing rules
Map events based on when they occur:
* **Past events**: Events that have ended (default: "x" - Complete)
* **Current events**: Events happening today (default: "/" - In Progress)
* **Future events**: Events in the future (default: " " - Incomplete)
### Property rules (Higher priority)
Override timing rules based on event properties:
#### Holiday mapping
```json
{
"holidayMapping": {
"holidayStatus": "-"
}
}
```
Maps detected holidays to "Cancelled" status to hide from active tasks.
#### Category mapping
Map specific event categories:
```
holiday:-
vacation:-
festival:-
meeting:/
work:x
```
#### Summary pattern mapping
Use regex patterns to map based on event titles:
* Pattern: `^Meeting:` → Status: `/` (In Progress)
* Pattern: `holiday.*day\s+\d+` → Status: `-` (Cancelled)
### Integration with task status system
Status mapping uses your existing task status configuration:
* Maps to status marks defined in plugin settings
* Falls back to default marks if custom marks not found
* Respects your task counting and progress calculation rules
## Text replacements
### Overview
Transform event text using regular expressions to clean up or standardize event titles, descriptions, and locations.
### Creating replacement rules
1. In your calendar source settings, scroll to "Text Replacements"
2. Click "Add Text Replacement Rule"
3. Configure the rule:
* **Rule name**: Descriptive name
* **Target field**: Summary, Description, Location, or All
* **Pattern**: Regular expression to match
* **Replacement**: Text to replace with (use $1, $2 for capture groups)
* **Flags**: Regex flags (e.g., "g" for global, "i" for case-insensitive)
### Common examples
#### Remove meeting prefix
* **Pattern**: `^Meeting: `
* **Replacement**: \`\` (empty)
* **Result**: "Meeting: Weekly Standup" → "Weekly Standup"
#### Replace room numbers
* **Pattern**: `Room (\d+)`
* **Replacement**: `Conference Room $1`
* **Result**: "Room 101" → "Conference Room 101"
#### Clean holiday text
* **Pattern**: `holiday.*day\s+\d+\s+of\s+\d+`
* **Replacement**: `holiday`
* **Result**: "Christmas holiday day 1 of 3" → "Christmas holiday"
#### Swap words
* **Pattern**: `(\w+) with (\w+)`
* **Replacement**: `$2 and $1`
* **Result**: "Meeting with John" → "John and Meeting"
### Testing rules
Use the built-in test feature when creating rules:
1. Enter sample text in the "Test Input" field
2. See the transformed result in real-time
3. Adjust pattern and replacement as needed
## Use cases & examples
### 1. Work calendar integration
**Scenario**: Integrate work calendar with meetings and deadlines
**Configuration**:
* **Timing rules**: Past meetings → Complete, Current → In Progress, Future → Incomplete
* **Category mapping**: `meeting:/`, `deadline:!`
* **Text replacements**: Remove "Meeting:" prefix, standardize room names
**Result**: Clean integration with task workflow, proper status tracking
### 2. Personal calendar management
**Scenario**: Include personal events without cluttering task lists
**Configuration**:
* **Holiday detection**: Group vacation days, map to "Cancelled" status
* **Status mapping**: Personal events → "Cancelled" to exclude from active tasks
* **Display**: Show in calendar but not in forecast
**Result**: Calendar visibility without task interference
### 3. Multi-day holiday calendar
**Scenario**: Holiday calendar with repetitive daily entries
**Configuration**:
* **Detection patterns**: Holiday keywords and day numbering patterns
* **Grouping strategy**: "First only" to show single entry per holiday period
* **Text replacements**: Clean up repetitive text
* **Status mapping**: Holidays → "Cancelled"
**Result**: Clean, non-repetitive holiday display
### 4. Project calendar integration
**Scenario**: Project milestones and deadlines from external system
**Configuration**:
* **Category mapping**: `milestone:!`, `deadline:!`
* **Text replacements**: Extract project names, clean formatting
* **Status mapping**: Past milestones → Complete, Future → High Priority
**Result**: Integrated project tracking with proper prioritization
## Advanced configuration
### Performance optimization
For large calendars or multiple sources:
1. **Adjust refresh intervals**: Longer intervals for static calendars
2. **Limit event count**: Set `maxEventsPerSource` appropriately
3. **Optimize patterns**: Use specific patterns rather than broad matches
4. **Cache settings**: Increase `maxCacheAge` for stable calendars
### Network configuration
For corporate or restricted environments:
1. **Timeout settings**: Adjust `networkTimeout` for slow connections
2. **Authentication**: Configure proper auth for corporate calendars
3. **Custom headers**: Add required headers for specialized services
### Debugging
If events aren't appearing or processing correctly:
1. **Check console**: Look for parsing errors or network issues
2. **Test patterns**: Use simple keywords before complex regex
3. **Verify URLs**: Ensure ICS URLs are accessible and valid
4. **Review settings**: Check timing rules and property mappings
## Troubleshooting
### Common issues
#### Events not syncing
* Verify ICS URL is accessible
* Check authentication settings
* Review network timeout settings
* Look for console errors
#### Holiday detection not working
* Test with simple keywords first
* Verify regex pattern syntax
* Check event data structure in console
* Ensure patterns match actual event text
#### Status mapping issues
* Verify timing rule configuration
* Check property rule priority (property rules override timing rules)
* Ensure status marks exist in plugin settings
* Test with individual events
#### Performance problems
* Reduce number of detection patterns
* Increase refresh intervals
* Limit max events per source
* Monitor memory usage with large calendars
### Getting help
If you encounter issues:
1. Check the plugin console for error messages
2. Verify your ICS URL works in other calendar applications
3. Test with a simple configuration first
4. Review the plugin documentation for updates
## Settings reference
### Global settings
* **Enable background refresh**: Auto-refresh all sources
* **Global refresh interval**: Default refresh time (minutes)
* **Maximum cache age**: How long to keep cached data (hours)
* **Network timeout**: Request timeout (seconds)
* **Max events per source**: Limit events loaded per source
* **Default event color**: Fallback color for events
### Source settings
* **Basic**: Name, URL, enabled status, refresh interval
* **Display**: Color, show type, event visibility
* **Authentication**: Auth type and credentials
* **Holiday config**: Detection patterns, grouping strategy
* **Status mapping**: Timing rules, property rules
* **Text replacements**: Transformation rules
### Integration settings
Status mapping integrates with existing Task Genius settings:
* **Task status marks**: Uses your defined status characters
* **Task counting**: Respects your counting configuration
* **Progress calculation**: Integrates with progress bar system
file: ./content/docs/mcp-integration.mdx
meta: {
"title": "MCP Integration",
"description": "Connect AI tools to Task Genius via Model Context Protocol"
}
# MCP Integration
Task Genius includes a built-in MCP (Model Context Protocol) server that allows AI tools and applications to interact with your task data. This enables powerful automation and AI-assisted task management workflows.
## What is MCP?
Model Context Protocol (MCP) is an open standard that enables AI assistants to securely connect to external data sources and tools. With Task Genius's MCP integration, you can:
* Query and search tasks with advanced filters
* Create new tasks with full metadata support
* Update task status and properties
* Delete tasks
* Batch operations for efficiency
* Access task statistics and insights
## Getting Started
### Prerequisites
* Task Genius must be running on desktop (MCP is not available on mobile)
* The AI tool you're using must support MCP connections
### Quick Setup
#### Step 1: Enable MCP Server
1. Open Obsidian Settings
2. Navigate to **Task Genius → MCP Integration**
3. Toggle **Enable MCP Server** to ON
4. Review and accept the security warning
Open MCP Settings
#### Step 2: Configure Security
The MCP server uses token-based authentication to secure your data:
* **Authentication Token**: Generated automatically when you enable MCP
* **Host**: Default is `127.0.0.1` (local only). Use `0.0.0.0` for network access
* **Port**: Default is `7777`
Keep your authentication token secure! Anyone with this token can access and modify your tasks.
#### Step 3: Connect Your AI Tool
Task Genius supports multiple AI applications:
## Supported Clients
### Cursor
Cursor supports one-click installation via deeplink:
Configure Cursor
Or add manually to your Cursor settings:
```json
{
"mcpServers": {
"your-vault-tasks": {
"url": "http://127.0.0.1:7777/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN+YOUR_APP_ID"
}
}
}
}
```
### Claude Desktop
Add to your Claude Desktop configuration file:
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`\
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"your-vault-tasks": {
"command": "curl",
"args": [
"-X", "POST",
"-H", "Authorization: Bearer YOUR_TOKEN+YOUR_APP_ID",
"-H", "Content-Type: application/json",
"--data-raw", "@-",
"http://127.0.0.1:7777/mcp"
]
}
}
}
```
### Claude Code
Install via command line:
```bash
claude mcp add --transport http your-vault-tasks http://127.0.0.1:7777/mcp \
--header "Authorization: Bearer YOUR_TOKEN+YOUR_APP_ID"
```
### VS Code
Add to your VS Code settings:
```json
{
"mcp": {
"servers": {
"your-vault-tasks": {
"type": "http",
"url": "http://127.0.0.1:7777/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN+YOUR_APP_ID"
}
}
}
}
}
```
### Windsurf
Add to your Windsurf configuration:
```json
{
"mcpServers": {
"your-vault-tasks": {
"serverUrl": "http://127.0.0.1:7777/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN+YOUR_APP_ID"
}
}
}
}
```
### Zed
Add to your Zed settings:
```json
{
"context_servers": {
"your-vault-tasks": {
"command": {
"path": "curl",
"args": [
"-X", "POST",
"-H", "Authorization: Bearer YOUR_TOKEN+YOUR_APP_ID",
"-H", "Content-Type: application/json",
"--data-raw", "@-",
"http://127.0.0.1:7777/mcp"
]
},
"settings": {}
}
}
}
```
## Available Tools
The MCP server provides a comprehensive set of tools for task management:
### Query Tools
* **query\_tasks**: Advanced task search with filters
* **query\_project\_tasks**: Get all tasks for a project
* **query\_context\_tasks**: Get all tasks for a context
* **query\_by\_priority**: Filter tasks by priority level
* **query\_by\_due\_date**: Find tasks within date ranges
* **search\_tasks**: Full-text search across tasks
### Create Tools
* **create\_task**: Create a single task with metadata
* **create\_task\_in\_daily\_note**: Add task to today's note
* **add\_project\_quick\_capture**: Quick capture with project tag
* **batch\_create\_tasks**: Create multiple tasks at once
* **batch\_create\_subtasks**: Add subtasks to existing task
### Update Tools
* **update\_task**: Modify task properties
* **update\_task\_status**: Change completion status
* **batch\_update\_task\_status**: Update multiple statuses
* **batch\_update\_text**: Find and replace in tasks
* **postpone\_tasks**: Reschedule task due dates
### List Tools
* **list\_tasks\_for\_period**: Get tasks for day/month/year
* **list\_tasks\_in\_range**: Get tasks between dates
* **list\_all\_metadata**: Get all tags, projects, contexts
### Delete Tools
* **delete\_task**: Remove a task by ID
## Authentication
Task Genius supports two authentication methods:
### Method B: Combined Bearer (Recommended)
Single header with token and app ID combined:
```http
Authorization: Bearer YOUR_TOKEN+YOUR_APP_ID
```
### Method A: Custom Headers
Separate headers for token and app ID:
```http
Authorization: Bearer YOUR_TOKEN
mcp-app-id: YOUR_APP_ID
```
## API Examples
### Initialize Session
```bash
curl -X POST http://127.0.0.1:7777/mcp \
-H "Authorization: Bearer YOUR_TOKEN+YOUR_APP_ID" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize"}'
```
### Query Tasks
```bash
curl -X POST http://127.0.0.1:7777/mcp \
-H "Authorization: Bearer YOUR_TOKEN+YOUR_APP_ID" \
-H "mcp-session-id: SESSION_ID" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "query_tasks",
"arguments": {
"filter": {
"completed": false,
"priority": 5
},
"limit": 10
}
}
}'
```
### Create Task
```bash
curl -X POST http://127.0.0.1:7777/mcp \
-H "Authorization: Bearer YOUR_TOKEN+YOUR_APP_ID" \
-H "mcp-session-id: SESSION_ID" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "create_task",
"arguments": {
"content": "Review quarterly goals",
"dueDate": "2025-08-31",
"priority": 4,
"project": "Planning",
"tags": ["review", "quarterly"]
}
}
}'
```
## Security Considerations
**Important Security Notes:**
* The MCP server provides full access to your task data
* Keep your authentication token secret
* Use `127.0.0.1` for local-only access
* Only use `0.0.0.0` if you need network access and understand the risks
* Consider firewall rules when exposing the server
## Troubleshooting
### Server Won't Start
1. Check if the port is already in use
2. Try using "Use Next Available Port" button
3. Restart Obsidian if needed
Test Connection
### Authentication Failures
1. Verify your token is correct
2. Check that app ID is included
3. Ensure headers are properly formatted
4. Try regenerating the token
Regenerate Token
### Connection Issues
1. Verify the server is running
2. Check firewall settings
3. Ensure correct host and port
4. Test with curl command first
## Advanced Configuration
### Custom Port
If port 7777 is in use, you can change it:
```bash
# In settings, change port to 8888
# Then update your client configuration accordingly
```
### Network Access
For access from other devices:
1. Change host to `0.0.0.0`
2. Configure firewall rules
3. Use your machine's IP address in clients
Network access exposes your data to potential security risks. Only enable if necessary.
### Logging
Adjust log level for debugging:
* **Error**: Only show errors
* **Warning**: Errors and warnings
* **Info**: General information (default)
* **Debug**: Detailed debugging output
## Use Cases
### AI-Powered Task Management
* "Find all high-priority tasks due this week"
* "Create a task list for my project meeting"
* "Mark all tasks in 'ProjectX' as completed"
* "Generate a weekly review of completed tasks"
### Automation Workflows
* Automatically create tasks from emails
* Sync tasks with external systems
* Generate daily task reports
* Bulk update task properties
### Integration Examples
* Connect ChatGPT to manage tasks via conversation
* Use Claude to analyze and organize your task backlog
* Build custom scripts to automate recurring workflows
## Getting Help
If you encounter issues:
1. Check the [troubleshooting section](#troubleshooting)
2. Review server logs in Obsidian console
3. Test with the built-in connection tester
4. Report issues on [GitHub](https://github.com/yourusername/task-genius)
Open MCP Settings
file: ./content/docs/notification-button.mdx
meta: {
"title": "Notification Button"
}
import { VersionCallout } from "@/components/VersionCallout";
import { BellIcon, AlertCircleIcon, ClockIcon } from "lucide-react";
The Notification Button provides at-a-glance awareness of pending and overdue tasks. Located in the toolbar, it displays a badge count and offers quick access to time-sensitive tasks that need your attention.
## Overview
The Notification Button is a persistent global indicator that helps you stay on top of your task deadlines. It monitors all tasks across your vault and alerts you to:
* **Overdue tasks**: Tasks past their due date
* **Upcoming tasks**: Tasks due within the next week
**Key Features:**
* Global monitoring across all tasks (not workspace-specific)
* Real-time badge count updates
* Quick access dropdown menu
* Always visible in the toolbar
## Location
The Notification Button is located at the **far right of the toolbar** in the Task Genius main view.
It appears as a bell icon () with a **red badge** in the top-right corner displaying the count of tasks requiring attention.
## Badge Count
### What the Badge Shows
The red badge displays the total number of **incomplete tasks** that are either:
1. Already overdue (past their due date)
2. Due within the next 7 days
**Example Counts:**
* Badge shows `5`: You have 5 incomplete tasks that are overdue or due within a week
* Badge shows `0` or is hidden: No urgent or upcoming tasks
* Badge updates **immediately** when you complete or modify tasks
### Real-Time Updates
The badge count is dynamic and updates automatically when:
* You complete a task (count decreases)
* You add a new task with an upcoming due date (count increases)
* A task becomes overdue as time passes (count increases)
* You change a task's due date (count may increase or decrease)
## Dropdown Menu
### Opening the Menu
Click the Notification Button () to open a dropdown menu showing all time-sensitive tasks.
### Menu Structure
The dropdown is organized into two sections:
#### 1. Overdue Tasks
Tasks that are **past their due date** and still incomplete.
* Sorted by how overdue they are (most overdue first)
* Displays task content, due date, and priority
* Visual indicator showing how many days overdue
**Example:**
```
Overdue Tasks (3)
━━━━━━━━━━━━━━━━━━━━━
☐ Submit quarterly report
Due: 3 days ago | Priority: High
☐ Review project proposal
Due: 1 day ago | Priority: Medium
☐ Update documentation
Due: Today | Priority: Low
```
#### 2. Upcoming Tasks (Next 7 Days)
Tasks due within the **next week** (from today through 7 days from now).
* Sorted by due date (earliest first)
* Displays task content, due date, and priority
* Shows relative time (e.g., "Tomorrow", "In 3 days")
**Example:**
```
Upcoming (Next 7 Days) (4)
━━━━━━━━━━━━━━━━━━━━━
☐ Team meeting preparation
Due: Tomorrow | Priority: High
☐ Code review for PR #123
Due: In 2 days | Priority: Medium
☐ Monthly planning session
Due: In 5 days | Priority: Medium
☐ Backup project files
Due: In 6 days | Priority: Low
```
### Menu Interactions
Within the dropdown menu, you can:
* **Click a task** to jump to its location in your vault
* **Check the checkbox** to mark a task as complete (removes it from the list)
* **Right-click a task** to open the context menu for additional actions
* **Scroll through the list** if you have many time-sensitive tasks
**Note:** The menu closes automatically when you click outside of it or when you select a task.
## Task Criteria
### What Tasks Appear
The Notification Button monitors tasks based on the following criteria:
**Included:**
* Tasks with a **Due Date** set
* Tasks that are **incomplete** (not marked as done)
* Tasks where the due date is:
* In the past (overdue), OR
* Within the next 7 days (upcoming)
**Excluded:**
* Completed tasks (marked as done with `x`)
* Tasks without a due date
* Tasks due more than 7 days in the future
* Tasks with only Scheduled or Start dates (no Due date)
### Time Window
The time window is **fixed** and cannot be customized:
* **Overdue**: From the beginning of time to yesterday
* **Upcoming**: From today to 7 days from now
**Timeline Example (Today is Jan 15):**
```
Jan 1 ─────────┬───────── Jan 14 ─┬─ Jan 15 ─┬───────── Jan 22 ─┬─────────> Future
│ │ │ │
[Overdue Tasks] [Due Today] [Upcoming Tasks] [Not Shown]
(Next 7 Days)
```
## Global Scope
The Notification Button operates **globally** across your entire vault:
* **Not workspace-specific**: Monitors all tasks regardless of the current [Workspace](/docs/workspace)
* **All views included**: Checks tasks from Inbox, Today, Upcoming, Flagged, and custom views
* **Vault-wide coverage**: Scans all files in your vault that contain tasks
**Implication**: Even if you switch workspaces or change views, the notification count remains consistent, reflecting all time-sensitive tasks in your vault.
## Use Cases
### Morning Review
Start your day by clicking the Notification Button to:
1. See what's overdue and needs immediate attention
2. Review what's coming up in the next week
3. Prioritize tasks based on urgency
### Quick Task Completion
Use the dropdown as a focused task list:
1. Complete overdue tasks directly from the menu
2. Clear your notification badge throughout the day
3. Maintain momentum by tackling time-sensitive items
### Deadline Awareness
Keep the badge count in your peripheral vision:
* Red badge with high count → Prioritize clearing overdue tasks
* Badge count decreasing → Progress feedback
* Badge at zero → All caught up on time-sensitive work
### Weekly Planning
At the start of the week:
1. Review the "Upcoming (Next 7 Days)" section
2. Identify tasks that need preparation or delegation
3. Adjust priorities or deadlines as needed
## Best Practices
### 1. Set Due Dates Intentionally
The Notification Button only tracks tasks with due dates:
* Use **Due Dates** for time-sensitive tasks with hard deadlines
* Use **Scheduled Dates** for planning without urgency
* Leave dates empty for backlog items
### 2. Aim for Zero Overdue
Make it a habit to clear overdue tasks:
* Review the "Overdue" section daily
* Complete, reschedule, or delegate overdue items
* Maintain a badge count focused on upcoming work
### 3. Use the 7-Day Window for Planning
The one-week window is designed for tactical planning:
* Check upcoming tasks at the start of each week
* Distribute work evenly across the next 7 days
* Adjust task scheduling if the upcoming list is overwhelming
### 4. Combine with Other Views
The Notification Button complements other features:
* Use **Calendar View** ([View Modes](/docs/view-modes)) for visual timeline planning
* Use **Today View** for daily focus
* Use **Notification Button** for urgent items across all contexts
### 5. Treat the Badge as a Signal
Let the badge count guide your workflow:
* **0-3**: Manageable, stay on track
* **4-10**: Moderate load, may need prioritization
* **10+**: High load, consider rescheduling or delegating
## Limitations
The Notification Button has the following limitations:
### 1. No Customization Options
* **Cannot disable**: The button is always visible in the toolbar
* **Cannot change time window**: Fixed at 7 days for upcoming tasks
* **Cannot add filters**: Shows all tasks meeting the criteria (cannot filter by priority, tag, etc.)
### 2. Due Date Dependency
* Only tracks tasks with **Due Dates** explicitly set
* Tasks with only Scheduled or Start dates are not included
* No fallback to other date fields
### 3. Global Scope Only
* Does not filter by current workspace
* Cannot scope to a specific project or tag
* Shows all qualifying tasks from the entire vault
### 4. No Notification System
* The button is a passive indicator, not an active notification system
* No alerts, sounds, or desktop notifications
* Requires manual checking by clicking the button
## Workarounds for Limitations
While the Notification Button cannot be customized, you can achieve similar functionality through other features:
### Custom Filtered Views
Create custom views ([Custom Views](/docs/task-view/custom-view)) with specific filters:
* **High Priority Overdue**: Filter by priority and overdue status
* **Work Tasks Due Soon**: Filter by tag/project and due date range
* **Personal Deadlines**: Filter by context or specific tags
### Combine with Workspace Strategy
Use [Workspaces](/docs/workspace) to mentally segment tasks:
* Check Notification Button for global awareness
* Switch to relevant workspace to focus on specific task sets
* Use workspace-specific views for detailed work
### Leverage View Modes
Use [View Modes](/docs/view-modes) for different perspectives:
* **Calendar View** to see the broader timeline (beyond 7 days)
* **Kanban View** to track task status and progress
* **List View** for comprehensive task details
## Troubleshooting
### Badge Count Seems Incorrect
**Issue**: The badge shows a different number than expected.
**Solution**:
* Verify task due dates (use List View to see all dates)
* Check if tasks are marked as complete
* Confirm tasks have **Due Dates** (not just Scheduled or Start dates)
* Refresh the Task Genius view (close and reopen)
### Tasks Not Appearing in Dropdown
**Issue**: Expected tasks are missing from the dropdown menu.
**Solution**:
* Ensure tasks have a Due Date field
* Verify tasks are incomplete (not marked with `x`)
* Check if the due date falls within the criteria:
* Overdue: Past due date
* Upcoming: Within next 7 days
* Tasks due 8+ days in the future will not appear
### Badge Not Updating After Task Completion
**Issue**: Completed a task but the badge count hasn't decreased.
**Solution**:
* Ensure the task was marked as complete (checkbox checked)
* Wait a moment for the UI to refresh
* Click the Notification Button to refresh the dropdown
* Restart Obsidian if the issue persists
### Dropdown Menu Empty Despite Badge Count
**Issue**: Badge shows a count, but the dropdown is empty.
**Solution**:
* Check the console for errors (Ctrl/Cmd + Shift + I)
* Verify Task Genius has properly indexed your vault
* Try reloading the plugin (Settings → Community Plugins → Reload)
* Check for file permission issues
## Related Features
* [Workspace](/docs/workspace): Understand how workspaces interact with global notifications
* [View Modes](/docs/view-modes): Use Calendar View for extended timeline visualization
* [Task View](/docs/task-view): Explore view-specific task management
* [Date & Priority](/docs/date-priority): Learn about setting due dates and priorities
* [Filtering](/docs/filtering): Create custom filters for specific task subsets
file: ./content/docs/progress-bars.mdx
meta: {
"title": "Progress Bar"
}
import { VersionCallout } from "@/components/VersionCallout";
Task Genius automatically adds progress indicators to parent items (tasks, list items, or even headings) based on the completion status of their direct sub-tasks or nested sub-items.
## Example
```markdown
- [ ] Parent Task [||||----] [✓:4 ⟳:1 ?:1 / 8] // Example with graphical bar and custom text format
- [x] Sub-task 1
- [x] Sub-task 2
- [/] Sub-task 3 [-] [✓:0 ⟳:0 ?:0 / 8]
- [ ] Sub-task 4
- [-] Sub-task 5 (Abandoned - might be excluded from count based on settings)
- [?] Sub-task 6 (Planned)
- [x] Sub-task 7
- [x] Sub-task 8
```
## Customization
Open Progress Bar Settings
You can heavily customize the appearance and behavior of progress bars in the plugin settings:
### Display mode
Choose whether to show a graphical bar (`[||||----]`), a text indicator, both, or none at all (`progressBarDisplayMode` setting).
### Text format
When text indicators are enabled, you can precisely control their content and appearance using the `progressBarFormat` settings:
#### Display mode
* **Display Mode**: Select the basic text format:
* `percentage`: Shows completed percentage (e.g., `75%`).
* `fraction`: Shows completed vs. total (e.g., `[6/8]`).
* `range-based`: Displays text defined for specific percentage ranges (see below).
* `custom`: Allows complete control using a custom template string.
#### Range-based text
If `Display Mode` is `range-based`, you can define specific text templates for different percentage completion ranges (e.g., 0-20%, 20-50%, 50-100%). Use the `{{PROGRESS}}` placeholder for the current percentage within these templates.
#### Custom format template
If `Display Mode` is set to `custom`, you define the output using a template string.
* **Placeholders**: Use placeholders like `{{COMPLETED}}`, `{{TOTAL}}`, `{{PERCENT}}`, `{{IN_PROGRESS}}`, `{{ABANDONED}}`, `{{PLANNED}}`, `{{NOT_STARTED}}`.
* **Status Symbols**: Use `{{COMPLETED_SYMBOL}}`, `{{IN_PROGRESS_SYMBOL}}`, `{{ABANDONED_SYMBOL}}`, `{{PLANNED_SYMBOL}}`, `{{NOT_STARTED_SYMBOL}}` to insert the configured symbols for each status.
* **Expressions**: Embed JavaScript expressions within `${=...}` for dynamic text. Example: `${="=".repeat(Math.floor(data.percentages.completed/10))}` creates a simple text bar. You have access to the `data` object (containing counts and percentages) and `displaySymbols` within expressions.
**Examples**:
```ts
// Example 1
[{{COMPLETED}}/{{TOTAL}}] -> [6/8]
// Example 2
{{PERCENT}}% Done -> 75% Done
// Example 3
[{{COMPLETED_SYMBOL}}:{{COMPLETED}} {{IN_PROGRESS_SYMBOL}}:{{IN_PROGRESS}} / {{TOTAL}}] -> [✓:6 ⟳:1 / 8]
// Example 4
Progress: ${="🟩".repeat(Math.floor(data.percentages.completed/10))}${"⬜".repeat(10-Math.floor(data.percentages.completed/10))} -> Progress: 🟩🟩🟩🟩🟩🟩🟩⬜⬜⬜
```
### Status display symbols
Customize the symbols used for each task status in the text format (defaults are derived from your task status settings, e.g., `✓`, `⟳`, `✗`, `?`, ` `).
### Counting
Configure which sub-item statuses count towards completion (e.g., exclude `[-]` or `[?]`). Decide whether to count only direct children or all nested sub-items (`countSubLevel`).
### Target items
Enable/disable progress bars on regular list items (`Add ProgressBar To Non-Task Bullet`), headings (`Add ProgressBar To Heading`), or only task items.
### Conditional hiding
Hide progress bars based on specific tags (`Hide ProgressBar Tags`), parent tags, file paths (`Hide ProgressBar Folders`), or frontmatter metadata (`Hide ProgressBar Metadata`).
#### Show on heading
Show progress bars on headings only (`Show ProgressBar On Heading`). Support using comma to separate multiple heading names (eg., "# Heading 1, # Heading 2").
### Other
Available since 4.0.0
Enable/disable in Reading Mode (`Enable progressbar in reading mode`).
Available since 6.0.0
Show detailed progress on hover (`Support hover to show progress info`).
Available since 8.0.0
Use custom goals via `g::number` inline fields (`Allow custom progress goal`).
file: ./content/docs/project.mdx
meta: {
"title": "Projects"
}
import { VersionCallout } from "@/components/VersionCallout";
Projects help you organize and track tasks by grouping them under meaningful categories. Whether you're managing work initiatives, personal goals, or creative endeavors, Task Genius provides flexible ways to define and visualize projects.
## What is a Project?
In Task Genius, a **Project** is a collection of related tasks organized under a common identifier. Projects can be defined in two ways:
### 1. Task-Level Projects
Individual tasks tagged with project identifiers.
**Example:**
```markdown
- [ ] Design homepage #project/website
- [ ] Write API documentation #project/website
- [ ] Review code changes #project/backend
```
Each task explicitly declares its project using a tag or metadata field.
***
### 2. File-Level Projects
Entire notes designated as projects, where **all tasks within the file** inherit the project.
**Example:**
File: `Website Redesign.md`
```yaml
---
project: true
---
# Website Redesign
- [ ] Create wireframes
- [ ] Design color scheme
- [ ] Implement responsive layout
```
All three tasks automatically belong to the "Website Redesign" project (derived from the file name).
***
**Key Difference:**
* **Task-level**: Each task can have a different project (`#project/website`, `#project/backend`)
* **File-level**: All tasks in a file share the same project (the file name)
**Important:** A task can only belong to **one project** at a time.
## Why Use Projects?
### Organize Work by Context
Group related tasks together for better focus and tracking.
**Examples:**
* Work: `#project/q1-sales`, `#project/product-launch`
* Personal: `#project/home-renovation`, `#project/learning-spanish`
* Creative: `#project/novel-writing`, `#project/photo-portfolio`
***
### Track Progress Across Your Vault
See all tasks for a specific project in one place, regardless of which files they're in.
**Use Case:**
You mention the "Website Redesign" project in:
* `Daily Notes/2025-01-15.md`: `- [x] Design homepage #project/website`
* `Daily Notes/2025-01-16.md`: `- [ ] Write copy #project/website`
* `Projects/Website.md`: `- [ ] Deploy to staging #project/website`
The **Project View** shows all three tasks together under "Website Redesign".
***
### Daily Project Tracking
Add project tags to tasks in your daily notes to track what you accomplished each day.
**Example Daily Note:**
```markdown
# 2025-01-15
## Tasks
- [x] Research competitors #project/marketing
- [x] Fix login bug #project/backend
- [ ] Write blog post #project/content
```
Review your project progress over time without manually organizing tasks into project files.
## Project Detection Methods
Configure how Task Genius identifies projects in your vault.
Open Project Settings
### Method 1: Frontmatter Key
Mark notes as projects using frontmatter metadata.
**Setting:** Enable "Frontmatter key" detection
**Format:**
```yaml
---
project: true
---
```
or
```yaml
---
project: "Custom Project Name"
---
```
**Behavior:**
* `project: true` → Project name = **file name**
* `project: "Name"` → Project name = **"Name"**
* All tasks in the file inherit this project
**Example:**
File: `Q1 Marketing Campaign.md`
```yaml
---
project: true
---
- [ ] Plan social media strategy
- [ ] Design ad creatives
- [ ] Launch campaign
```
All three tasks belong to the "Q1 Marketing Campaign" project.
***
### Method 2: Tags
Designate files as projects using specific tags.
**Setting:** Enable "Tags" detection and specify tag(s)
**Default Tag:** `#project`
**Format:**
```markdown
#project
- [ ] Task 1
- [ ] Task 2
```
or with custom tags:
```markdown
#work-project
- [ ] Task 1
- [ ] Task 2
```
**Behavior:**
* File contains the configured tag → File is a project
* Project name = **file name**
* All tasks in the file inherit this project
**Multiple Tags:** You can specify multiple tags (e.g., `#project`, `#work-project`). If a file has **any** of these tags, it's detected as a project.
***
### Method 3: Folders
Treat all files in specific folders as projects.
**Setting:** Enable "Folders" detection and specify folder path(s)
**Format:** Enter folder paths, one per line or separated by commas
**Example Configuration:**
```
Projects/
Work/Active Projects/
Personal/Goals/
```
**Behavior:**
* Any file in these folders → File is a project
* Project name = **file name**
* All tasks in the file inherit this project
**Subfolder Support:** If you specify `Projects/`, all files in `Projects/` and its subfolders are projects.
***
### Combining Methods
You can **enable multiple detection methods** simultaneously. Task Genius will recognize projects using any of the configured methods.
**Example Setup:**
* ✅ Frontmatter key (for explicit project files)
* ✅ Tags (`#project`, for flexible tagging)
* ✅ Folders (`Projects/`, for organizational structure)
**Result:** Files are detected as projects if they:
* Have `project:` frontmatter, OR
* Contain `#project` tag, OR
* Are located in `Projects/` folder
## Assigning Tasks to Projects
Tasks can be associated with projects in three ways:
### 1. Project Tags (Most Common)
Use tags with the format `#project/name`.
**Syntax:** `#project/your-project-name`
**Example:**
```markdown
- [ ] Design wireframes #project/website
- [ ] Write unit tests #project/backend
- [ ] Review budget #project/q1-planning
```
**Benefits:**
* Works in any file (daily notes, meeting notes, etc.)
* Explicit and visible
* Easy to search and filter
***
### 2. Dataview-Style Metadata
Use inline fields with the `project::` syntax.
**Syntax:** `[project:: name]`
**Example:**
```markdown
- [ ] Update documentation [project:: website]
- [ ] Fix API endpoint [project:: backend]
```
**Benefits:**
* Compatible with Dataview plugin
* Cleaner appearance (can be hidden with CSS)
* Structured metadata
***
### 3. File Location (Inherited)
Tasks automatically inherit the project from their containing file if the file is detected as a project (via frontmatter, tag, or folder).
**Example:**
File: `Projects/Website Redesign.md` (in "Projects/" folder)
```markdown
- [ ] Create mockups
- [ ] Develop homepage
- [ ] Write CSS
```
All tasks automatically belong to "Website Redesign" project (no manual tagging needed).
**Benefits:**
* No manual tagging required
* Clean task syntax
* Organized file structure
***
**Note:** If a task has an explicit project tag or metadata (methods 1 or 2), it will **override** the file-level project (method 3).
## Project View
The **Project View** provides a dedicated interface for managing project-based workflows.
### Opening Project View
1. Open the [Task Genius View](/docs/task-view)
2. Select **"Projects"** from the left sidebar
3. The left panel shows your project list, the right panel shows tasks
### Project List (Left Panel)
Projects are displayed in either:
* **Tree View:** Hierarchical structure (if projects have nested names like `work/project1`)
* **List View:** Flat list of all projects
**Clicking a project** loads its tasks in the right panel.
### Task Display (Right Panel)
Shows all tasks belonging to the selected project, regardless of which files they're in.
**Features:**
* Complete, edit, or organize tasks
* See task details (due dates, priority, tags)
* All standard [Task View](/docs/task-view) interactions
**Project Status:** The project's status (if any) is displayed but **not editable** in this view.
### Filtering Projects
Use the [Popover Filter](/docs/task-view/filter/popover-filter) to narrow down displayed tasks.
**Example Filter:**
```
Property: project
Condition: is
Value: website
```
This shows only tasks belonging to the "website" project.
**Advanced Filtering:**
Combine project filters with other criteria:
* Show incomplete tasks in "website" project due this week
* Show high-priority tasks across multiple projects
## Metadata Configuration
Customize how project metadata is displayed and interpreted.
### Property Keys
Map custom property names to Task Genius fields for internationalization (i18n) or personal preference.
**Use Case:** You prefer Chinese property names in your vault.
**Example Configuration:**
```
状态 → status
优先级 → priority
项目 → project
```
**In Your Notes:**
```markdown
- [ ] 设计界面 [项目:: 网站] [状态:: 未完成]
```
Task Genius understands `项目` as `project` and `状态` as `status` internally.
**Benefits:**
* Use your preferred language
* Match existing vault conventions
* Maintain consistency across notes
***
### Status Mapping
Map custom status labels to Task Genius's internal status categories.
**Use Case:** You use custom status names that differ from Task Genius defaults.
**Example Configuration:**
```
未完成 → incomplete
进行中 → in_progress
已放弃 → canceled
已完成 → completed
```
**In Your Notes:**
```markdown
- [ ] 任务 [状态:: 未完成]
- [/] 任务 [状态:: 进行中]
```
Task Genius interprets "未完成" as "incomplete" and "进行中" as "in\_progress" for filtering and progress tracking.
**Benefits:**
* Localization support
* Custom terminology
* Better readability
## Use Cases & Workflows
### Daily Project Tracking
Track which projects you worked on each day without organizing tasks into project files.
**Setup:**
1. Enable project detection via tags (`#project`)
2. Add project tags to tasks in daily notes
**Example Daily Note:**
```markdown
# 2025-01-15
## Work
- [x] Client meeting #project/sales
- [x] Update proposal #project/sales
- [ ] Code review #project/backend
## Personal
- [ ] Gym workout #project/fitness
- [ ] Read 30 minutes #project/reading
```
**Review:**
Open Project View → Select "sales" → See all sales tasks across all daily notes.
***
### Multi-Project File Organization
Organize tasks by file type (daily notes, meeting notes) while maintaining project associations.
**File Structure:**
```
Daily Notes/
2025-01-15.md (contains tasks for multiple projects)
2025-01-16.md (contains tasks for multiple projects)
Meetings/
Client Call 2025-01-15.md (contains #project/sales tasks)
```
**Benefit:** Keep chronological or topical file structure without losing project context.
***
### Project-Dedicated Files
Create dedicated files for large projects with all tasks in one place.
**Setup:**
1. Enable folder detection: `Projects/`
2. Create project files in that folder
**Example:**
File: `Projects/Website Redesign.md`
```markdown
# Website Redesign
## Phase 1: Design
- [ ] Wireframes
- [ ] Mockups
- [ ] Color scheme
## Phase 2: Development
- [ ] HTML structure
- [ ] CSS styling
- [ ] JavaScript interactions
```
All tasks automatically belong to "Website Redesign" project.
**Benefit:** Centralized project documentation with embedded tasks.
***
### Hybrid Approach (Recommended)
Combine file-level and task-level projects for maximum flexibility.
**Structure:**
```
Projects/
Website Redesign.md (file-level project)
Daily Notes/
2025-01-15.md (tasks tagged with #project/website)
```
**Workflow:**
1. Create a project file for planning and documentation
2. Add project-tagged tasks to daily notes as you work on them
3. Use Project View to see all tasks (from both sources) together
**Benefit:** Centralized planning with distributed execution tracking.
## Best Practices
### 1. Choose One Primary Method
While you can combine methods, pick one primary approach for consistency:
**For Daily Note Users:** Use task-level tags (`#project/name`)
**For Structured Vaults:** Use folder-based detection (`Projects/`)
**For MOC Users:** Use frontmatter (`project: true`)
***
### 2. Use Consistent Project Names
Standardize project naming to avoid fragmentation.
**Good:**
```markdown
#project/website-redesign
#project/website-redesign
#project/website-redesign
```
**Avoid:**
```markdown
#project/website-redesign
#project/WebsiteRedesign
#project/website_redesign ← Different names split the project!
```
**Tip:** Create a project list in your vault's index or MOC for reference.
***
### 3. Archive Completed Projects
Remove or archive finished project files to keep your Project View clean.
**Methods:**
* Move to an `Archive/` folder (excluded from project detection)
* Remove the `#project` tag or frontmatter
* Use a custom tag like `#project-archived`
***
### 4. Combine with View Modes
Use [View Modes](/docs/view-modes) for different project perspectives:
* **List View:** See all project tasks in a flat list
* **Kanban View:** Visualize project tasks by status
* **Calendar View:** See project deadlines on a timeline
* **Tree View:** See hierarchical task structures within projects
***
### 5. Use Filters for Multi-Project Work
If you work on multiple projects simultaneously, create saved filters:
**Example Filters:**
* "Active Projects": `project` in `[website, backend, marketing]`
* "Work Projects": `project` starts with `work/`
* "High Priority Project Tasks": `project` is `website` AND `priority` is `high`
Save these in [Popover Filter](/docs/task-view/filter/popover-filter) for quick access.
## Troubleshooting
### Project Not Detected
**Issue:** A file isn't showing up as a project in Project View.
**Solution:**
* Verify the detection method is enabled in settings
* **Frontmatter:** Check for `project: true` or `project: "name"` in frontmatter
* **Tags:** Ensure the file contains the configured tag (e.g., `#project`)
* **Folders:** Confirm the file is in the specified folder path
* Refresh the task index: `Task Genius: Refresh task index`
***
### Tasks Not Appearing in Project
**Issue:** Tasks don't show up when viewing a project.
**Solution:**
* **Task-level:** Verify the task has the correct project tag or metadata
* Check spelling: `#project/website` not `#projects/website`
* Ensure no extra spaces: `#project/website` not `#project/ website`
* **File-level:** Confirm the file is detected as a project (see above)
* Refresh the view or restart Obsidian
***
### Task in Wrong Project
**Issue:** A task appears under the wrong project.
**Solution:**
* Check for conflicting project assignments
* **Explicit tags override file-level:** If a task in a project file has its own `#project/other` tag, it belongs to "other", not the file's project
* Remove or correct the explicit project tag/metadata
***
### Duplicate Projects
**Issue:** The same project appears multiple times with different names.
**Solution:**
* Standardize project naming (see Best Practices above)
* Search your vault for variations: `#project/website`, `#project/Website`, `#project/web-site`
* Bulk-update inconsistent tags using find-and-replace or [Bulk Operations](/docs/bulk-operations)
***
### Project Status Not Updating
**Issue:** Changing a task's status doesn't update the project status.
**Solution:**
* **Project status is not editable** in Task Genius
* If you want to track project status, use:
* A manual field in the project file's frontmatter
* A dedicated task representing the project milestone
* [Workflows](/docs/workflows) to automate status based on task completion
## Related Features
* [Task View](/docs/task-view): Understand the overall task viewing system
* [View Modes](/docs/view-modes): Visualize project tasks in different formats
* [Popover Filter](/docs/task-view/filter/popover-filter): Filter tasks by project and other criteria
* [Bulk Operations](/docs/bulk-operations): Assign multiple tasks to a project at once
* [Workspace](/docs/workspace): Create workspace-specific project views
file: ./content/docs/quick-capture.mdx
meta: {
"title": "Quick Capture"
}
import { VersionCallout } from "@/components/VersionCallout";
Quick Capture lets you instantly record tasks and notes without interrupting your workflow. Whether you're in the middle of editing a document or need to jot down a quick idea, Task Genius provides multiple capture methods optimized for different scenarios.
## Overview
Task Genius offers three capture interfaces, each designed for specific use cases:
1. **Editor Quick Capture**: Inline panel within your current editor (like Org-mode's `M-x org-capture`)
2. **Minimal Quick Capture**: Simple modal for fast task entry with due date
3. **Detailed Capture**: Comprehensive modal with full metadata support and multi-line input
Starting with version 9.9.0, Quick Capture supports both:
* **Checkbox Tasks**: Traditional task items (`- [ ] Task`)
* **File-Level Tasks**: Entire notes as tasks (requires [File Indexer](#file-level-task-capture))
## Capture Methods
### 1. Editor Quick Capture (Inline Panel)
A lightweight input panel that appears at the bottom of your current editor, inspired by Org-mode's capture workflow.
**How to Use:**
1. Focus on any editor in Obsidian
2. Trigger the command: `Task Genius: Toggle quick capture panel`
3. **Default Hotkey**: `Alt+C` (customizable in Obsidian's Hotkeys settings)
4. Type your task or note
5. Press `Enter` to save to your configured capture file
**Best For:**
* Quick task entry while writing
* Minimal disruption to current work
* Keyboard-driven workflow
* Rapid inbox processing
**Behavior:**
* Panel appears at the bottom of the active editor
* Input remains focused for rapid successive captures
* Press `Esc` to close the panel
* Tasks are immediately appended to your capture file
***
### 2. Minimal Quick Capture Modal
A simple modal window for fast task capture with optional due date.
**How to Use:**
1. Trigger the command: `Task Genius: Quick capture (Global)`
2. Type your task
3. Optionally set a due date using the date picker
4. Press `Enter` or click "Capture" to save
**Best For:**
* Quick tasks with deadlines
* Simple capture without metadata complexity
* Users who prefer modal interfaces
* One-off task recording
**Features:**
* Clean, distraction-free interface
* Due date picker (optional)
* Single-line input for fast entry
* Works from anywhere in Obsidian
**Note:** While called "Global", this method still requires Obsidian to be open and focused.
***
### 3. Detailed Capture Modal
A comprehensive capture interface with full metadata support, multi-line input, and live preview.
**How to Use:**
1. Trigger the command: `Task Genius: Task capture with metadata`
2. Enter task content in the right-side input area
3. Configure metadata in the left-side metadata panel
4. Review the preview at the bottom
5. Click "Capture" to save
**Interface Layout:**
```
┌─────────────────────────────────────────┐
│ Detailed Task Capture │
├─────────────┬───────────────────────────┤
│ Metadata │ Input Area │
│ Panel │ (Multi-line) │
│ (Left) │ (Right) │
│ │ │
│ • Due Date │ - [ ] Write report │
│ • Priority │ - [ ] Review code │
│ • Tags │ - [ ] Send email │
│ • Project │ │
│ • Status │ │
│ • etc. │ │
├─────────────┴───────────────────────────┤
│ Preview: │
│ - [ ] Write report 📅 2025-01-20 🔺 │
└─────────────────────────────────────────┘
```
**Best For:**
* Complex tasks requiring multiple metadata fields
* Batch task entry (multiple tasks at once)
* Project-based task creation
* Tasks with detailed context
**Features:**
#### Multi-Line Input
Capture multiple tasks in one session:
```markdown
- [ ] Task 1
- [ ] Task 2
- [ ] Task 3
```
All tasks inherit the metadata you configure.
#### Relative Date Support
Use natural language for due dates:
* `明天` (tomorrow)
* `后天` (day after tomorrow)
* `大后天` (three days from now)
* `下周一` (next Monday)
* (Supports your system's date parsing)
#### Live Preview
See exactly what will be written to your file before capturing.
**Example:**
* **Input:** `Write report`
* **Metadata:** Due: 2025-01-20, Priority: High, Tags: #work
* **Preview:** `- [ ] Write report 📅 2025-01-20 🔺 #work`
#### Supported Metadata
Configure any task metadata:
* **Due Date**: Task deadline
* **Start Date**: When to begin
* **Scheduled Date**: Planned work date
* **Priority**: Urgency level (1-5)
* **Status**: Task state (not started, in progress, etc.)
* **Tags**: Categorization tags
* **Project**: Project assignment
* **Context**: Work context (e.g., @home, @office)
* (All standard task metadata fields)
## File-Level Task Capture
Create entire notes as tasks instead of checkbox items.
### Requirements
**File Indexer must be enabled:**
1. Open Task Genius settings
2. Go to **Indexer** settings
3. Enable **"File-level task indexing"** or similar option
Once enabled, the capture modals (Minimal and Detailed) display a **tab switcher** at the top.
### Tab Switcher
**Tabs:**
* **Checkbox Task**: Traditional task items (default)
* **File Task**: Entire notes as tasks
**Behavior:**
* Switch tabs to change capture mode
* Settings persist between sessions
* Tab only appears if File Indexer is enabled
### File Task Mode
When capturing a **File Task**:
1. **Template Integration**:
* Task Genius calls your configured template (if any)
* Template content is used as the base for the new file
* File name is generated based on your input
2. **Metadata as Frontmatter**:
* All metadata from the metadata panel is inserted as **YAML Frontmatter**
* No inline fields are used
3. **File Creation**:
* New file is created in the configured target location
* File name is derived from your task title or template settings
**Example Workflow:**
**Input:**
* **Mode:** File Task
* **Title:** `Website Redesign Project`
* **Metadata:**
* Due: 2025-02-15
* Priority: High
* Tags: work, design
* Project: Q1 Goals
**Result:**
File created: `Website Redesign Project.md`
```yaml
---
due: 2025-02-15
priority: high
tags:
- work
- design
project: Q1 Goals
---
# Website Redesign Project
(Template content if configured)
```
**Best For:**
* Project planning notes
* Large tasks requiring dedicated documentation
* Integration with project management workflows
* Notes that need extensive details
## Configuration
Open Quick Capture Settings
### Target File
Specify where captured tasks will be saved.
**Setting:** "Target File"
**Format:** File path (e.g., `Inbox.md`, `Daily/Capture.md`)
**Examples:**
```
Inbox.md
Quick Notes.md
Tasks/Capture.md
```
**File Auto-Creation:**
* If the file doesn't exist, Task Genius automatically creates it
* Parent directories are created if needed
***
### Dynamic Date Variables
Use date variables in the target file path for dynamic daily capture.
**Syntax:** `{{DATE:FORMAT}}`
**Supported Formats:** Any valid date format string (e.g., `YYYY-MM-DD`, `YYYY/MM/DD`, `YYYYMMDD`)
**Examples:**
**Daily Note Capture:**
```
Target File: Daily Notes/{{DATE:YYYY-MM-DD}}.md
Result (on 2025-01-15): Daily Notes/2025-01-15.md
```
**Monthly Capture:**
```
Target File: Capture/{{DATE:YYYY-MM}}/Tasks.md
Result (on 2025-01-15): Capture/2025-01/Tasks.md
```
**Weekly Capture:**
```
Target File: Weekly/{{DATE:YYYY-[W]WW}}.md
Result (on 2025-01-15): Weekly/2025-W03.md
```
**Benefit:** Automatically capture to today's note without manual file selection.
***
### Insert Position
Choose where in the target file captured items are added.
**Setting:** "Insert Position"
**Options:**
#### Append (Default)
Add captured tasks to the **end** of the file.
**Use Case:** Chronological task capture (newest at bottom)
**Example:**
```markdown
# Inbox
- [x] Old task 1
- [x] Old task 2
- [ ] New captured task ← Added here
```
***
#### Prepend
Add captured tasks to the **beginning** of the file.
**Use Case:** Newest tasks first (priority-based)
**Example:**
```markdown
# Inbox
- [ ] New captured task ← Added here
- [x] Old task 1
- [x] Old task 2
```
***
#### Replace
**Advanced Option** (use with caution)
Replace the entire file content with captured tasks.
**Use Case:** Temporary scratchpad or single-task files
**Warning:** All existing content is overwritten. Use only if intentional.
***
### Task Formatting
**Current Behavior:**
* Checkbox tasks are automatically prefixed with `- [ ]` (if not already present)
* Metadata is added as inline fields (for checkbox tasks) or frontmatter (for file tasks)
* No additional template variables or formatting options (planned for future versions)
**For Advanced Formatting:**
* Consider using File Task mode with templates
* Manually edit captured tasks after creation
* Use [Workflows](/docs/workflows) for post-capture automation
## Use Cases & Workflows
### Inbox Workflow (GTD Style)
Capture everything to a central inbox for later processing.
**Setup:**
1. **Target File:** `Inbox.md`
2. **Insert Position:** Append
3. **Method:** Editor Quick Capture (`Alt+C`)
**Daily Routine:**
* Throughout the day, press `Alt+C` to capture tasks as they come up
* At end of day, review `Inbox.md` and organize tasks (assign projects, dates, priorities)
* Use [Bulk Operations](/docs/bulk-operations) to process multiple inbox tasks at once
**Benefit:** Never lose a task, process later when you have time.
***
### Daily Note Integration
Automatically capture tasks to today's daily note.
**Setup:**
1. **Target File:** `Daily Notes/{{DATE:YYYY-MM-DD}}.md`
2. **Insert Position:** Append
3. **Method:** Minimal Quick Capture (for fast entry)
**Workflow:**
* Quick Capture creates or opens today's note automatically
* Tasks are added to the end of your daily note
* Review and organize tasks as part of your daily review
**Benefit:** Context-aware task capture tied to specific days.
***
### Project-Based Capture
Capture tasks directly to project files with full metadata.
**Setup:**
1. **Method:** Detailed Capture Modal
2. **Metadata:** Set project field to the target project
3. **Insert Position:** Append
**Workflow:**
1. Open Detailed Capture
2. Set **Project** metadata to `Website Redesign`
3. Enter multiple tasks in the input area
4. All tasks are tagged with the project and added to your capture file
**Alternative (File Task Mode):**
* Use File Task mode to create project notes directly
* Each project gets its own file with frontmatter metadata
**Benefit:** Immediate project association without manual tagging.
***
### Meeting Notes Capture
Quickly jot down action items during meetings.
**Setup:**
1. **Method:** Editor Quick Capture (inline panel)
2. **Target File:** `Meetings/{{DATE:YYYY-MM-DD}} Actions.md`
3. **Insert Position:** Append
**Workflow:**
* During meeting, press `Alt+C` to open capture panel
* Type action items as they come up
* Press `Enter` to save, continue listening
* Repeat as needed
**Post-Meeting:**
* Review `Meetings/2025-01-15 Actions.md`
* Use Detailed Capture or manual editing to add due dates and priorities
**Benefit:** Minimal interruption during meetings, structured capture for later processing.
***
### File Task for Project Planning
Create comprehensive project files with metadata.
**Setup:**
1. **Method:** Detailed Capture Modal
2. **Tab:** File Task
3. **Template:** (Configure a project template if desired)
4. **Target File:** `Projects/{{title}}.md` (or similar)
**Workflow:**
1. Open Detailed Capture
2. Switch to **File Task** tab
3. Enter project title: `Q1 Marketing Campaign`
4. Set metadata:
* Due: 2025-03-31
* Priority: High
* Tags: marketing, q1
5. Click "Capture"
**Result:**
New file created: `Projects/Q1 Marketing Campaign.md` with frontmatter containing all metadata.
**Benefit:** Structured project initialization with metadata-driven workflows.
## Best Practices
### 1. Choose the Right Capture Method for the Situation
**Quick Decision Guide:**
* **Editing a document?** → Editor Quick Capture (`Alt+C`)
* **Need to set a due date?** → Minimal Quick Capture
* **Complex task with metadata?** → Detailed Capture
* **Creating a project note?** → Detailed Capture (File Task mode)
***
### 2. Process Your Inbox Regularly
Don't let captured tasks pile up:
* Set a daily or weekly inbox review time
* Use [Task View](/docs/task-view) to see all inbox tasks
* Use [Bulk Operations](/docs/bulk-operations) to assign metadata efficiently
***
### 3. Use Dynamic Date Variables for Daily Notes
If you use daily notes, always configure:
```
Target File: Daily Notes/{{DATE:YYYY-MM-DD}}.md
```
This ensures tasks are captured to the correct day automatically.
***
### 4. Leverage Detailed Capture for Batch Entry
Instead of capturing one task at a time:
* Open Detailed Capture once
* Enter 5-10 tasks in the input area
* Set shared metadata (project, priority)
* Capture all at once
**Saves time** compared to individual captures.
***
### 5. Combine with Keyboard Shortcuts
**Recommended Hotkeys:**
* `Alt+C`: Editor Quick Capture (default)
* `Ctrl+Shift+C`: Minimal Quick Capture
* `Ctrl+Alt+Shift+C`: Detailed Capture
**Tip:** Assign hotkeys in Obsidian's Hotkeys settings for muscle-memory efficiency.
***
### 6. Use File Tasks for Large Initiatives
For tasks that need extensive documentation:
* Use **File Task** mode instead of checkbox tasks
* Create dedicated files for projects, goals, or complex tasks
* Benefit from templates and structured metadata
## Limitations
### No External Triggering
Quick Capture requires Obsidian to be open and focused. It cannot be triggered from outside Obsidian (e.g., global system hotkey).
**Workaround:**
* Use Obsidian's URI protocol with automation tools (e.g., AutoHotkey, Keyboard Maestro)
* Consider third-party integrations (check community resources)
***
### Limited Template Support (Checkbox Tasks)
Template variables (e.g., `{{date}}`, `{{time}}`, `{{content}}`) are not currently supported for checkbox task capture.
**Workaround:**
* Use **File Task** mode for template-based capture
* Manually edit tasks after capture
* Use [Workflows](/docs/workflows) for post-capture formatting
***
### Single Target File
Each capture method uses one configured target file (though it supports date variables).
**Workaround:**
* Use different capture methods for different targets
* Manually change target file in settings when needed
* Use **Project** metadata to organize tasks within a single capture file
***
### No Multi-File Capture
Cannot capture to multiple files simultaneously.
**Workaround:**
* Capture to inbox, then use [Task Mover](/docs/task-mover) to distribute tasks
* Use [Bulk Operations](/docs/bulk-operations) to move tasks to different project files
## Troubleshooting
### Capture Panel Not Appearing
**Issue:** Pressing `Alt+C` does nothing.
**Solution:**
* Ensure you're focused on an **editor pane** (not settings, graph, or other views)
* Check if the hotkey is conflicting with another plugin (Obsidian Settings → Hotkeys)
* Try triggering via command palette: `Ctrl/Cmd+P` → `Task Genius: Toggle quick capture panel`
***
### Tasks Not Saving to Target File
**Issue:** Captured tasks disappear or don't appear in the target file.
**Solution:**
* Verify the target file path in settings (Settings → Quick Capture → Target File)
* Check if the file exists or if auto-creation is working
* Ensure you have write permissions to the target directory
* Check the console for errors (`Ctrl/Cmd+Shift+I`)
***
### Date Variables Not Working
**Issue:** `{{DATE:YYYY-MM-DD}}` appears literally instead of being replaced.
**Solution:**
* Verify the syntax is exact: `{{DATE:FORMAT}}` (case-sensitive)
* Ensure you're using a valid date format string
* Restart Obsidian to reload settings
* Check Task Genius version (date variables require 9.9.0+)
***
### File Task Tab Not Showing
**Issue:** The "File Task" tab doesn't appear in capture modals.
**Solution:**
* Verify **File Indexer** is enabled in Task Genius settings
* Check Settings → Indexer → Enable file-level task indexing
* Restart Obsidian after enabling
* Ensure you're using Task Genius 9.9.0 or later
***
### Metadata Not Applying
**Issue:** Metadata from Detailed Capture isn't added to tasks.
**Solution:**
* **Checkbox Tasks:** Metadata should appear as inline fields (e.g., `[due:: 2025-01-20]`)
* **File Tasks:** Metadata should be in YAML frontmatter
* Check the preview pane before capturing to verify formatting
* Ensure metadata fields are filled correctly (no invalid values)
***
### Preview Showing Wrong Format
**Issue:** Preview doesn't match what actually gets captured.
**Solution:**
* This may indicate a bug—report to the developer
* Double-check your settings (Insert Position, Target File)
* Try capturing a test task to a scratch file
## Related Features
* [Task View](/docs/task-view): Process captured tasks in the dedicated task view
* [Bulk Operations](/docs/bulk-operations): Efficiently organize captured tasks
* [Task Mover](/docs/task-mover): Move captured tasks to permanent locations
* [Workflows](/docs/workflows): Automate post-capture actions
* [Date & Priority](/docs/date-priority): Learn about task metadata captured in Detailed mode
file: ./content/docs/reward.mdx
meta: {
"title": "Reward"
}
Task Genius includes a reward system to gamify your productivity and motivate task completion through points, levels, and achievements.
## Getting Started
Open Reward Settings
## Features
* **Points System**: Earn points for completing tasks
* **Level Progression**: Advance through levels as you accumulate points
* **Achievement Tracking**: Unlock achievements for various milestones
* **Customizable Rewards**: Configure point values and reward criteria
## Configuration
Navigate to the Reward settings tab to customize:
* Point values for different task types
* Level thresholds and progression
* Achievement criteria
* Visual indicators and notifications
file: ./content/docs/task-gutter.mdx
meta: {
"title": "Task Gutter"
}
import { VersionCallout } from "@/components/VersionCallout";
import { CalendarCheckIcon } from "lucide-react";
Has popover menu to edit task status, priority, due date, start date, scheduled date, and tags. Or a modal when using mobile.
## Usage
You need to enable this feature in the settings.
1. Go to the Task Genius settings.
2. Visit the `Task Handler` section.
3. Enable the `Enable Task Gutter` setting.
4. Save the settings.
Then you can use the task gutter when using live-preview mode in the editor.
This feature is not available in the read mode.
You need to create at least one task in the document to use this feature.
The gutter menu will appear on the right side of the editor with a icon.
## Settings
You can configure the gutter menu in the `Task Handler` section.
* `Enable Task Gutter`: Enable the task gutter feature.
file: ./content/docs/task-mover.mdx
meta: {
"title": "Move Tasks"
}
Keep your active notes tidy by archiving completed or specific groups of sub-tasks to a designated location using Task Mover commands.
## Usage
Place your cursor on the parent task line whose sub-tasks you want to move. Then, use the Obsidian command palette (`Ctrl/Cmd + P`) to run one of the available commands:
* **`Task Genius: Move all completed subtasks to other file`**: Moves only the sub-tasks marked as complete (e.g., `[x]`) under the current parent task.
* **`Task Genius: Move direct completed subtasks to other file`**: Moves only the *direct* children marked as complete, ignoring nested completed tasks.
* **`Task Genius: Move all subtasks to other file`**: Moves *all* sub-tasks (regardless of status) under the current parent task.
* **`Task Genius: Move task to other file`**: Moves the task line the cursor is currently on (could be a parent or a sub-task).
* **`Task Genius: Move direct incomplete subtasks to other file`**: Moves only the *direct* children marked as incomplete, ignoring nested incomplete tasks.
* **`Task Genius: Move all incomplete subtasks to other file`**: Moves *all* sub-tasks (regardless of status) under the current parent task.
## Settings
In the Task Genius settings (in the "Task Mover" section), you can configure:
* **Destination File**: Specify the path to the file where tasks should be moved (e.g., `Archive/Completed Tasks.md`). This often uses the same setting as Quick Capture's target file.
* **Formatting**: Add markers or context when moving tasks, such as:
* Timestamping: Automatically add the date/time of archival (e.g., using `{{DATE:YYYY-MM-DD}}`).
* Link Back: Optionally add a link back to the original source note.
* **Behavior**: Choose whether to append to the destination file, prepend, or replace specific sections.
* **Enable incomplete subtask mover**: If enabled, the "Move all incomplete subtasks to other file" command will be available.
file: ./content/docs/task-sorter.mdx
meta: {
"title": "Sort Tasks",
"label": "New"
}
Automatically sort tasks within a document or specific sections based on customizable criteria. This helps maintain organization and prioritize tasks effectively.
## Usage
Task sorting can be applied either to the entire document or just the tasks under the heading where your cursor is located.
Use the Obsidian command palette (`Ctrl/Cmd + P`) to run one of the available commands:
* **`Task Genius: Sort Tasks in Section`**: Sorts all tasks found under the current heading level (and its sub-headings) based on the configured criteria. Place your cursor within the section you want to sort before running the command.
* **`Task Genius: Sort Tasks in Entire Document`**: Sorts all tasks throughout the entire active note based on the configured criteria.
**Note:** Sorting modifies the document directly. Ensure you are satisfied with the sort criteria before applying it to large documents.
## Settings
Enable and configure task sorting in the Task Genius settings under the "Task Sorting Settings" section:
1. **Enable Task Sorting**: You must first toggle this setting on to enable the sorting commands and access the configuration options below.
2. **Sort Criteria**: Define the rules for how tasks should be ordered.
* Click **"Add Sort Criterion"** to add a new rule.
* For each criterion, select:
* **Field**: The task attribute to sort by (Status, Priority, Due Date, Start Date, Scheduled Date, or Content/Description).
* **Order**: Ascending (`asc`) or Descending (`desc`). The meaning of ascending/descending depends on the field:
* **Priority**: `asc` (Highest to Lowest), `desc` (Lowest to Highest).
* **Dates**: `asc` (Earliest to Latest), `desc` (Latest to Earliest). Tasks without a date are usually placed last in ascending order.
* **Status**: `asc` generally follows a logical progression (e.g., Overdue -> Due -> Undated -> Done), `desc` reverses this.
* **Content**: `asc` (A-Z), `desc` (Z-A).
* **Order Matters**: Criteria are applied sequentially. Tasks are first sorted by the top criterion, then tasks with the same value for the first criterion are sorted by the second, and so on.
* **Manage Criteria**:
* Use the **up/down arrows** to reorder criteria.
* Click the **trash icon** to remove a criterion.
* Click **"Reset to Defaults"** to revert to the plugin's default sorting rules.
**Default Sort Order (Example):**
The default might be something like:
1. Status (Ascending: Overdue, Due Soon, ..., Done)
2. Priority (Ascending: Highest, High, ..., Lowest)
3. Due Date (Ascending: Earliest to Latest)
> Please reload the plugin after changing the settings.
file: ./content/docs/task-status.mdx
meta: {
"title": "Task Status & Cycling"
}
import { VersionCallout } from "@/components/VersionCallout";
Task Status allows you to go beyond Obsidian's basic "incomplete" (`- [ ]`) and "complete" (`- [x]`) checkboxes. Define custom task states like "In Progress", "Waiting", or "Abandoned" to match your workflow, then cycle through them with a single click.
## Why Use Custom Task Statuses?
### The Problem with Basic Checkboxes
Obsidian's default tasks only support two states:
* `- [ ]` Incomplete
* `- [x]` Complete
But real-world tasks often have more nuanced states:
* Tasks you're actively working on (in progress)
* Tasks waiting for someone else (blocked)
* Tasks you've decided not to do (abandoned)
* Tasks you're planning to do later (scheduled)
### The Solution
Task Genius lets you define **custom status markers** and organize them into a **status cycle** that matches your workflow.
**Example:**
```markdown
- [ ] Buy groceries ← Not started
- [/] Write report ← In progress
- [?] Review proposal ← Waiting/Planned
- [-] Cancelled meeting ← Abandoned
- [x] Submit invoice ← Completed
```
## Common Use Cases
### GTD (Getting Things Done) Workflow
**Status Cycle:** Inbox → Next Action → Waiting → Done
```markdown
- [ ] Process emails ← Inbox
- [>] Call client ← Next Action
- [?] Waiting for approval ← Waiting
- [x] Send proposal ← Done
```
### Agile/Scrum Development
**Status Cycle:** Backlog → In Progress → Review → Done
```markdown
- [ ] Add login feature ← Backlog
- [/] Implement API ← In Progress
- [r] Code review pending ← Review
- [x] Deploy to staging ← Done
```
### Simple Three-State Workflow (Recommended for Beginners)
**Status Cycle:** To Do → Doing → Done
```markdown
- [ ] Read documentation ← To Do
- [/] Write code ← Doing
- [x] Submit PR ← Done
```
## Quick Start
Open Task Status Settings
### For New Users: Add "In Progress" Status
The simplest enhancement is adding a single "In Progress" state:
1. Open **Task Status Settings**
2. Go to **"Task Status Switcher"** section
3. Click **"Add status"**
4. Configure the new status:
* **Status name:** `In Progress`
* **Mark:** `/` (forward slash)
* **Include in cycle:** ✅ Enabled
5. **Save settings**
Now you can cycle through: `[ ]` → `[/]` → `[x]`
### For Advanced Users: Create Custom Workflow
Create a full custom status cycle:
1. Open **Task Status Settings**
2. In **"Task Status Switcher"**, add multiple statuses:
* `Not Started` → Mark: ` ` (space)
* `In Progress` → Mark: `/`
* `Review` → Mark: `r`
* `Waiting` → Mark: `?`
* `Done` → Mark: `x`
3. Use **up/down arrows** to reorder the cycle
4. **Enable "Enable task status switcher"** toggle
5. **Save settings**
## Cycling Through Statuses
### Click to Cycle
Once configured, click the checkbox to cycle through your defined statuses:
**Example Cycle:**
```
Click 1: - [ ] Task → - [/] Task (In Progress)
Click 2: - [/] Task → - [x] Task (Done)
Click 3: - [x] Task → - [ ] Task (Back to start)
```
**Where You Can Click:**
* **In Editor (Live Preview):** Click the checkbox or custom mark
* **In Task Genius View:** Click the task marker in the task list
* **In Source Mode:** Click the text mark (if "Enable text mark in source mode" is enabled)
### Keyboard Commands
Use commands for precise control:
* **`Task Genius: Cycle task status forward`**: Move to the next status in your cycle
* **`Task Genius: Cycle task status backward`**: Move to the previous status
**Tip:** Assign hotkeys to these commands in Obsidian's Hotkeys settings for faster status changes.
## Defining Status Categories
Task Genius needs to understand what each status marker **means** for progress tracking and automation.
### Status Categories
Configure these in **"Task Status Settings"** → **"Defining Status Markers"**:
#### 1. **Not Started** (Default: ` ` space)
Tasks that haven't been started yet.
```markdown
- [ ] Plan project
- [ ] Schedule meeting
```
**Behavior:**
* Counted as incomplete in progress bars
* Default starting state for new tasks
***
#### 2. **In Progress** (Default: `/`)
Tasks actively being worked on.
```markdown
- [/] Writing documentation
- [>] Debugging feature
```
**Behavior:**
* Counted as incomplete but "active" in progress bars
* Can trigger parent task automation (see below)
* Can work with [Append Date](/docs/append-date) to auto-add start dates
**Multiple Markers:** Use `|` to define alternatives: `/|>` (both `/` and `>` mean "in progress")
***
#### 3. **Planned** (Default: `?`)
Tasks scheduled or waiting for action from others.
```markdown
- [?] Waiting for client feedback
- [?] Scheduled for next week
```
**Behavior:**
* Counted as incomplete by default
* Often excluded from progress tracking (see [Task Counting](#task-counting) below)
***
#### 4. **Abandoned** (Default: `-`)
Tasks that won't be completed (cancelled, not relevant, etc.).
```markdown
- [-] Cancelled meeting
- [-] Obsolete task
```
**Behavior:**
* Counted as "not completed" but removed from active tracking
* Often excluded from progress bars
***
#### 5. **Completed** (Default: `x`)
Finished tasks.
```markdown
- [x] Submitted report
- [X] Deployed feature ← Capital X also works
```
**Behavior:**
* Counted as complete in progress bars
* Can auto-set completion date
* Visually distinct (strikethrough) in most themes
**Multiple Markers:** Use `x|X` to accept both lowercase and uppercase
***
### Handling Other Statuses
If you use a marker not defined in the categories above (e.g., `[!]`, `[r]`), configure how Task Genius should interpret it:
**Setting:** "Count other statuses as"
**Options:**
* `not started`
* `in progress`
* `planned`
* `abandoned`
* `completed`
**Example:** If you use `[!]` for urgent tasks, set "Count other statuses as" to `in progress`.
## Task Counting & Progress Bars
Control which tasks contribute to progress calculations.
### Exclude Specific Markers
Prevent certain statuses from being counted in progress totals.
**Setting:** "Exclude specific task markers"
**Format:** Separate markers with `|`
**Example:** `?|-` (exclude planned and abandoned tasks)
**Use Case:**
```markdown
- [ ] Write code ← Counted (0/3 complete)
- [/] Review PR ← Counted (0/3 complete)
- [?] Wait for approval ← NOT counted (excluded)
- [-] Cancelled task ← NOT counted (excluded)
- [x] Deploy ← Counted (1/3 complete)
```
Progress: **1/3** (33%)
***
### Only Count Specific Markers
Whitelist which statuses should be counted, ignoring all others.
**Setting:** "Only count specific task markers"
**Format:** Enable toggle, then specify markers with `|`
**Example:** ` |/|x` (only count not started, in progress, and completed)
**Use Case:** Strict progress tracking, ignoring all intermediate states like "planned" or "waiting".
***
Read more about progress bars in the [Progress Bars](/docs/progress-bars) documentation.
## Parent Task Automation
Automatically update parent tasks based on their subtasks.
### Auto-Complete Parent Tasks
**Setting:** "Auto complete parent task"
When **all** subtasks are completed, the parent task is automatically marked as complete.
**Example:**
```markdown
- [ ] Project Launch
- [x] Design mockups
- [x] Develop feature
- [x] Write tests
```
After completing the last subtask, the parent automatically becomes:
```markdown
- [x] Project Launch ← Auto-completed
- [x] Design mockups
- [x] Develop feature
- [x] Write tests
```
**Benefits:**
* Visual feedback of project completion
* Accurate progress tracking
* Reduced manual status updates
***
### Mark Parent as "In Progress"
**Setting:** "Mark parent as 'in progress' when partially complete"
When **some** (but not all) subtasks are completed, the parent task is automatically marked with your "in progress" marker.
**Example:**
```markdown
- [ ] Project Launch
- [x] Design mockups ← Completed
- [ ] Develop feature ← Not started
- [ ] Write tests ← Not started
```
After completing one subtask, the parent automatically becomes:
```markdown
- [/] Project Launch ← Auto-marked as "in progress"
- [x] Design mockups
- [ ] Develop feature
- [ ] Write tests
```
**Benefits:**
* Visual indicator of active projects
* Easy identification of work-in-progress
* Integrates with [Append Date](/docs/append-date) to auto-add start dates
**Note:** This requires "Auto complete parent task" to be enabled.
***
### Integration with Append Date
When parent tasks are marked "in progress", they can automatically receive a **start date** if you've configured the [Append Date](/docs/append-date) feature.
**Example Workflow:**
1. Parent task starts as `- [ ] Project Launch`
2. You complete the first subtask
3. Parent becomes `- [/] Project Launch ⏳ 2025-01-15` (start date auto-added)
4. Complete all subtasks
5. Parent becomes `- [x] Project Launch ⏳ 2025-01-15 ✅ 2025-01-20` (completion date auto-added)
This provides a complete timeline of your project's lifecycle.
## Visual Customization
### Custom Task Marks
**Setting:** "Enable custom task marks"
Replace standard checkboxes with **styled text marks** based on your status cycle.
**Visual Effect:**
**Disabled (Default):**
```
☐ Not started
☐ In progress (still shows checkbox)
☑ Done
```
**Enabled:**
```
[ ] Not started
[/] In progress ← Custom styled mark
[x] Done
```
The marks are styled with CSS classes, allowing themes to customize their appearance.
**Performance:** No impact on performance.
***
### Text Marks in Source Mode
**Setting:** "Enable text mark in source mode"
Allow clicking the text mark in **Source Mode** to cycle status.
**Disabled:** Must click the actual checkbox area
**Enabled:** Click anywhere on `[/]` to cycle
**Use Case:** Useful if you frequently work in Source Mode and want faster status cycling.
***
### Cycle Complete Status
**Setting:** "Enable cycle complete status"
Determine if clicking cycles through **all** defined states or stops at "complete".
**Enabled (Recommended):** Clicking cycles through all states in your defined cycle (including completed)
**Disabled:** Clicking stops at the completed state and won't cycle further
**Example (Enabled):**
```
[ ] → [/] → [x] → [ ] → [/] → [x] → ...
```
**Example (Disabled):**
```
[ ] → [/] → [x] (stops here, must manually edit to revert)
```
## Status Cycle Configuration
### Creating Your Cycle
**Location:** Settings → Task Status Settings → "Task Status Switcher"
1. **Enable the switcher:** Toggle "Enable task status switcher"
2. **Add statuses:** Click "Add status" for each state in your workflow
3. **Configure each status:**
* **Status name:** Human-readable name (e.g., "In Progress")
* **Mark:** Single character marker (e.g., `/`)
* **Include in cycle:** Whether clicking should cycle through this status
4. **Reorder:** Use up/down arrows to set the cycling sequence
5. **Remove:** Use trash icon to delete unwanted statuses
### Include in Cycle
The **"Include in cycle"** toggle controls whether a status appears when clicking to cycle.
**Use Case:** Define statuses you want to set manually (via commands or context menu) but don't want in the click cycle.
**Example:**
```markdown
Cycle (clicking): [ ] → [/] → [x] → [ ] ...
Manual only: [?] Waiting (set via command, not in click cycle)
```
This keeps your click cycle simple while still supporting advanced statuses.
## Applying Status Themes
**Setting:** Task Status Settings → "Apply theme"
Quickly adopt predefined status configurations.
**Available Themes:**
* **Standard:** Basic Obsidian-style statuses
* **Things3:** Inspired by the Things 3 app
* (More themes may be available in your version)
**Warning:** Applying a theme will **override** both your:
* Custom status category definitions
* Custom status cycle configuration
**Recommendation:** Configure your own statuses manually for full control.
## Best Practices
### For Beginners: Keep It Simple
**Recommended Setup:**
* **States:** Not Started → In Progress → Done
* **Markers:** ` ` (space) → `/` → `x`
* **Parent automation:** Enable "Auto complete parent task"
This provides a significant upgrade over basic checkboxes without overwhelming complexity.
***
### For Advanced Users: Optimize for Your Workflow
**GTD Users:**
* Add "Waiting" (`?`) for tasks dependent on others
* Add "Someday" (`~`) for future considerations
* Exclude `?|~` from progress tracking
**Agile/Scrum Teams:**
* Add "Review" (`r`) for code review or QA
* Add "Blocked" (`!`) for tasks with dependencies
* Use parent automation for sprint tracking
**Project Managers:**
* Add "On Hold" (`h`) for paused work
* Add "Cancelled" (`-`) for scope changes
* Enable all parent task automation for accurate reporting
***
### Standardize Across Your Vault
**Consistency Tip:** Define your status cycle once and stick to it across all notes.
**Why:**
* Reliable progress tracking
* Easier filtering in Task Genius View
* Better compatibility with templates and automation
***
### Combine with View Modes
Use custom statuses with [View Modes](/docs/view-modes):
* **Kanban View:** Visualize tasks grouped by status
* **List View:** Filter by specific status markers
* **Calendar View:** See when tasks enter different states
***
### Use Context Menu for Rare Statuses
For statuses you rarely use:
* **Don't** include them in the cycle
* **Do** set them via right-click context menu or commands
This keeps your click cycle fast and predictable.
## Troubleshooting
### Status Not Cycling
**Issue:** Clicking the checkbox doesn't change status.
**Solution:**
* Verify "Enable task status switcher" is toggled ON
* Check that the status has "Include in cycle" enabled
* Ensure you're clicking the correct area (checkbox or mark)
* Try using the command `Task Genius: Cycle task status forward` instead
***
### Parent Task Not Auto-Completing
**Issue:** Completing all subtasks doesn't complete the parent.
**Solution:**
* Verify "Auto complete parent task" is enabled in settings
* Ensure all subtasks are using your defined "completed" marker (default `x`)
* Check that subtasks are properly indented under the parent
* Refresh the task index: `Task Genius: Refresh task index`
***
### Custom Marks Not Showing
**Issue:** Tasks still show standard checkboxes instead of custom marks.
**Solution:**
* Verify "Enable custom task marks" is toggled ON
* Check that your theme supports custom task styling
* Switch between Live Preview and Reading Mode to refresh
* Restart Obsidian if styling doesn't apply
***
### Progress Bars Counting Wrong Tasks
**Issue:** Progress percentages include tasks you want to exclude.
**Solution:**
* Review "Exclude specific task markers" setting
* Ensure markers are separated by `|` (e.g., `?|-`)
* Check "Count other statuses as" setting
* Use "Only count specific task markers" for stricter control
***
### Cycle Skipping Statuses
**Issue:** Clicking skips over some statuses in your cycle.
**Solution:**
* Verify all desired statuses have "Include in cycle" enabled
* Check the order of statuses (use up/down arrows to reorder)
* Ensure each status has a unique marker character
* Reload settings or restart Obsidian
## Related Features
* [Progress Bars](/docs/progress-bars): Visualize task completion with custom statuses
* [Append Date](/docs/append-date): Auto-add start/completion dates when status changes
* [View Modes](/docs/view-modes): Use Kanban View to visualize tasks by status
* [Bulk Operations](/docs/bulk-operations): Change status for multiple tasks at once
* [Workflows](/docs/workflows): Automate status changes based on triggers
file: ./content/docs/task-timer.mdx
meta: {
"title": "Task Timer"
}
The Task Timer lets you track time spent on tasks, export/import timer data, and show formatted durations in your notes.
Open Task Timer Settings
## Enable the Task Timer
* Go to Obsidian → Settings → Task Genius → Task Timer
* Toggle “Enable Task Timer”
Once enabled, additional options for detection and formatting appear.
## Metadata Detection
Task Timer can automatically enable for specific files using simple metadata rules:
* Frontmatter field: Name of a boolean field in frontmatter that enables the timer (e.g. `task-timer: true`)
* Folder paths: Comma-separated list of folders where the timer is active
* Tags: Comma-separated list of tags that enable the timer
Tip: You can mix these to control scope precisely.
## Time Format Template
Customize how durations render using tokens:
* `{h}` = hours
* `{m}` = minutes
* `{s}` = seconds
Examples:
* `{h}hrs{m}mins` → 2hrs30mins
* `{h}h {m}m {s}s` → 2h 30m 45s
* `{h}:{m}:{s}` → 2:30:45
* `({m}mins)` → (150mins)
## Block References
Choose a prefix for generated block reference IDs (e.g. `timer` generates IDs like `^timer-123456-7890`).
## Data Management Commands
Use the command palette (Cmd/Ctrl+P) to:
* Export task timer data
* Import task timer data
* Export task timer data (YAML)
* Create task timer backup
* Show task timer statistics
## Troubleshooting
* Timer not appearing? Ensure it’s enabled and your file matches the detection rules (frontmatter/folder/tags)
* Unexpected format output? Double-check the time format template tokens
## Best Practices
* Keep detection rules as narrow as needed to reduce noise
* Choose a consistent time format for better readability across notes
* Use exports/backups for periodic snapshots of your work
file: ./content/docs/time-parsing.mdx
meta: {
"title": "Time Parsing"
}
import { TimeParsingExample } from '@/components/TimeParsingExample';
Time Parsing enables natural-language date/time handling in Task Genius with enhanced support for specific times and time ranges.
Open Time Parsing Settings
## Overview
Task Genius provides comprehensive time parsing that goes beyond basic date recognition to include:
* **Single Times**: Specific times like `12:00`, `2:30 PM`, `14:30:00`
* **Time Ranges**: Duration blocks like `9:00-17:00`, `2:30 PM - 4:00 PM`
* **Date + Time Combinations**: Full scheduling like `2024-12-25 14:30` or `tomorrow 3pm`
* **Time-Only Expressions**: Times without dates that inherit context intelligently
### Interface Options
* **Desktop**: Uses a popover date/time picker for quick selection
* **Mobile**: Uses a modal with the same functionality
## Supported Time Formats
### Single Times
Task Genius recognizes various time formats for precise scheduling:
#### 24-Hour Format
```markdown
- [ ] Meeting 📅 14:30
- [ ] Call client 📅 09:15:00
- [ ] Lunch break 📅 12:00
```
#### 12-Hour Format with AM/PM
```markdown
- [ ] Morning standup 📅 9:00 AM
- [ ] Afternoon review 📅 2:30 PM
- [ ] Evening workout 📅 6:00:00 PM
```
#### Combined Date and Time
```markdown
- [ ] Project deadline 📅 2024-12-25 23:59
- [ ] Doctor appointment 📅 tomorrow 2:30 PM
- [ ] Team meeting 📅 next friday 10:00 AM
```
### Time Ranges
For tasks that span a duration, use time ranges with various separators:
#### Standard Range Formats
```markdown
- [ ] Workshop 📅 9:00-17:00
- [ ] Conference call 📅 2:30 PM - 4:00 PM
- [ ] Study session 📅 14:00~16:30
- [ ] Office hours 📅 9:00 AM - 12:00 PM
```
#### Midnight Crossing Ranges
```markdown
- [ ] Night shift 📅 23:00-07:00
- [ ] Late project work 📅 22:30 - 01:30
```
### Time-Only Expressions
When you specify times without explicit dates, Task Genius intelligently determines the appropriate date using this priority order:
1. **Current Line Date**: Date mentioned in the same line
2. **File Metadata Date**: Date from frontmatter or file properties
3. **Daily Note Date**: Date extracted from daily note title/path
4. **File Creation Time**: When the file was created
#### Examples
```markdown
# 2024-12-25 Daily Note
- [ ] Morning coffee 📅 8:00 AM # Uses 2024-12-25
- [ ] Team sync 📅 10:30-11:00 # Uses 2024-12-25
## Project Tasks
- [ ] Code review 📅 14:00 # Inherits from daily note date
```
## Supported Date Inputs
In addition to enhanced time parsing, all existing date formats continue to work:
### Natural Language
* `today`, `tomorrow`, `yesterday`
* `next monday`, `next week`, `next month`
* `in 2 days`, `in 3 weeks`, `in 1 hour`
### Explicit Formats
* `2025-09-30`, `09/30/2025`
* `Dec 25, 2024`, `25 December 2024`
### Combined Examples
```markdown
- [ ] Project kickoff 📅 next monday 9:00 AM
- [ ] Deadline 📅 in 2 weeks 17:00
- [ ] Review meeting 📅 tomorrow 14:30-15:30
```
## Timeline View Enhancements
The enhanced time parsing significantly improves the Timeline view experience:
### Chronological Ordering
* Tasks with specific times appear in chronological order within each day
* Time-only tasks are sorted by their actual parsed times (not defaulting to 00:00)
* Tasks without times appear separately or with default time indicators
### Time Range Visualization
* Tasks with time ranges show the start time prominently
* Range duration is displayed when viewing task details
* Visual indicators distinguish between single times and ranges
### Time-Based Grouping
* Tasks at the same time are grouped together
* Clear separation between timed and untimed tasks
* Improved readability for daily schedule overview
## Editor Interactions
### Live Preview Mode
* Click date icons/markers to open the time picker
* Time components are highlighted and editable
* Real-time validation of time formats
### Source Mode
* Direct text editing with format validation
* Auto-completion for common time patterns
* Syntax highlighting for recognized time expressions
### Keyboard Shortcuts
* Follow your editor environment settings
* Quick time insertion commands available
* Tab completion for time formats
## Settings & Configuration
### Time Format Preferences
* **Default Format**: Choose between 12-hour and 24-hour display
* **AM/PM Handling**: Set default period for ambiguous times
* **Range Separators**: Customize which separators to recognize
### Parsing Behavior
* **Midnight Crossing**: How to handle ranges that span midnight
* **Fallback Strategy**: What to do when time parsing fails
* **Date Inheritance**: Priority order for time-only expressions
### Locale Support
* Locale-aware parsing respects your system settings
* Regional time format preferences
* Internationalized error messages
## Troubleshooting
### Common Issues
#### Time Not Recognized
**Problem**: Your time format isn't being parsed
**Solutions**:
* Try explicit formats: `14:30` instead of `2:30`
* Add AM/PM for 12-hour times: `2:30 PM`
* Check for typos in separators: `-` vs `–` vs `~`
#### Wrong Date Applied
**Problem**: Time-only expressions get unexpected dates
**Solutions**:
* Add explicit date: `2024-12-25 14:30`
* Check file metadata for conflicting dates
* Verify daily note date format in filename
#### Timeline Display Issues
**Problem**: Tasks appear at wrong times in timeline
**Solutions**:
* Refresh the timeline view
* Check time format consistency
* Verify timezone settings in Obsidian
#### Range Parsing Problems
**Problem**: Time ranges not recognized properly
**Solutions**:
* Use standard separators: `-`, `-`, or `~`
* Ensure both times use same format (both 24h or both 12h)
* Check for midnight crossing configuration
### Format Validation
If a time expression isn't recognized:
1. **Try explicit formats**: Use `YYYY-MM-DD HH:mm` for guaranteed parsing
2. **Check locale settings**: Confirm your system/Obsidian locale matches expected format
3. **Use standard separators**: Stick to `-`, `-`, or `~` for ranges
4. **Verify AM/PM**: Always include AM/PM for 12-hour format times
### Performance Considerations
For large vaults with many tasks:
* Time parsing is optimized for performance
* File metadata is cached to avoid repeated file system access
* Background processing handles bulk time parsing operations
## Migration from Basic Time Parsing
Existing tasks with basic time information are automatically enhanced:
* Previous date-only tasks continue to work unchanged
* Tasks with basic time info get enhanced time components
* No manual migration required - enhancement happens automatically
* All existing functionality remains backward compatible
## Best Practices
### Consistent Formatting
* Choose either 12-hour or 24-hour format and stick with it
* Use the same range separator throughout your vault
* Be explicit with AM/PM when using 12-hour format
### Effective Time Ranges
* Use ranges for tasks that have a specific duration
* Consider using single times for deadlines or start times
* Leverage midnight crossing for shift work or late-night tasks
### Date Inheritance Optimization
* Use daily notes for time-only task organization
* Set file metadata dates for project-specific task files
* Organize tasks hierarchically to benefit from parent date inheritance
file: ./content/docs/view-modes.mdx
meta: {
"title": "View Modes"
}
import { VersionCallout } from "@/components/VersionCallout";
import { ListIcon, ColumnsIcon, GitBranchIcon, CalendarIcon } from "lucide-react";
View Modes provide different ways to visualize and interact with your tasks. While the left sidebar lets you choose **what tasks to see** (Inbox, Today, Upcoming, Flagged), the View Mode selector at the top lets you choose **how to see them**.
## Overview
Task Genius offers four distinct View Modes, each optimized for different workflows:
* ** List View**: Traditional flat list display
* ** Kanban View**: Visual board with status-based columns
* ** Tree View**: Hierarchical task display
* ** Calendar View**: Time-based calendar layout
**Key Benefits:**
* View the same tasks in different ways without changing filters
* Each view (Inbox, Today, Upcoming, Flagged) remembers its preferred View Mode
* Switch perspectives instantly to match your current workflow
* All View Modes are workspace-specific (see [Workspace](/docs/workspace))
## Switching View Modes
### Quick Switch
1. Open any task view (Inbox, Today, Upcoming, or Flagged).
2. Look for the **View Mode selector** at the top of the main panel.
3. Click one of the four horizontal icon buttons:
* for List View
* for Kanban View
* for Tree View
* for Calendar View
4. The view updates immediately to reflect your selection.
### Persistence
* Each view (Inbox, Today, Upcoming, Flagged) **independently saves** its View Mode.
* For example, you can have Inbox in List View and Today in Calendar View simultaneously.
* Your View Mode preference is saved per [Workspace](/docs/workspace).
* When you return to a view, it automatically displays in your last selected View Mode.
## View Modes Reference
### List View (Default)
The traditional flat list display showing tasks in a linear format.
**Features:**
* Displays all tasks in a single scrollable list
* Shows full task details (content, dates, priority, tags, project)
* Supports text filtering via search bar
* Automatic sorting by completion status, priority, due date, and content
* Lazy loading for performance with large task lists
* Direct task interaction (completion, selection, context menu)
**Best For:**
* Quick scanning of all tasks
* Text-based searching and filtering
* General task management
* When you need to see all task details at once
**Inherited From:** [Inbox View](/docs/task-view/inbox-view) List Mode
**See Also:** [List Item](/docs/task-view/list-item) for details on task rendering.
***
### Kanban View
A visual board organizing tasks into columns based on their status, perfect for workflow management.
**Features:**
* **Columns**: Tasks are grouped by status (e.g., "Todo", "In Progress", "Done")
* **Drag & Drop**: Move tasks between columns to update their status
* **Visual Workflow**: See task progression at a glance
* **Filtering**: Add multiple filters (Tag, Priority, Project, etc.) to narrow displayed tasks
* **Grouping**: Default grouping by task status; can group by other metadata
* **Sorting**: Customizable sorting within columns (by priority, due date, etc.)
* **Empty Columns**: Option to hide empty columns for a cleaner view
**Interactions:**
* **Drag tasks** between columns to change their status
* **Click a task** to select and view details
* **Right-click** for context menu actions
* **Filter controls** at the top to refine displayed tasks
**Column Organization:**
* Columns follow your task status configuration
* Standard statuses appear first, then custom statuses, then completed statuses
* Tasks within columns are sorted by priority (highest first) and due date (earliest first)
**Best For:**
* Visual workflow management
* Quick status updates via drag-and-drop
* Team collaboration and progress tracking
* Sprint planning and execution
**Inherited From:** [Status View](/docs/task-view/status-view)
**Note:** Available filters include Status, Tag, Project, Context, Priority, Completed, and File Path.
***
### Tree View
Displays tasks hierarchically, showing parent-child relationships in an expandable tree structure.
**Features:**
* **Hierarchical Display**: Parent tasks with nested subtasks
* **Expand/Collapse**: Control which task branches are visible
* **Relationship Visualization**: Clearly see task dependencies and structure
* **Inherited List Features**: Maintains all List View capabilities (sorting, filtering, etc.)
**Interactions:**
* **Expand/Collapse nodes** to manage visual complexity
* **View task hierarchies** at a glance
* **All standard task actions** (completion, selection, context menu)
**Availability:**
* **Only available when List View is applicable**
* Not available in Kanban or Calendar modes
* Think of Tree View as an enhanced variant of List View
**Best For:**
* Project management with subtasks
* Complex task hierarchies
* Understanding task dependencies
* Breaking down large tasks into smaller components
**Inherited From:** [Inbox View](/docs/task-view/inbox-view) Tree Mode
**Note:** Tree View is particularly useful for projects with multi-level task structures.
***
### Calendar View
Time-based visualization displaying tasks on a calendar based on their dates.
**Features:**
* **Multiple Calendar Views**:
* **Year View**: High-level annual overview
* **Month View**: Tasks across a specific month
* **Week View**: Current or selected week focus
* **Day View**: Single-day task examination
* **Agenda View**: List of upcoming tasks
* **Date Navigation**: Previous/Next buttons and "Today" quick jump
* **Date Mapping**: Tasks placed by Due Date, falling back to Scheduled Date, then Start Date
* **Multi-day Events**: Tasks spanning multiple days (if Start Date ≠ Due Date)
* **Visual Distinction**: Completed tasks displayed differently (e.g., in grey)
**Interactions:**
* **Click an event** to select the task and open details
* **Click a day** (Month/Week view) to optionally open Quick Capture for that date
* **Click a month** (Year view) to switch to Month view
* **Right-click an event** for context menu actions
* **Mark complete** directly from calendar events
**Important Limitation:**
* **Tasks without dates (Due, Scheduled, or Start) are not displayed**
* Use List or Kanban View for undated tasks
**Best For:**
* Time-based planning and scheduling
* Visualizing deadlines and due dates
* Weekly/monthly reviews
* Event-driven task management
**Inherited From:** [Event View](/docs/task-view/event-view)
**Settings:** Calendar View includes a "First day of week" setting for customization.
## View Mode Comparison
| Feature | List View | Kanban View | Tree View | Calendar View |
| ------------------- | --------- | -------------- | -------------- | ------------- |
| **Default Mode** | ✅ Yes | ❌ No | ❌ No | ❌ No |
| **Shows All Tasks** | ✅ Yes | ✅ Yes | ✅ Yes | ⚠️ Only dated |
| **Hierarchical** | ❌ No | ❌ No | ✅ Yes | ❌ No |
| **Drag & Drop** | ❌ No | ✅ Yes (status) | ❌ No | ✅ Yes (dates) |
| **Visual Grouping** | ❌ No | ✅ By status | ✅ By parent | ✅ By date |
| **Best Use Case** | General | Workflow | Projects | Scheduling |
| **Available When** | Always | Always | List available | Always |
## Use Cases by View Mode
### Daily Planning Workflow
1. **Morning**: Use **Calendar View** on the **Today** view to see time-based tasks
2. **Midday**: Switch to **List View** to check off completed tasks and see all details
3. **Evening**: Use **Kanban View** on **Upcoming** to organize tomorrow's priorities
### Project Management
1. **Planning**: Use **Tree View** on **Inbox** to structure project tasks with subtasks
2. **Execution**: Switch to **Kanban View** to track progress through status columns
3. **Review**: Use **Calendar View** on **Upcoming** to check deadlines
### Weekly Review
1. **Review Completed**: **List View** on **Flagged** to see all important tasks
2. **Plan Ahead**: **Calendar View** on **Upcoming** to visualize the week
3. **Organize**: **Kanban View** on **Inbox** to triage new tasks
## Best Practices
### 1. Match View Mode to Task Type
* **Dated tasks**: Calendar View for time awareness
* **Status-driven work**: Kanban View for workflow clarity
* **Complex projects**: Tree View for structure
* **General processing**: List View for simplicity
### 2. Consistent View Mode per Data Source
Establish consistent View Mode defaults for each data source:
* **Inbox**: List View (for quick triage)
* **Today**: Calendar View (for time-based planning)
* **Upcoming**: Kanban View (for status tracking)
* **Flagged**: Tree View (for project focus)
### 3. Leverage Workspace-Specific Settings
Create different [Workspaces](/docs/workspace) with optimized View Mode configurations:
* **Work Workspace**: Kanban-heavy for sprint tracking
* **Personal Workspace**: Calendar-focused for scheduling
* **Project Workspace**: Tree View for hierarchical planning
### 4. Use View Mode Switching for Context
Quickly switch View Modes to answer different questions:
* "What's due soon?" → Calendar View
* "What's in progress?" → Kanban View
* "What are the project components?" → Tree View
* "What needs attention?" → List View
## Troubleshooting
### Tasks Not Showing in Calendar View
**Issue**: Some tasks are missing from Calendar View.
**Solution**:
* Verify tasks have at least one date field (Due, Scheduled, or Start Date)
* Tasks without any dates will not appear in Calendar View
* Switch to List View or Kanban View to see all tasks
### Tree View Not Available
**Issue**: Tree View button is disabled or not showing expected hierarchy.
**Solution**:
* Tree View is only available when List View is applicable
* Ensure your tasks have parent-child relationships defined
* Check if you're currently in Kanban or Calendar mode (Tree View replaces List View)
### Kanban Columns Not Matching Expectations
**Issue**: Tasks appear in unexpected columns.
**Solution**:
* Verify task status values match your status configuration
* Check [Task Status](/docs/task-status) settings
* Review active filters that might be hiding certain columns
### View Mode Not Persisting
**Issue**: View Mode resets when switching between views.
**Solution**:
* Each view (Inbox, Today, Upcoming, Flagged) saves its own View Mode independently
* Ensure you're in the correct [Workspace](/docs/workspace)
* Check if settings are saving properly (Obsidian write permissions)
## Related Features
* [Workspace](/docs/workspace): Manage separate View Mode configurations per workspace
* [Task View](/docs/task-view): Understand the overall task viewing system
* [Status View](/docs/task-view/status-view): Deep dive into Kanban functionality
* [Event View](/docs/task-view/event-view): Detailed Calendar View features
* [Inbox View](/docs/task-view/inbox-view): List and Tree View details
* [Custom Views](/docs/task-view/custom-view): Create specialized views with preferred View Modes
file: ./content/docs/workflows.mdx
meta: {
"title": "Workflows"
}
import { VersionCallout } from "@/components/VersionCallout";
import { Edit3Icon, TrashIcon } from "lucide-react";
Task Genius includes a powerful workflow system to help you manage multi-stage tasks and processes directly within Obsidian, tracking their progression through different phases.
## Usage
1. **Associate Task with Workflow:** Mark a root task with a workflow tag, like `#workflow/YourWorkflowID`. This task represents the start of the process.
```markdown
- [ ] Start Project Alpha #workflow/project_workflow
```
2. **Initial Stage & Stage Markers:**
* When you interact with the root task (e.g., via context menu), the plugin might automatically create the first stage task.
* Subsequent stages and substages are typically marked using `[stage::StageID]` or `[stage::ParentStageID.SubStageID]`.
```markdown
- [x] Start Project Alpha #workflow/project_workflow 🛫 2024-03-20 10:00:00
- [x] Planning Phase [stage::planning] (⏱️ 02:15:30)
- [ ] Development [stage::in_progress] 🛫 2024-03-20 12:15:30
- [x] Coding [stage::in_progress.development] (⏱️ 01:30:00)
- [x] Code Review [stage::in_progress.review] (⏱️ 00:30:00)
- [ ] Testing [stage::in_progress.testing] 🛫 2024-03-20 15:15:30
```
3. **Transitioning Stages:**
* **Context Menu:** Right-click on a task associated with a workflow. Choose options like "Move to \[Next Stage Name]", select from available stages defined in `canProceedTo` or "Complete Stage".
* **Task Completion:** Completing a task (`- [x]`) associated with a non-terminal stage can trigger automatic transitions.
* **Manual Editing:** You can manually change the `[stage::...]` marker, although using the context menu or task completion is recommended for consistency and triggering automation.
4. **Automation:** Based on your configuration (see "Configuration Options" above), actions like adding timestamps, calculating spent time, removing markers, and creating the next task will happen automatically during stage transitions or completions.
## Settings
Open Workflow Settings
Activate and customize workflow behavior in the plugin settings:
1. Go to `Settings` -> `Task Genius` -> `Workflow`.
2. Toggle **Enable workflow** on.
### Configuration options
Fine-tune how workflows operate:
* **Auto-add timestamp:** Automatically append a timestamp (e.g., `🛫 2024-01-01 10:00:00`) to a task when it enters a workflow stage or is created within one.
* **Timestamp format:** Define the date/time format using Moment.js tokens (default: `YYYY-MM-DD HH:mm:ss`).
* **Remove timestamp when moving to next stage:** Delete the timestamp from the task when it transitions to the next workflow stage.
* **Calculate spent time:** Track the time a task spends in a stage. When the task moves, append the duration (e.g., `(⏱️ 01:30:00)`).
* **Spent time format:** Define the format for the duration (default: `HH:mm:ss`).
* **Calculate full spent time:** Track the total time from the *start* of the workflow to the *completion* of the final stage. Adds a total duration marker (e.g., `(Total: 05:45:10)`) to the final task.
* **Auto remove last stage marker:** When a task marked with the *final* stage of its workflow is completed (`- [x]`), automatically remove the stage marker text (e.g., `[stage::stage_id]`).
### Workflow definitions
Workflows are defined as templates specifying a sequence of stages. Manage them in `Settings` -> `Task Genius` -> `Workflow`:
* Click `Add New Workflow` to define a new template.
* Click the pencil icon () to edit an existing one.
* Click the trash icon () to delete a definition.
### Defining Stages
When creating or editing a workflow:
* **Name & Description:** Identify the workflow.
* **Stages:** Add, remove, and reorder stages.
* **ID:** A unique identifier for the stage (e.g., `planning`, `dev`, `review`) used in the task line, for example `[stage::planning]`.
* **Name:** The display name for the stage (e.g., "Planning", "Development", "Review"). This is used as the stage display name (not in task line).
* **Type:**
* `Linear`: Moves strictly to the stage defined in its `next` property.
* `Cycle`: Can loop back or move to multiple stages defined in `canProceedTo`. May contain `subStages` for nested steps.
* `Terminal`: Represents a final state (e.g., "Completed", "Cancelled"). Tasks entering a terminal stage typically conclude their workflow path.
* **Next (for Linear):** The ID of the single stage that follows this one, for example `[stage::in_progress]`.
* **SubStages (for Cycle):** Define nested steps within a cycle stage. Each substage has its own `id`, `name`, and optional `next` (pointing to the next substage ID within the cycle), for example `[stage::in_progress.development]` and `[stage::in_progress.review]`.
* **CanProceedTo (for Cycle/Linear):** A list of stage IDs that a task can transition to from this stage (used in the context menu). This allows for branching or returning to earlier stages or going to next main stage (when in `Cycle` type stage).
file: ./content/docs/workspace.mdx
meta: {
"title": "Workspace"
}
import { VersionCallout } from "@/components/VersionCallout";
Workspace allows you to organize your task management environment by creating multiple independent workspaces, each with its own view configurations and settings. This feature is ideal for separating different contexts, projects, or workflows within Task Genius.
## Overview
Workspaces provide a powerful way to maintain distinct task management environments without interference. Each workspace stores its own:
* View configurations (Inbox, Today, Upcoming, Flagged)
* View modes (List, Kanban, Tree, Calendar)
* Filter settings
* Custom views
* Sorting preferences
**Note**: Editor-related settings and plugin configurations are global and not affected by workspace switching.
## Default Workspace
When you first use Task Genius, a **Default Workspace** is automatically created. This workspace serves as the template for new workspaces:
* **Inheritance**: When creating a new workspace, it inherits all settings from the Default Workspace at the time of creation.
* **Independence**: After creation, modifying the Default Workspace does **not** affect existing workspaces.
* **Template Role**: Use the Default Workspace as your baseline configuration for consistency across new workspaces.
## Creating a Workspace
You can create a new workspace using two methods:
### Method 1: Workspace Selector (Quick Access)
1. Open the Task Genius View.
2. Click the **Workspace Selector** button in the top-left corner of the main view.
3. In the dropdown menu, select **Create Workspace**.
4. Enter a name for your new workspace.
5. The new workspace will be created with settings inherited from the Default Workspace.
### Method 2: Settings Page (Detailed Management)
1. Open Task Genius settings.
2. Navigate to the **Workspace** settings page.
3. Click **Create New Workspace**.
4. Configure your workspace name and initial settings.
5. Save to create the workspace.
## Switching Between Workspaces
### Quick Switch
1. Click the **Workspace Selector** in the top-left corner of the main view.
2. Select the workspace you want to switch to from the dropdown menu.
3. Your current workspace state will be **automatically saved** before switching.
### Settings Page Switch
1. Open Task Genius settings.
2. Go to the **Workspace** settings page.
3. Select a workspace from the list.
4. Click **Switch to This Workspace**.
**Auto-Save**: Task Genius automatically saves your current workspace state (view positions, filters, selections) when switching, ensuring no work is lost.
## Managing Workspaces
### Renaming a Workspace
1. Access the **Workspace** settings page.
2. Select the workspace you want to rename.
3. Click the **Rename** button.
4. Enter the new name and confirm.
### Deleting a Workspace
1. Access the **Workspace** settings page.
2. Select the workspace you want to delete.
3. Click the **Delete** button.
4. Confirm the deletion.
**Warning**: Deleting a workspace removes all its view configurations and settings. This action cannot be undone.
**Note**: The Default Workspace cannot be deleted.
## Use Cases
### Project-Based Separation
Create separate workspaces for different projects:
* **Work Projects**: Configure views to focus on work-related tags and deadlines.
* **Personal Tasks**: Set up views optimized for personal goal tracking.
* **Learning Goals**: Organize study materials and progress tracking.
### Context Switching
Maintain different mental contexts:
* **Deep Work**: Minimal views showing only high-priority tasks.
* **Planning Mode**: Kanban and calendar views for weekly planning.
* **Review Mode**: Custom filters for weekly reviews and retrospectives.
### Team Collaboration
If multiple people use the same vault:
* Each person can have their own workspace.
* Shared Default Workspace for team standards.
* Personal workspaces for individual workflows.
## Workspace Scope
### Settings Tied to Workspaces
The following settings are saved per workspace:
* All view configurations (Inbox, Today, Upcoming, Flagged, etc.)
* View modes (List, Kanban, Tree, Calendar)
* Filter rules and saved filters
* Custom view definitions
* Task sorting preferences
* View layout and sidebar positions
* Active view selection
### Global Settings (Not Workspace-Specific)
The following settings are global and shared across all workspaces:
* Editor features and configurations
* Task formatting options
* Keyboard shortcuts
* File filtering rules
* Plugin integration settings
* Theme and appearance (if applicable)
* General behavior settings
## Best Practices
### 1. Configure Your Default Workspace First
Since new workspaces inherit from the Default Workspace, set up your preferred baseline configuration there before creating additional workspaces.
### 2. Use Descriptive Names
Name workspaces clearly to reflect their purpose:
* ✅ "Work - Q1 Projects"
* ✅ "Personal - Health & Fitness"
* ❌ "Workspace 1"
### 3. Regular Cleanup
Periodically review and delete unused workspaces to keep your environment organized.
### 4. Consistent Structure
Maintain similar view structures across workspaces for easier mental switching, but customize filters and display modes as needed.
## Troubleshooting
### Workspace Not Switching
* Ensure you have saved any pending changes.
* Check if any modal dialogs are open and close them.
* Restart Obsidian if the issue persists.
### Settings Not Saving
* Verify that Obsidian has write permissions to the vault.
* Check the console for error messages (Ctrl/Cmd + Shift + I).
* Ensure you're not running multiple instances of Obsidian with the same vault.
### Lost Workspace Configuration
If a workspace appears to have lost its settings:
* Check if the workspace was accidentally deleted.
* Look in the plugin's data folder for backup files.
* Consider exporting/importing workspace settings if the feature is available.
## Related Features
* [Task View](/docs/task-view): Learn about the different built-in views available in each workspace.
* [Custom Views](/docs/task-view/custom-view): Create custom views tailored to your workspace needs.
* [View Modes](/docs/view-modes): Understand the different ways to display tasks within a workspace.
file: ./content/docs/installation/brat.mdx
meta: {
"title": "Beta Version (BRAT)"
}
import { FlaskConicalIcon } from "lucide-react";
import { Link } from "fumadocs-core/link";
## Installing Beta Version with BRAT
BRAT (Beta Reviewers Auto-update Tool) allows you to install and test beta versions of Task Genius before they are officially released.
### Prerequisites
First, you need to install the BRAT plugin from the Community Plugins:
1. Open Obsidian Settings
2. Go to Community plugins
3. Click Browse and search for "BRAT"
4. Install and enable the BRAT plugin
### Add Task Genius Beta
Once BRAT is installed:
1. Open Obsidian Settings
2. Go to BRAT settings (under Community Plugins section)
3. Click on "Add Beta plugin"
4. Enter the repository URL:
```
https://github.com/taskgenius/taskgenius-plugin
```
5. Click "Add Plugin" and then select the latest beta version
6. BRAT will download and install the latest beta version
### Enable the Plugin
After BRAT installs the beta version:
1. Go to Settings → Community plugins
2. Find "Task Genius (Beta)" in the list
3. Toggle the switch to enable it
### Updating Beta Version
BRAT will automatically check for updates to the beta version. You can also manually update:
1. Go to BRAT settings
2. Click "Check and update plugin"
3. If an update is available, it will be updated automatically
### Switching Back to Stable
To switch back to the stable version(usually you don't to do so):
1. Go to BRAT settings
2. Find Task Genius in the beta plugins list
3. Click "Delete" to remove the beta version
4. Install the stable version from Community Plugins
Beta versions may contain bugs or incomplete features. Always backup your vault before testing beta versions.
### Reporting Issues
If you encounter issues with the beta version:
* Report bugs on [GitHub Issues](https://github.com/taskgenius/taskgenius-plugin/issues)
* Include the beta version number in your report
* Describe the issue with steps to reproduce
file: ./content/docs/installation/community.mdx
meta: {
"title": "Community"
}
1. Open `Settings` -> `Community plugins` in Obsidian.
2. Make sure "Restricted mode" is **off**.
3. Click `Browse` community plugins.
4. Search for "Task Genius".
5. Click `Install`.
6. Once installed, find "Task Genius" in your installed plugins list and toggle it on to `Enable` the plugin.
## Configure Plugin
Open Settings
file: ./content/docs/installation/index.mdx
meta: {
"title": "Installation"
}
import { PackageIcon, FlaskConicalIcon } from "lucide-react";
There are three ways to install Task Genius:
} description="Install the plugin from the Obsidian community plugins list." href="/docs/installation/community" />
} description="Install beta versions using BRAT for early access to new features." href="/docs/installation/brat" />
} description="Install the plugin manually." href="/docs/installation/manual" />
## After Installation
Open Settings
## Notice
You might need to run the command `Task Genius: Force reindex all tasks` to reindex your tasks after installing the plugin manually.
file: ./content/docs/installation/manual.mdx
meta: {
"title": "Manual"
}
1. Download the latest release files (`main.js`, `manifest.json`, `styles.css`) from the [Task Genius Releases page](https://github.com/taskgenius/taskgenius-plugin/releases) on GitHub.
2. Navigate to your Obsidian vault's plugins folder. This is usually located at `YourVault/.obsidian/plugins/` (Note: `.obsidian` might be a hidden folder).
3. Create a new folder inside the `plugins` directory named exactly `task-genius`.
4. Copy the downloaded `main.js`, `manifest.json`, and `styles.css` files directly into this new `task-genius` folder.
5. Reload Obsidian (Close and reopen the app, or use the command `Reload app without saving`).
6. Go back to `Settings` -> `Community plugins` and enable "Task Genius".
## Configure Plugin
Open Settings
file: ./content/docs/mcp-integration/api-reference.mdx
meta: {
"title": "MCP API Reference",
"description": "Complete API documentation for Task Genius MCP tools"
}
This document provides comprehensive documentation for all MCP tools available in Task Genius. Each tool includes parameters, return values, and practical examples.
## Authentication
All API calls require authentication using one of two methods:
### Method A: Separate Headers
```http
Authorization: Bearer YOUR_TOKEN
mcp-app-id: YOUR_APP_ID
```
### Method B: Combined Bearer (Recommended)
```http
Authorization: Bearer YOUR_TOKEN+YOUR_APP_ID
```
## Protocol Flow
### 1. Initialize Session
```json
// Request
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {
"tools": {}
}
}
}
// Response
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2025-06-18",
"capabilities": {
"tools": {}
},
"sessionId": "session_123"
}
}
```
### 2. Use Tools
Include the session ID in subsequent requests:
```http
mcp-session-id: session_123
```
## Query Tools
### query\_tasks
Query tasks with advanced filtering and sorting options.
**Parameters:**
```typescript
{
filter?: {
completed?: boolean;
priority?: 1 | 2 | 3 | 4 | 5;
project?: string;
context?: string;
tags?: string[];
hasDate?: boolean;
dateType?: "due" | "start" | "scheduled" | "completed";
dateRange?: {
from: string; // YYYY-MM-DD
to: string; // YYYY-MM-DD
};
};
sort?: {
field: "priority" | "dueDate" | "startDate" | "created" | "modified";
order: "asc" | "desc";
};
limit?: number; // Default: 100, Max: 1000
offset?: number; // For pagination
}
```
**Example:**
```json
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "query_tasks",
"arguments": {
"filter": {
"completed": false,
"priority": 5,
"tags": ["urgent", "review"]
},
"sort": {
"field": "dueDate",
"order": "asc"
},
"limit": 50
}
}
}
```
**Response:**
```json
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [
{
"type": "text",
"text": "Found 3 tasks matching criteria"
}
],
"tasks": [
{
"id": "task_abc123",
"content": "Review quarterly report",
"completed": false,
"priority": 5,
"dueDate": "2024-01-15",
"tags": ["urgent", "review"],
"project": "Q1-Planning",
"filePath": "Daily/2024-01-10.md",
"line": 15
}
]
}
}
```
### query\_project\_tasks
Get all tasks for a specific project.
**Parameters:**
```typescript
{
project: string; // Required: project name
includeCompleted?: boolean; // Default: true
limit?: number;
}
```
**Example:**
```json
{
"name": "query_project_tasks",
"arguments": {
"project": "Website Redesign",
"includeCompleted": false
}
}
```
### query\_context\_tasks
Get all tasks for a specific context.
**Parameters:**
```typescript
{
context: string; // Required: context name (e.g., "@home", "@office")
includeCompleted?: boolean;
limit?: number;
}
```
### query\_by\_priority
Filter tasks by priority level.
**Parameters:**
```typescript
{
priority: 1 | 2 | 3 | 4 | 5; // Required
completed?: boolean;
limit?: number;
}
```
### query\_by\_due\_date
Find tasks within a date range.
**Parameters:**
```typescript
{
from?: string; // YYYY-MM-DD (defaults to today)
to?: string; // YYYY-MM-DD (defaults to 7 days from now)
includeOverdue?: boolean;
limit?: number;
}
```
### search\_tasks
Full-text search across task content.
**Parameters:**
```typescript
{
query: string; // Required: search text
searchIn?: ("content" | "tags" | "project" | "context")[];
caseSensitive?: boolean; // Default: false
limit?: number;
}
```
**Example:**
```json
{
"name": "search_tasks",
"arguments": {
"query": "meeting notes",
"searchIn": ["content", "tags"],
"limit": 20
}
}
```
## Create Tools
### create\_task
Create a single task with full metadata support.
**Parameters:**
```typescript
{
content: string; // Required: task description
filePath?: string; // Target file (defaults to daily note)
priority?: 1-5; // Task priority
dueDate?: string; // YYYY-MM-DD
startDate?: string; // YYYY-MM-DD
scheduledDate?: string; // YYYY-MM-DD
project?: string; // Project name
context?: string; // Context (@location)
tags?: string[]; // Tags without #
parent?: string; // Parent task ID for subtasks
completed?: boolean; // For recording completed tasks
completedDate?: string; // YYYY-MM-DD (when completed=true)
}
```
**Example:**
```json
{
"name": "create_task",
"arguments": {
"content": "Prepare presentation for client meeting",
"priority": 4,
"dueDate": "2024-01-20",
"project": "ClientX",
"tags": ["presentation", "important"],
"context": "@office"
}
}
```
**Response:**
```json
{
"result": {
"content": [
{
"type": "text",
"text": "Task created successfully"
}
],
"task": {
"id": "task_xyz789",
"content": "Prepare presentation for client meeting",
"filePath": "Daily/2024-01-15.md",
"line": 23
}
}
}
```
### create\_task\_in\_daily\_note
Create a task specifically in today's daily note.
**Parameters:**
```typescript
{
content: string; // Required
heading?: string; // Place under specific heading
priority?: 1-5;
dueDate?: string;
startDate?: string;
project?: string;
context?: string;
tags?: string[];
parent?: string; // Parent task ID
completed?: boolean; // For recording
completedDate?: string;
}
```
### add\_project\_quick\_capture
Quick capture with automatic project tagging.
**Parameters:**
```typescript
{
content: string; // Required
project: string; // Required: auto-adds as +project
heading?: string; // Section heading
priority?: 1-5;
dueDate?: string;
context?: string;
tags?: string[];
}
```
### batch\_create\_tasks
Create multiple tasks efficiently in one operation.
**Parameters:**
```typescript
{
defaultFilePath?: string; // Default file for all tasks
tasks: Array<{
content: string; // Required for each task
filePath?: string; // Override default
priority?: 1-5;
dueDate?: string;
startDate?: string;
project?: string;
context?: string;
tags?: string[];
parent?: string;
completed?: boolean;
completedDate?: string;
}>;
}
```
**Example:**
```json
{
"name": "batch_create_tasks",
"arguments": {
"defaultFilePath": "Projects/Sprint-01.md",
"tasks": [
{
"content": "Setup development environment",
"priority": 5,
"tags": ["setup"]
},
{
"content": "Review API documentation",
"priority": 3,
"tags": ["documentation"]
},
{
"content": "Create initial tests",
"priority": 4,
"dueDate": "2024-01-18",
"tags": ["testing"]
}
]
}
}
```
### batch\_create\_subtasks
Add multiple subtasks to an existing parent task.
**Parameters:**
```typescript
{
parentTaskId: string; // Required: parent task ID
subtasks: Array<{
content: string; // Required for each
priority?: 1-5;
dueDate?: string;
}>;
}
```
## Update Tools
### update\_task
Update any properties of an existing task.
**Parameters:**
```typescript
{
taskId: string; // Required
updates: {
content?: string;
priority?: 1-5;
dueDate?: string;
startDate?: string;
project?: string;
context?: string;
tags?: string[];
completed?: boolean;
completedDate?: string;
};
}
```
### update\_task\_status
Change task completion status.
**Parameters:**
```typescript
{
taskId: string; // Required
completed?: boolean; // Set completion
status?: string; // Custom status marker
}
```
### batch\_update\_task\_status
Update multiple task statuses at once.
**Parameters:**
```typescript
{
taskIds: string[]; // Required: array of task IDs
completed?: boolean;
status?: string;
}
```
**Example:**
```json
{
"name": "batch_update_task_status",
"arguments": {
"taskIds": ["task_1", "task_2", "task_3"],
"completed": true
}
}
```
### batch\_update\_text
Find and replace text across multiple tasks.
**Parameters:**
```typescript
{
taskIds: string[]; // Required
findText: string; // Required: text to find
replaceText: string; // Required: replacement text
}
```
### postpone\_tasks
Reschedule tasks to a new date.
**Parameters:**
```typescript
{
taskIds: string[]; // Required
newDate: string; // Required: YYYY-MM-DD
updateType?: "due" | "start" | "both"; // Default: "due"
}
```
## List Tools
### list\_all\_metadata
Get all unique tags, projects, and contexts in your vault.
**Parameters:** None
**Response:**
```json
{
"result": {
"tags": ["urgent", "review", "documentation"],
"projects": ["Website", "Mobile App", "API"],
"contexts": ["@home", "@office", "@phone"]
}
}
```
### list\_tasks\_for\_period
List tasks for a specific time period.
**Parameters:**
```typescript
{
period: "day" | "month" | "year"; // Required
date: string; // Required: base date YYYY-MM-DD
dateType?: "due" | "start" | "scheduled" | "completed";
limit?: number;
}
```
**Example:**
```json
{
"name": "list_tasks_for_period",
"arguments": {
"period": "month",
"date": "2024-01-15",
"dateType": "due"
}
}
```
### list\_tasks\_in\_range
Get tasks between two dates.
**Parameters:**
```typescript
{
from: string; // Required: YYYY-MM-DD
to: string; // Required: YYYY-MM-DD
dateType?: "due" | "start" | "scheduled" | "completed";
limit?: number;
}
```
## Delete Tools
### delete\_task
Remove a task by ID.
**Parameters:**
```typescript
{
taskId: string; // Required
}
```
**Response:**
```json
{
"result": {
"content": [
{
"type": "text",
"text": "Task deleted successfully"
}
],
"deleted": true,
"taskId": "task_abc123"
}
}
```
## Error Handling
All tools return errors in standard JSON-RPC format:
```json
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32602,
"message": "Invalid params",
"data": {
"field": "priority",
"reason": "Must be between 1 and 5"
}
}
}
```
### Common Error Codes
| Code | Meaning | Solution |
| ------ | ---------------- | ----------------------------- |
| -32700 | Parse error | Check JSON syntax |
| -32600 | Invalid request | Verify request structure |
| -32601 | Method not found | Check tool name spelling |
| -32602 | Invalid params | Review parameter requirements |
| -32603 | Internal error | Check server logs |
| -32000 | Server error | Retry or check server status |
## Rate Limiting
To ensure optimal performance:
* **Batch operations** when possible (use batch\_\* tools)
* **Limit query results** to necessary data
* **Use pagination** for large result sets
* **Cache responses** when appropriate
## Best Practices
### 1. Use Specific Filters
```javascript
// Good: Specific and efficient
{
"filter": {
"completed": false,
"priority": 5,
"project": "CurrentSprint"
}
}
// Bad: Too broad
{
"filter": {} // Returns all tasks
}
```
### 2. Handle Pagination
```javascript
// First page
const page1 = await queryTasks({
limit: 100,
offset: 0
});
// Next page
const page2 = await queryTasks({
limit: 100,
offset: 100
});
```
### 3. Error Recovery
```javascript
try {
const result = await createTask({
content: "New task"
});
} catch (error) {
if (error.code === -32602) {
// Invalid parameters - check and retry
} else if (error.code === -32603) {
// Server error - log and notify user
}
}
```
### 4. Optimize Batch Operations
```javascript
// Good: Single batch operation
await batchCreateTasks({
tasks: taskList
});
// Bad: Multiple individual calls
for (const task of taskList) {
await createTask(task); // Inefficient
}
```
## WebSocket Support (Future)
The MCP server currently uses HTTP. WebSocket support for real-time updates is planned:
```javascript
// Future implementation
const ws = new WebSocket('ws://127.0.0.1:7777/mcp/stream');
ws.on('message', (data) => {
const event = JSON.parse(data);
if (event.type === 'task.created') {
// Handle new task
}
});
```
## SDK Examples
### JavaScript/TypeScript
```typescript
class TaskGeniusMCP {
private sessionId: string;
async initialize(): Promise {
const response = await fetch(this.url, {
method: 'POST',
headers: this.headers,
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'initialize'
})
});
const result = await response.json();
this.sessionId = response.headers.get('mcp-session-id');
}
async queryTasks(filter: TaskFilter): Promise {
return this.callTool('query_tasks', { filter });
}
}
```
### Python
```python
import requests
import json
class TaskGeniusMCP:
def __init__(self, url, token, app_id):
self.url = url
self.headers = {
'Authorization': f'Bearer {token}+{app_id}',
'Content-Type': 'application/json'
}
self.session_id = None
def initialize(self):
response = requests.post(
self.url,
headers=self.headers,
json={
'jsonrpc': '2.0',
'id': 1,
'method': 'initialize'
}
)
self.session_id = response.headers.get('mcp-session-id')
def query_tasks(self, **filter):
return self.call_tool('query_tasks', {'filter': filter})
```
## Next Steps
* Explore [Use Cases](/docs/mcp-integration/use-cases) for practical examples
* Review [Client Configuration](/docs/mcp-integration/clients) for your tools
* Check [Troubleshooting](/docs/mcp-integration/troubleshooting) for common issues
**API Tip**: Always include a `limit` parameter in queries to prevent overwhelming responses. Start with small limits during development.
file: ./content/docs/mcp-integration/index.mdx
meta: {
"title": "MCP Integration Overview",
"description": "Complete guide to Model Context Protocol integration in Task Genius"
}
import { VersionCallout } from "@/components/VersionCallout";
# MCP Integration
Model Context Protocol (MCP) integration transforms Task Genius into an AI-powered task management powerhouse. This comprehensive guide will walk you through everything you need to know about setting up, configuring, and using MCP with your favorite AI tools.
## What is MCP?
Model Context Protocol (MCP) is an open standard developed by Anthropic that enables secure, standardized communication between AI assistants and external tools. In Task Genius, MCP allows AI assistants to:
* 📊 **Query and analyze** your task data with sophisticated filters
* ✨ **Create and update** tasks with full metadata support
* 🔄 **Batch process** multiple tasks efficiently
* 📈 **Generate insights** from your task patterns
* 🤖 **Automate workflows** based on your preferences
## Why Use MCP with Task Genius?
### Enhanced Productivity
Instead of manually managing tasks, you can now:
* Ask AI to organize your day based on priorities
* Generate task lists from meeting notes
* Automatically categorize and tag tasks
* Create recurring task templates
### Intelligent Task Management
AI can help you:
* Identify overdue tasks and suggest rescheduling
* Find patterns in your productivity
* Recommend task prioritization
* Generate progress reports
### 🔗 Seamless Integration
MCP works with:
* **Claude Desktop** - Anthropic's desktop AI assistant
* **Cursor** - AI-powered code editor
* **Claude Code** - Command-line AI assistant
* **VS Code** - With MCP extensions
* **Windsurf** - AI development environment
* **Zed** - Modern code editor
* **Custom Applications** - Via HTTP API
## Architecture Overview
```mermaid
graph TD
A[AI Assistant] -->|MCP Protocol| B[Task Genius MCP Server]
B --> C[Authentication Layer]
C --> D[Task Operations API]
D --> E[Dataflow Orchestrator]
E --> F[Your Tasks in Obsidian]
style A fill:#e1f5fe
style B fill:#fff3e0
style C fill:#ffebee
style D fill:#f3e5f5
style E fill:#e8f5e9
style F fill:#fce4ec
```
### Key Components
1. **MCP Server**: Built into Task Genius, runs locally on port 7777
2. **Authentication**: Token-based security with app ID verification
3. **Task API**: Comprehensive CRUD operations for task management
4. **Dataflow Integration**: Direct connection to Task Genius's task system
5. **Real-time Sync**: Changes reflect immediately in Obsidian
## Security Model
Task Genius implements multiple security layers:
### Authentication
* **Bearer Token**: Unique, auto-generated authentication token
* **App ID**: Vault-specific identifier for additional security
* **Combined Auth**: Support for both separate and combined authentication headers
### Access Control
* **Local-only by default**: Server binds to 127.0.0.1
* **Optional network access**: Can be configured for remote access
* **CORS support**: Configurable for web-based clients
### Security Best Practices
1. Never share your authentication token
2. Use local-only mode unless absolutely necessary
3. Regularly regenerate tokens if exposed
4. Monitor server logs for unauthorized access attempts
## Available Operations
Task Genius MCP provides 25+ tools organized into categories:
### Query Operations
* `query_tasks` - Advanced search with filters
* `query_project_tasks` - Get tasks by project
* `query_context_tasks` - Get tasks by context
* `query_by_priority` - Filter by priority level
* `query_by_due_date` - Find tasks in date ranges
* `search_tasks` - Full-text search
### Create Operations
* `create_task` - Create single task
* `create_task_in_daily_note` - Add to today's note
* `batch_create_tasks` - Create multiple tasks
* `batch_create_subtasks` - Add subtasks
### Update Operations
* `update_task` - Modify task properties
* `update_task_status` - Change completion
* `batch_update_task_status` - Bulk status changes
* `postpone_tasks` - Reschedule tasks
### Management Operations
* `list_all_metadata` - Get tags, projects, contexts
* `list_tasks_for_period` - Get tasks by time period
* `delete_task` - Remove tasks
## Quick Start
### Step 1: Enable MCP
Enable MCP Server
Or manually:
1. Open Obsidian Settings
2. Navigate to Task Genius → MCP Integration
3. Toggle "Enable MCP Server" ON
### Step 2: Note Your Credentials
After enabling, you'll see:
* **Server URL**: `http://127.0.0.1:7777/mcp`
* **Auth Token**: Auto-generated secure token
* **App ID**: Your vault's unique identifier
### Step 3: Configure Your AI Client
Choose your AI tool and follow the specific configuration guide:
### Step 4: Test Connection
Test MCP Connection
## What's Next?
* **[Client Configuration](/docs/mcp-integration/clients)** - Detailed setup for each AI tool
* **[API Reference](/docs/mcp-integration/api-reference)** - Complete tool documentation
* **[Use Cases](/docs/mcp-integration/use-cases)** - Practical examples and workflows
* **[Troubleshooting](/docs/mcp-integration/troubleshooting)** - Common issues and solutions
## System Requirements
* **Obsidian**: Version 0.15.2 or higher
* **Task Genius**: Version 9.0.0 or higher
* **Platform**: Desktop only (Windows, macOS, Linux)
* **Network**: Local network access (configurable)
* **Port**: 7777 (configurable)
## Getting Help
If you encounter issues:
1. Check the [Troubleshooting Guide](/docs/mcp-integration/troubleshooting)
2. Review server logs in Obsidian console (`Ctrl+Shift+I`)
3. Test connection using the built-in tester
4. Join our [Discord community](https://discord.gg/taskgenius)
5. Report bugs on [GitHub](https://github.com/yourusername/task-genius/issues)
**Pro Tip**: Start with local-only mode and basic queries before exploring advanced features. This helps you understand the system while maintaining security.
file: ./content/docs/mcp-integration/security.mdx
meta: {
"title": "MCP Security Best Practices",
"description": "Security guidelines and best practices for MCP integration"
}
This guide covers security considerations and best practices for using Task Genius MCP integration safely and securely.
## Security Overview
Task Genius MCP implements multiple security layers:
```mermaid
graph TD
A[AI Client] -->|HTTPS/HTTP| B[MCP Server]
B --> C[Authentication Layer]
C -->|Token Validation| D[Authorization]
D -->|App ID Verification| E[Session Management]
E -->|Scoped Access| F[Task Operations]
F -->|File System| G[Obsidian Vault]
style C fill:#ff9800
style D fill:#ff9800
style E fill:#ff9800
```
## Authentication & Authorization
### Token Security
**Token Generation:**
* Tokens are cryptographically random (32+ characters)
* Generated using secure random functions
* Unique per vault installation
**Token Storage:**
```javascript
// ✅ Good: Stored in Obsidian's secure settings
{
"mcpIntegration": {
"authToken": "encrypted_token_here"
}
}
// ❌ Bad: Hardcoded in configuration
const TOKEN = "abc123..."; // Never do this
```
**Token Rotation:**
Regenerate Token
Rotate tokens:
* Every 90 days (recommended)
* After any suspected compromise
* When changing access patterns
* Before major vault migrations
### App ID Protection
The App ID provides an additional security layer:
```http
Authorization: Bearer TOKEN+APP_ID
```
Benefits:
* Vault-specific identification
* Prevents token reuse across vaults
* Enables audit trails
* Supports multi-vault setups
## Network Security
### Local-Only Mode (Default)
**Configuration:**
```json
{
"host": "127.0.0.1", // Local only
"port": 7777
}
```
**Security benefits:**
* No external network access
* Protected from remote attacks
* No firewall configuration needed
* Ideal for single-user setups
### Network Access Mode
**⚠️ Only enable if necessary:**
```json
{
"host": "0.0.0.0", // All interfaces - USE WITH CAUTION
"port": 7777
}
```
**Required protections:**
1. **Firewall Rules:**
```bash
# Allow only specific IPs
iptables -A INPUT -p tcp --dport 7777 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 7777 -j DROP
```
2. **VPN/Tunnel:**
```bash
# Use SSH tunnel instead of direct exposure
ssh -L 7777:localhost:7777 user@remote-host
```
3. **Reverse Proxy with SSL:**
```nginx
server {
listen 443 ssl;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location /mcp {
proxy_pass http://127.0.0.1:7777;
proxy_set_header Authorization $http_authorization;
}
}
```
## Data Protection
### Sensitive Information
**Never expose in tasks:**
* Passwords or API keys
* Personal identification numbers
* Credit card information
* Private keys or certificates
* Medical/financial data
**Use references instead:**
```markdown
- [ ] Update database password to "MyS3cr3tP@ss"
- [ ] Update database password (see vault)
```
### Vault Encryption
**Enable Obsidian vault encryption:**
1. Use encrypted disk/volume:
```bash
# macOS FileVault
sudo fdesetup enable
# Linux LUKS
cryptsetup luksFormat /dev/sdX
# Windows BitLocker
manage-bde -on C:
```
2. Sync with encrypted services:
* Use end-to-end encrypted sync
* Enable 2FA on cloud services
* Avoid public/shared folders
### Backup Security
**Secure backup practices:**
```bash
# Encrypted backup
tar -czf - /path/to/vault | \
openssl enc -aes-256-cbc -salt -out vault-backup.tar.gz.enc
# Restore
openssl dec -aes-256-cbc -in vault-backup.tar.gz.enc | \
tar -xzf -
```
## Access Control
### Client Authentication
**Verify client identity:**
```json
{
"allowedClients": [
"Claude Desktop",
"Cursor",
"Custom App"
],
"requireClientCert": false, // Future feature
"ipWhitelist": [
"127.0.0.1",
"192.168.1.100"
]
}
```
### Rate Limiting
**Prevent abuse:**
```javascript
// Recommended limits
{
"rateLimits": {
"requestsPerSecond": 10,
"requestsPerMinute": 100,
"maxConcurrent": 5,
"maxResponseSize": 10485760 // 10MB
}
}
```
### Session Management
**Session security:**
* Sessions expire after inactivity (default: 1 hour)
* Unique session ID per connection
* Sessions bound to IP address
* No session sharing between clients
## Audit & Monitoring
### Enable Logging
**Set appropriate log level:**
```json
{
"logLevel": "info", // For production
"logFile": "/path/to/mcp-audit.log",
"logRotation": {
"maxSize": "10MB",
"maxFiles": 10
}
}
```
### Monitor Access Patterns
**Watch for suspicious activity:**
```bash
# Check access logs
grep "401\|403" mcp-audit.log # Unauthorized attempts
grep "DELETE" mcp-audit.log # Deletion operations
grep -c "query_tasks" mcp-audit.log | sort -n # Excessive queries
```
**Alert triggers:**
* Multiple failed authentication attempts
* Unusual query patterns
* Mass deletion requests
* Access from unexpected IPs
### Security Events
**Log security-relevant events:**
```javascript
// Events to monitor
{
"events": [
"auth.failed", // Failed authentication
"auth.success", // Successful login
"token.regenerated", // Token rotation
"task.deleted", // Data deletion
"config.changed", // Configuration updates
"server.started", // Server lifecycle
"server.stopped"
]
}
```
## Secure Configuration Examples
### Development Environment
```json
{
"mcpIntegration": {
"enabled": true,
"host": "127.0.0.1",
"port": 7777,
"authToken": "dev_token_only",
"enableCors": true,
"logLevel": "debug"
}
}
```
### Production Environment
```json
{
"mcpIntegration": {
"enabled": true,
"host": "127.0.0.1",
"port": 7777,
"authToken": "${MCP_AUTH_TOKEN}", // From environment
"enableCors": false,
"logLevel": "warning",
"ssl": {
"enabled": true,
"cert": "/path/to/cert.pem",
"key": "/path/to/key.pem"
}
}
}
```
### Team Environment
```json
{
"mcpIntegration": {
"enabled": true,
"host": "0.0.0.0",
"port": 7777,
"authToken": "${TEAM_MCP_TOKEN}",
"enableCors": true,
"ipWhitelist": [
"192.168.1.0/24", // Office network
"10.0.0.0/8" // VPN range
],
"requireHttps": true,
"logLevel": "info"
}
}
```
## Security Checklist
### Initial Setup
* [ ] Generate strong authentication token
* [ ] Store credentials securely
* [ ] Configure local-only access by default
* [ ] Enable appropriate logging
* [ ] Test authentication before use
* [ ] Document security configuration
### Regular Maintenance
* [ ] Rotate tokens quarterly
* [ ] Review access logs monthly
* [ ] Update Task Genius regularly
* [ ] Audit client configurations
* [ ] Test backup/restore procedures
* [ ] Review firewall rules
### Incident Response
If you suspect a security breach:
1. **Immediate Actions:**
* [ ] Disable MCP server
* [ ] Regenerate all tokens
* [ ] Review recent access logs
* [ ] Check for unauthorized changes
2. **Investigation:**
* [ ] Identify breach timeline
* [ ] Determine data accessed
* [ ] Find attack vector
* [ ] Document findings
3. **Recovery:**
* [ ] Restore from secure backup
* [ ] Implement additional controls
* [ ] Update security procedures
* [ ] Notify affected parties if needed
## Common Vulnerabilities
### 1. Token Exposure
**Risk:** Tokens in version control
**Prevention:**
```bash
# .gitignore
*.json
config.json
.env
**/data.json
```
**Detection:**
```bash
# Scan for exposed tokens
git grep -E "Bearer [a-zA-Z0-9+/]{32,}"
```
### 2. Insecure Transport
**Risk:** Token interception on network
**Mitigation:**
* Use HTTPS when possible
* Implement VPN for remote access
* Use SSH tunnels for security
* Never use public WiFi unprotected
### 3. Excessive Permissions
**Risk:** Overly broad access
**Mitigation:**
* Principle of least privilege
* Separate read/write tokens (future)
* Time-based access controls
* Regular permission audits
## Compliance Considerations
### GDPR Compliance
If handling EU personal data:
* Implement data minimization
* Provide data export capabilities
* Enable deletion rights
* Maintain audit logs
* Document data processing
### HIPAA Compliance
For healthcare-related tasks:
* Encrypt data at rest and in transit
* Implement access controls
* Maintain audit trails
* Regular security assessments
* Business Associate Agreements
### SOC 2 Requirements
For enterprise use:
* Document security policies
* Regular vulnerability assessments
* Incident response procedures
* Change management processes
* Third-party audits
## Security Tools
### Testing Tools
```bash
# Test authentication
curl -X POST http://127.0.0.1:7777/mcp \
-H "Authorization: Bearer INVALID" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize"}'
# Should return 401
# Test rate limiting
for i in {1..100}; do
curl -X POST http://127.0.0.1:7777/health &
done
# Should see rate limit errors
# Port scanning
nmap -p 7777 127.0.0.1
# Should show only expected port
```
### Monitoring Scripts
```bash
#!/bin/bash
# monitor-mcp.sh
# Check for failed auth attempts
FAILURES=$(grep -c "401" /var/log/mcp.log)
if [ $FAILURES -gt 10 ]; then
echo "Warning: $FAILURES failed auth attempts"
# Send alert
fi
# Check for unusual activity
DELETES=$(grep -c "delete_task" /var/log/mcp.log)
if [ $DELETES -gt 50 ]; then
echo "Warning: Unusual deletion activity"
# Investigate
fi
```
## Recommendations by Use Case
### Personal Use
* Local-only access (127.0.0.1)
* Simple token authentication
* Minimal logging
* Regular backups
### Small Team
* VPN-based access
* Shared token with rotation
* Info-level logging
* Encrypted backups
### Enterprise
* Zero-trust network model
* Certificate-based auth
* Comprehensive audit logging
* Automated security scanning
* Regular penetration testing
## Next Steps
* Review [troubleshooting guide](/docs/mcp-integration/troubleshooting) for security-related issues
* Implement [monitoring and alerting](/docs/mcp-integration/monitoring)
* Join [security discussions](https://discord.gg/taskgenius-security)
* Report security issues privately to [security@taskgenius.app](mailto:security@taskgenius.app)
**Security Report**: If you discover a security vulnerability, please report it privately to [security@taskgenius.app](mailto:security@taskgenius.app). Do not create public issues for security problems.
file: ./content/docs/mcp-integration/troubleshooting.mdx
meta: {
"title": "MCP Troubleshooting & FAQ",
"description": "Solutions to common issues and frequently asked questions"
}
This guide helps you resolve common issues with Task Genius MCP integration and answers frequently asked questions.
## Quick Diagnostics
Before troubleshooting, run these checks:
### Step 1: Verify Server Status
Check MCP Status
Look for:
* \[MCP Test] Server running (green indicator)
* \[MCP Test] Port number displayed
* \[MCP Test] No error messages
### Step 2: Test Connection
Run Connection Test
Expected result:
```text
[MCP Test] Health check passed
[MCP Test] Initialize successful
[MCP Test] Tools list retrieved
```
### Step 3: Check Logs
Open Obsidian Developer Console:
* Windows/Linux: `Ctrl + Shift + I`
* macOS: `Cmd + Option + I`
Look for entries starting with `[MCP Test]`
## Common Issues
### Server Won't Start
#### Symptoms
* Red "Stopped" indicator in settings
* "Failed to start server" error
* No response from health endpoint
#### Solutions
**1. Port Already in Use**
Check if port 7777 is occupied:
```bash
# Windows
netstat -ano | findstr :7777
# macOS/Linux
lsof -i :7777
```
Fix:
* Kill the process using the port, OR
* Change to a different port in settings, OR
* Use "Next Available Port" button
**2. Permission Issues**
On macOS/Linux:
```bash
# Check permissions
ls -la ~/.obsidian/plugins/Obsidian-Task-Genius/
# Fix permissions if needed
chmod -R 755 ~/.obsidian/plugins/Obsidian-Task-Genius/
```
**3. Firewall Blocking**
* Add Obsidian to firewall exceptions
* Allow localhost connections (127.0.0.1)
* For network access, allow port 7777
**4. Plugin Not Fully Loaded**
1. Disable Task Genius plugin
2. Restart Obsidian
3. Enable Task Genius plugin
4. Wait 5 seconds before enabling MCP
### Authentication Failures
#### Symptoms
* "Unauthorized" errors
* "Invalid token" messages
* Session not established
#### Solutions
**1. Token Format Issues**
Check your token format:
❌ Wrong:
```json
"Authorization": "YOUR_TOKEN+YOUR_APP_ID"
```
✅ Correct:
```json
"Authorization": "Bearer YOUR_TOKEN+YOUR_APP_ID"
```
**2. Token Expired or Changed**
Regenerate Token
Then update all client configurations.
**3. Missing App ID**
Ensure your App ID is included:
```bash
# Find your App ID in settings or console
console.log(app.appId) // Shows something like "obsdmd1234567"
```
**4. Header Configuration**
Verify headers in your client:
Method A (Separate):
```json
{
"Authorization": "Bearer YOUR_TOKEN",
"mcp-app-id": "YOUR_APP_ID"
}
```
Method B (Combined):
```json
{
"Authorization": "Bearer YOUR_TOKEN+YOUR_APP_ID"
}
```
### Connection Issues
#### Symptoms
* "Connection refused" errors
* Timeouts
* "Cannot reach server"
#### Solutions
**1. Server Not Running**
Check and restart:
1. Open MCP settings
2. Toggle server OFF
3. Wait 2 seconds
4. Toggle server ON
5. Check status indicator
**2. Network Configuration**
For local access:
```json
{
"host": "127.0.0.1", // Local only
"port": 7777
}
```
For network access:
```json
{
"host": "0.0.0.0", // All interfaces
"port": 7777
}
```
**3. Client URL Issues**
Common mistakes:
❌ Wrong:
* `http://localhost:7777/mcp/` (trailing slash)
* `https://127.0.0.1:7777/mcp` (HTTPS not supported)
* `http://127.0.0.1:7777` (missing /mcp)
✅ Correct:
* `http://127.0.0.1:7777/mcp`
* `http://192.168.1.100:7777/mcp` (for network)
**4. Proxy/VPN Interference**
* Disable VPN temporarily
* Check proxy settings
* Use direct connection
### Tool Execution Errors
#### Symptoms
* "Tool not found" errors
* "Invalid parameters"
* Unexpected results
#### Solutions
**1. Session Not Initialized**
Always initialize first:
```bash
curl -X POST http://127.0.0.1:7777/mcp \
-H "Authorization: Bearer TOKEN+APPID" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize"}'
```
**2. Missing Session ID**
Include session ID in subsequent requests:
```bash
-H "mcp-session-id: session_abc123"
```
**3. Parameter Validation**
Check parameter types:
❌ Wrong:
```json
{
"priority": "high", // Should be number
"dueDate": "tomorrow", // Should be YYYY-MM-DD
"completed": "yes" // Should be boolean
}
```
✅ Correct:
```json
{
"priority": 5,
"dueDate": "2024-01-20",
"completed": true
}
```
**4. Tool Name Typos**
Use exact tool names:
* ✅ `query_tasks` (correct)
* ❌ `queryTasks` (wrong)
* ❌ `query-tasks` (wrong)
### Performance Issues
#### Symptoms
* Slow responses
* Timeouts
* High CPU usage
#### Solutions
**1. Large Result Sets**
Always use limits:
```json
{
"limit": 100, // Reasonable limit
"offset": 0 // For pagination
}
```
**2. Inefficient Queries**
Optimize your filters:
❌ Inefficient:
```json
{
"filter": {} // Gets all tasks
}
```
✅ Efficient:
```json
{
"filter": {
"completed": false,
"project": "Current"
},
"limit": 50
}
```
**3. Indexing Issues**
Rebuild task index:
1. Settings → Task Genius → Index & Sources
2. Click "Rebuild Index"
3. Wait for completion
4. Restart MCP server
**4. Memory Management**
For large vaults:
* Increase Obsidian memory limit
* Close unused plugins
* Restart Obsidian periodically
## Platform-Specific Issues
### macOS
**Issue: Security Warnings**
Solution:
```bash
# Allow Obsidian network access
System Preferences → Security & Privacy → Firewall → Options
Add Obsidian to allowed apps
```
**Issue: Port Binding Failed**
Solution:
```bash
# Check System Integrity Protection
csrutil status
# If needed, use a higher port number (> 1024)
```
### Windows
**Issue: Windows Defender Blocking**
Solution:
1. Windows Security → Firewall & network protection
2. Allow an app through firewall
3. Add Obsidian.exe
4. Check both Private and Public
**Issue: PowerShell Execution Policy**
For Claude Desktop/CLI tools:
```powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
```
### Linux
**Issue: Permission Denied**
Solution:
```bash
# For ports < 1024
sudo setcap 'cap_net_bind_service=+ep' /usr/bin/obsidian
# Or use a higher port
```
**Issue: SELinux Blocking**
Solution:
```bash
# Check SELinux status
sestatus
# Allow if needed
setsebool -P httpd_can_network_connect 1
```
## Client-Specific Issues
### Cursor
**Issue: Configuration Not Loading**
1. Verify config file location
2. Check JSON syntax
3. Restart Cursor
4. Clear Cursor cache
### Claude Desktop
**Issue: Curl Command Failing**
Test manually:
```bash
curl -v -X POST http://127.0.0.1:7777/mcp \
-H "Authorization: Bearer TOKEN+APPID" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize"}'
```
Common fixes:
* Install/update curl
* Check PATH variable
* Use full curl path
### VS Code
**Issue: Extension Not Recognizing MCP**
1. Update VS Code
2. Reinstall MCP extension
3. Check workspace settings
4. Verify configuration scope
## Frequently Asked Questions
### General
**Q: Is MCP secure?**
A: Yes, MCP uses token-based authentication and runs locally by default. For additional security:
* Keep tokens secret
* Use local-only mode
* Regenerate tokens periodically
* Monitor access logs
**Q: Can I use MCP on mobile?**
A: No, MCP requires desktop Obsidian due to technical limitations of mobile platforms.
**Q: Does MCP work offline?**
A: Yes, MCP runs entirely locally. Internet is only needed for AI services (Claude, ChatGPT, etc.).
**Q: Can multiple AI tools connect simultaneously?**
A: Yes, multiple clients can connect to the same MCP server. Each gets its own session.
### Configuration
**Q: How do I change the port?**
A: Settings → MCP Integration → Port → Enter new number → Restart server
**Q: Can I run multiple MCP servers?**
A: Yes, for different vaults:
1. Use different ports (7777, 7778, etc.)
2. Each vault has unique tokens
3. Configure clients separately
**Q: Should I use Method A or Method B authentication?**
A: Method B (combined Bearer) is recommended for simplicity. Use Method A if your client doesn't support combined headers.
**Q: How do I allow remote access?**
A: Change host from `127.0.0.1` to `0.0.0.0` and ensure firewall allows the port. ⚠️ Understand security implications first.
### Usage
**Q: Why are my queries slow?**
A: Common causes:
* Large vault (10,000+ tasks)
* No query limits
* Inefficient filters
* Index needs rebuilding
**Q: Can I modify task files directly?**
A: Yes, MCP modifications are the same as manual edits. Files update in real-time.
**Q: What happens if Obsidian crashes?**
A: MCP server stops with Obsidian. Restart Obsidian and re-enable MCP. No data is lost.
**Q: How do I backup my MCP configuration?**
A: Configuration is stored in Obsidian settings. Backup:
* `.obsidian/plugins/obsidian-task-genius/data.json`
* Client configuration files
### Limits
**Q: What are the rate limits?**
A: No hard limits, but recommended:
* Max 100 requests/second
* Result sets \< 1000 items
* Batch operations \< 500 items
**Q: Maximum task content length?**
A:
* Task content: 10,000 characters
* Tags: 50 per task
* File path: 260 characters (OS limit)
**Q: How many concurrent connections?**
A: Theoretical: Unlimited
Practical: 10-20 for optimal performance
## Debug Commands
### Test Basic Connectivity
```bash
# Health check
curl http://127.0.0.1:7777/health
# Expected: {"status":"ok","version":"1.0.0"}
```
### Test Authentication
```bash
# With your actual token and app ID
curl -X POST http://127.0.0.1:7777/mcp \
-H "Authorization: Bearer YOUR_TOKEN+YOUR_APP_ID" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize"}'
```
### Test Tool Execution
```bash
# List available tools
curl -X POST http://127.0.0.1:7777/mcp \
-H "Authorization: Bearer YOUR_TOKEN+YOUR_APP_ID" \
-H "mcp-session-id: YOUR_SESSION_ID" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
```
### Enable Debug Logging
In MCP settings, set Log Level to "Debug", then check console:
```javascript
// In Obsidian console
console.log(app.plugins.plugins['obsidian-task-genius'].mcpServerManager.getStatus())
```
## Getting Help
If these solutions don't resolve your issue:
1. **Gather Information**:
* Obsidian version
* Task Genius version
* Error messages
* Console logs
* Steps to reproduce
2. **Check Resources**:
* [GitHub Issues](https://github.com/yourusername/task-genius/issues)
* [Discord Community](https://discord.gg/taskgenius)
* [Documentation](https://taskgenius.docs)
3. **Report Issue**:
* Use GitHub issue template
* Include diagnostic info
* Describe expected vs actual behavior
* Attach relevant logs
**Security Note**: When sharing logs or configuration, always redact authentication tokens and sensitive information.
## Recovery Procedures
### Reset MCP Configuration
1. Disable MCP server
2. Close Obsidian
3. Delete MCP cache: `.obsidian/plugins/obsidian-task-genius/.mcp-cache`
4. Restart Obsidian
5. Re-enable MCP
6. Regenerate token
7. Reconfigure clients
### Full Plugin Reset
If all else fails:
1. Export your settings (backup `data.json`)
2. Disable Task Genius
3. Delete plugin folder
4. Reinstall Task Genius
5. Import settings
6. Re-enable MCP
**Remember**: MCP is a powerful feature but still in active development. Report bugs to help improve it for everyone!
file: ./content/docs/mcp-integration/use-cases.mdx
meta: {
"title": "MCP Use Cases & Examples",
"description": "Practical examples and workflows for Task Genius MCP integration"
}
This guide demonstrates real-world applications of Task Genius MCP integration, from simple daily workflows to complex automation scenarios.
## Daily Task Management
### Morning Planning Routine
Start your day by asking AI to organize your tasks:
```text
"Show me all tasks due today, sorted by priority.
Include any overdue tasks from yesterday."
```
The AI will:
1. Query incomplete tasks due today
2. Find overdue tasks from previous days
3. Sort by priority (5 = highest)
4. Present a organized daily plan
**Behind the scenes:**
```json
{
"method": "tools/call",
"params": {
"name": "query_tasks",
"arguments": {
"filter": {
"completed": false,
"dateRange": {
"from": "2024-01-01",
"to": "2024-01-15"
}
},
"sort": {
"field": "priority",
"order": "desc"
}
}
}
}
```
### End-of-Day Review
Review what you accomplished:
```text
"What tasks did I complete today?
Generate a summary for my daily log."
```
**Result:**
```markdown
## Daily Accomplishments - January 15, 2024
### Completed Tasks (7)
- ✅ [High] Review Q1 budget proposal
- ✅ [High] Client meeting preparation
- ✅ [Medium] Update project documentation
- ✅ [Medium] Code review for feature branch
- ✅ [Low] Respond to team emails
- ✅ [Low] Update calendar for next week
- ✅ [Low] File expense reports
### Progress Summary
- Completion rate: 70% (7/10 tasks)
- High-priority completion: 100% (2/2)
- Projects touched: Budget Planning, Client Relations, Development
```
### Weekly Planning
Prepare for the upcoming week:
```text
"Create a weekly overview:
1. Tasks due this week by day
2. Project milestones
3. Recurring tasks to schedule"
```
## Project Management
### Sprint Planning
Set up a new sprint with AI assistance:
```text
"Create sprint tasks for Project Alpha:
- Setup development environment (Priority 5, Due: Monday)
- Design database schema (Priority 4, Due: Tuesday)
- Implement user authentication (Priority 5, Due: Thursday)
- Write unit tests (Priority 4, Due: Friday)
- Code review and merge (Priority 3, Due: Friday)
Tag all with #sprint-01 and +ProjectAlpha"
```
**MCP executes:**
```json
{
"name": "batch_create_tasks",
"arguments": {
"defaultFilePath": "Projects/Sprint-01.md",
"tasks": [
{
"content": "Setup development environment",
"priority": 5,
"dueDate": "2024-01-15",
"project": "ProjectAlpha",
"tags": ["sprint-01"]
},
// ... more tasks
]
}
}
```
### Project Status Report
Generate project insights:
```text
"Analyze Project Alpha:
- How many tasks are complete vs incomplete?
- What high-priority items are overdue?
- What's the completion trend this month?"
```
**AI Response:**
```markdown
## Project Alpha Status Report
### Overview
- Total Tasks: 47
- Completed: 31 (66%)
- In Progress: 12 (26%)
- Not Started: 4 (8%)
### Critical Items (Overdue + High Priority)
1. API Integration - 3 days overdue
2. Security Audit - 1 day overdue
### This Month's Progress
- Week 1: 5 tasks completed
- Week 2: 8 tasks completed
- Week 3: 12 tasks completed (current)
- Trend: Accelerating ↗️
### Recommendations
- Focus on overdue high-priority items
- API Integration blocks 3 other tasks
- Consider redistributing Week 4 workload
```
### Milestone Tracking
Track project milestones:
```text
"Show all milestones for Q1 projects.
Highlight any at risk of missing deadline."
```
## Meeting Management
### Pre-Meeting Preparation
Before a meeting:
```text
"Prepare for tomorrow's client meeting:
1. Find all tasks related to ClientX
2. Identify discussion points
3. Create action items template"
```
**AI generates:**
```markdown
## ClientX Meeting Prep - January 16, 2024
### Open Items (5)
- Contract renewal discussion (Due: Jan 20)
- Feature request: Dashboard customization
- Bug report: Login timeout issue
- Q1 roadmap review
- Budget allocation for add-ons
### Completed Since Last Meeting (3)
- ✅ Fixed data export issue
- ✅ Deployed performance improvements
- ✅ Updated documentation
### Suggested Agenda
1. Review completed items (5 min)
2. Address bug report (10 min)
3. Discuss feature request (15 min)
4. Q1 roadmap alignment (20 min)
5. Contract and budget (10 min)
### Action Items Template
- [ ] [Owner] Action description (Due: Date)
- [ ] [Owner] Action description (Due: Date)
```
### Post-Meeting Actions
After the meeting:
```text
"Create tasks from these meeting notes:
- John: Send proposal by Friday (high priority)
- Sarah: Review legal docs by next Tuesday
- Me: Update dashboard mockups by Monday
- Team: Schedule follow-up for next month
All tasks should be tagged #ClientX"
```
## Automation Workflows
### Recurring Task Generation
Set up recurring tasks:
```text
"Create weekly recurring tasks:
- Monday: Team standup prep
- Wednesday: Progress report
- Friday: Week review and planning
All should be medium priority, tagged #recurring"
```
### Task Migration
Move tasks between projects:
```text
"Find all tasks tagged #prototype in the Research project
and move them to the Development project.
Update their priority to 4."
```
**MCP operations:**
1. Query tasks with specific criteria
2. Batch update project assignment
3. Update priority levels
4. Confirm changes
### Bulk Status Updates
End-of-sprint cleanup:
```text
"Mark all tasks in Sprint-01 as complete
except those tagged #carry-over.
Move carry-over tasks to Sprint-02."
```
## Time Management
### Time Blocking
Create time-blocked tasks:
```text
"Create time blocks for tomorrow:
- 9:00-10:00: Deep work on API design
- 10:00-10:30: Email and messages
- 10:30-12:00: Development sprint
- 13:00-14:00: Code review
- 14:00-15:00: Team meeting
- 15:00-17:00: Feature implementation"
```
### Focus Sessions
Set up focused work sessions:
```text
"Create a 2-hour focus block:
1. Set main task: Complete user authentication
2. Add subtasks:
- Review requirements (15 min)
- Write implementation (60 min)
- Write tests (30 min)
- Document changes (15 min)"
```
## Data Analysis
### Productivity Metrics
Analyze your productivity:
```text
"Analyze my task completion for the past month:
- Average daily completion rate
- Most productive day of week
- Which projects take most time
- Priority distribution"
```
**AI Analysis:**
```markdown
## Productivity Analysis - Last 30 Days
### Completion Metrics
- Total tasks completed: 127
- Average per day: 4.2 tasks
- Completion rate: 78%
### Best Performance
- Most productive: Tuesdays (6.1 tasks avg)
- Peak hours: 9 AM - 12 PM
- Best week: Week 2 (34 tasks)
### Project Distribution
1. Client Work: 45% of tasks
2. Internal Development: 30%
3. Administration: 15%
4. Learning: 10%
### Priority Insights
- High priority completion: 92%
- Medium priority completion: 78%
- Low priority completion: 65%
- Recommendation: Delegate more low-priority tasks
```
### Workload Balancing
Balance your workload:
```text
"Analyze my workload for next week:
- Which days are overloaded?
- What can be postponed?
- Suggest a balanced schedule"
```
## Advanced Integrations
### Cross-Tool Workflows
Integrate with other tools:
```text
"When I mention a task in my code comments like:
// TODO: Implement caching mechanism
Create a corresponding task in Obsidian with:
- Context from the file path
- Priority based on TODO/FIXME/HACK
- Tag with #code-todo"
```
### Email to Task
Convert emails to tasks:
```text
"Create tasks from this email thread:
Subject: Project Requirements Update
- Review new requirements doc (High, Due: Friday)
- Update implementation plan (Medium, Due: Monday)
- Schedule stakeholder meeting (Low, Due: Next week)"
```
### Calendar Integration
Sync with calendar events:
```text
"For each meeting in my calendar tomorrow:
- Create a prep task 30 minutes before
- Create a follow-up task for the day after
- Tag with #meeting and the attendee names"
```
## Team Collaboration
### Task Delegation
Delegate tasks to team members:
```text
"From my current tasks, identify which ones could be delegated:
- Technical tasks → Dev team
- Documentation → Technical writer
- Testing → QA team
Create delegation templates for each."
```
### Team Status Dashboard
Create team overview:
```text
"Generate team status dashboard:
- Tasks by team member
- Overdue items per person
- This week's priorities
- Blockers and dependencies"
```
**Generated Dashboard:**
```markdown
## Team Status - Week 3
### Task Distribution
- Alice: 12 tasks (3 high priority)
- Bob: 8 tasks (2 high priority)
- Carol: 10 tasks (4 high priority)
- David: 7 tasks (1 high priority)
### ⚠️ Overdue Items
- Alice: API documentation (2 days)
- Carol: Test suite update (1 day)
### This Week's Priorities
1. Complete Sprint-01 deliverables
2. Client presentation preparation
3. Security audit response
4. Q2 planning kickoff
### Blockers
- Waiting on design approval (affects 3 tasks)
- Database migration pending (affects 5 tasks)
```
## Custom Workflows
### Personal Routines
Create personalized workflows:
```text
"My morning routine:
1. Check overdue tasks
2. Review today's calendar
3. Set 3 main priorities
4. Time block the morning
5. Create focus session for deep work"
```
### Context Switching
Manage context switches:
```text
"I'm switching from Project A to Project B:
1. Save current state of Project A tasks
2. Mark in-progress items
3. Load Project B context
4. Show Project B priorities
5. Suggest starting point"
```
### Review Cycles
Set up review processes:
```text
"Weekly review process:
1. List completed tasks
2. Identify incomplete high-priority items
3. Analyze why tasks weren't completed
4. Adjust next week's priorities
5. Archive completed project tasks"
```
## Tips for Effective Use
### 1. Start Simple
Begin with basic queries before complex automation:
* ❌ "Reorganize my entire task system"
* ✅ "Show today's high-priority tasks"
### 2. Be Specific
Provide clear criteria for better results:
* ❌ "Find important stuff"
* ✅ "Find tasks with priority 4-5 due this week"
### 3. Use Natural Language
The AI understands context:
* "What should I work on now?"
* "Help me plan tomorrow"
* "I'm overwhelmed, prioritize my tasks"
### 4. Iterate and Refine
Adjust queries based on results:
1. Start broad: "Show project tasks"
2. Refine: "Show incomplete project tasks"
3. Focus: "Show incomplete high-priority project tasks due this week"
### 5. Create Templates
Save successful workflows:
```javascript
const dailyReview = `
Show me:
1. What I completed today
2. What's still pending
3. Tomorrow's priorities
4. Any new urgent items
`;
```
## Next Steps
* Review [API Reference](/docs/mcp-integration/api-reference) for detailed parameters
* Explore [Client Configurations](/docs/mcp-integration/clients) for your tools
* Check [Troubleshooting](/docs/mcp-integration/troubleshooting) if you encounter issues
* Share your workflows with the community
**Pro Tip**: Save your most effective AI prompts as templates. This creates consistent, reliable workflows you can reuse daily.
file: ./content/docs/task-view/basic-view-settings.mdx
meta: {
"title": "Basic view settings"
}
import { VersionCallout } from "@/components/VersionCallout";
## Basic Settings
View settings are available in the view configuration modal, which you can open by right-clicking the view item in the sidebar and selecting `Open settings`, or visiting `Settings` -> `View` -> `View Name`.
By default, all views (except the habit view) have the following settings:
### Basic Settings
* **View Name**: The name displayed for the view (e.g., "Inbox").
* **Icon**: The Lucide icon used for the view in the sidebar.
### General Filters
* **Hide Completed and Abandoned Tasks**: Toggle to hide tasks marked as completed (`x`) or abandoned (`-`).
* **Filter Blanks**: Toggle to hide tasks with no content.
### Sort Settings
* **Sort By**: Select the field to sort the tasks by.
* **Sort Direction**: Select the direction to sort the tasks.
### Filter Rules
Define specific criteria for tasks to be included in this view:
* **Text Contains**: Filter by specific text within the task content.
* **Tags Include**: Only show tasks that have *all* specified tags (e.g., `#urgent, #work`).
* **Tags Exclude**: Hide tasks that have *any* of the specified tags (e.g., `#waiting, #someday`).
* **Project Is**: Only show tasks belonging to a specific project path (exact match).
* **Priority Is**: Only show tasks with a specific priority level (e.g., `1`, `2`).
* **Status Include**: Only show tasks with specific status markers (e.g., `/`, `>`).
* **Status Exclude**: Hide tasks with specific status markers (e.g., `-`, `x`).
* **Due/Start/Scheduled Date Is**: Filter tasks based on their due, start, or scheduled dates. Accepts specific dates (`YYYY-MM-DD`) or relative terms (`today`, `next week`).
* **Path Includes**: Only show tasks whose file path contains the specified string (e.g., `Meetings/`).
* **Path Excludes**: Hide tasks whose file path contains the specified string (e.g., `Archive/`).
file: ./content/docs/task-view/event-view.mdx
meta: {
"title": "Event View"
}
import { VersionCallout } from "@/components/VersionCallout";
import {
CalendarDays,
GanttChartSquare,
Clock,
ListChecks,
CalendarCheck2,
ChevronLeft,
ChevronRight,
} from "lucide-react";
The Event View provides a calendar-based interface to visualize and interact with your tasks. It allows you to see tasks plotted on different time scales, navigate through dates, and perform actions directly from the calendar.
## Open the event view
1. Open the [Task Genius View](/docs/task-view).
2. Select `Event` nav item in the left sidebar.
3. You will see the tasks grouped by event in the right panel.
## Usage
The Event View offers several ways to look at your tasks:
* **Multiple views:** Switch between different perspectives:
* **Year view:** Get a high-level
overview of the entire year.
* **Month view:** See tasks laid
out across a specific month.
* **Week view:** Focus on the
current or selected week.
* **Day view:** Examine tasks scheduled
for a single day.
* **Agenda view:** View upcoming
tasks in a list format.
* **Navigation:** Easily move through time:
* **Previous**/**Next**
: Navigate to the previous or next year, month, week, or day depending on the
active view.
* **Today:** Quickly jump back
to the current date.
* **View switching:** Use the buttons or dropdown in the header to select your preferred view (`Year`, `Month`, `Week`, `Day`, `Agenda`). Your last used view is remembered.
* **Date display:** The header clearly shows the currently displayed date range, adapting its format based on the active view (e.g., "MMMM YYYY" for Month view, "MMM D - D, YYYY" for Week view).
## Task Display
Tasks are processed and displayed on the calendar as events:
* **Date mapping:** Tasks are primarily placed on the calendar based on their `Due date`. If `Due date` is not available, it will fall back to `Scheduled date` and then `Start date`. Tasks without any of these dates are currently not displayed in the calendar view.
* **All-day events:** By default, tasks are treated as all-day events on their assigned date.
* **Multi-day events:** If a task has both a `Start date` and a `Due date` that are different, it will be displayed spanning across those days (inclusive).
* **Completed tasks:** Completed tasks are visually distinct (e.g., shown in grey).
## Interactions
You can interact with the calendar in various ways:
* **Clicking an event:** Selects the corresponding task, will open the task in the detail side panel.
* **Clicking a day (Month/Week view):**
* Can be configured to open the Quick Capture modal to quickly add a task for that day.
* Can switch the view to the Day view for the selected date (Note: This is not yet implemented).
* **Clicking a month (Year view):** Switches the view to the Month view for the selected month.
* **Right-clicking an event:** Opens a context menu with relevant actions for that task.
* **Completing an event:** A mechanism (like a checkbox on the event, depending on the view) allows marking the task as complete directly from the calendar.
## Settings
You can read more about the settings in the [Basic view settings](/docs/task-view/basic-view-settings#basic-settings) page.
Event view has a special setting:
`First day of week`: This setting determines the first day of the week for the calendar. It can be set to any day of the week.
file: ./content/docs/task-view/flag-view.mdx
meta: {
"title": "Flag View"
}
import { VersionCallout } from "@/components/VersionCallout";
import { ListIcon, GitBranchIcon } from "lucide-react";
The Flag View is a built-in view that displays high-priority tasks or tasks tagged with #flagged. It provides a focused perspective on your most important tasks that require attention.
## Open the flag view
1. Open the [Task Genius View](/docs/task-view).
2. Select `Flag` nav item in the left sidebar.
3. You will see the tasks grouped by flag in the right panel.
## Usage
* **Task Display**: Shows tasks that have a priority level of 3 or higher, or tasks that include the #flagged tag.
* **Filtering**:
* **Text Filter**: A search bar in the header allows for quick filtering of displayed tasks by their content (case-insensitive).
* **Rule-Based Filtering**: Applies predefined filter rules ([see settings](#settings)) to determine which tasks are initially loaded into the view.
* **Priority Filtering**: By default, only shows tasks with priority level 3+ or the #flagged tag.
* **View Modes**:
* **List View** (): Displays tasks as a flat list.
* **Tree View** (): Displays tasks hierarchically, showing parent-child relationships.
* **Task Count**: The header displays the current number of flagged tasks visible after applying filters.
* **Sorting**: Tasks are automatically sorted based on the following order:
1. Completion status (incomplete tasks first).
2. Priority (higher priority first).
3. Due Date (earlier dates first).
4. Task content (alphabetical).
* **Interactions**:
* **Selection**: Click on a task to select it (used for detail views or actions).
* **Completion**: Mark tasks as complete directly within the view.
* **Context Menu**: Right-click on a task to open a context menu for more actions.
* **Lazy Loading**: For performance with large numbers of tasks, the view loads tasks in batches as you scroll down.
## Settings
You can read more about the settings in the [Basic view settings](/docs/task-view/basic-view-settings#basic-settings) page.
file: ./content/docs/task-view/forecast-view.mdx
meta: {
"title": "Forecast View"
}
import { VersionCallout } from "@/components/VersionCallout";
import {
ListIcon,
GitBranchIcon,
SidebarIcon,
XIcon,
ChevronDownIcon,
ChevronRightIcon,
} from "lucide-react"; // Assuming Icon component is available
The Forecast View provides a calendar-based perspective on your tasks, showing items with upcoming scheduled or due dates.
## Open the forecast view
1. Open the [Task Genius View](/docs/task-view).
2. Select `Forecast` in the sidebar.
3. The Forecast View will load, displaying the calendar, task stats, upcoming tasks, and the main task list.
## Usage
### Header Bar
The header bar at the top of the Task Panel displays key information and controls:
* **Title:** Shows "Forecast".
* **Task & Project Count:** Displays the total number of tasks loaded and the number of unique projects they belong to (e.g., "15 tasks, 3 projects").
* **View Toggle:** Switches the Task Panel between List view () and Tree view ().
* **Sidebar Toggle (Mobile):** On mobile devices, a icon appears to show/hide the Left Sidebar.
### Left Sidebar
The left sidebar contains navigation and overview components:
#### Stats Bar
Located above the calendar, this bar shows counts for tasks categorized by their relevant date (Scheduled or Due):
* **Past Due:** Count of tasks whose relevant date is before today.
* **Today:** Count of tasks whose relevant date is today.
* **Future:** Count of tasks whose relevant date is after today.
Clicking on any of these stats will filter the Task Panel to show only tasks in that category. Click again to remove the filter.
#### Calendar Component
Displays a monthly calendar.
* Days with tasks are marked.
* Clicking a date selects it, updating the "Coming Up" section and the Task Panel to show tasks relevant to that date and beyond.
* The current date is highlighted.
#### Coming Up Component
Below the calendar, this section lists tasks with relevant dates occurring in the 15 days *after* the date currently selected in the calendar.
* Each entry shows the day of the week, date (e.g., "Mon, Jan 1"), and the number of tasks for that day.
* Clicking an entry selects that date in the calendar.
* On mobile, a close button () is available to hide the sidebar.
### Task Panel
The main panel on the right displays the tasks organized by date.
#### Date Sections
Tasks are grouped into collapsible sections based on their relevant date:
* **Past Due:** Contains all tasks with a relevant date before today. This section appears first if the selected date is today or in the future.
* **Selected Date Section:** Shows tasks for the date selected in the calendar. The title format depends on the selected date relative to today (e.g., "Today — January 1, 2024", "Tomorrow, Tuesday, January 2, 2024", "Wednesday, January 3, 2024").
* **Future Date Sections:** Shows tasks for dates after the selected date. Sections for the next 7 days after the selected date are expanded by default.
Each section header displays:
* An expand/collapse toggle ( / ).
* The section title (e.g., "Past Due", "Today — ...").
* A badge showing the number of tasks in that section.
#### View Mode
The **View Toggle** button in the Header Bar switches this panel between:
* **List View ():** Shows tasks as a flat list within each date section.
* **Tree View ():** Organizes tasks hierarchically based on parent tasks or project structure (if applicable).
#### Task Sorting
Within each date section, tasks are automatically sorted first by **Priority** (highest to lowest) and then by their **Relevant Date** (earliest to latest).
#### Relevant Date Logic
The view uses the `scheduledDate` of a task if available. If a task has no `scheduledDate`, it uses the `dueDate`. Tasks without either date are not displayed in the Forecast View.
## Settings
You can read more about the settings in the [Basic view settings](/docs/task-view/basic-view-settings#basic-settings) page.
### First Day of Week
You can set the first day of week in
file: ./content/docs/task-view/habit-view.mdx
meta: {
"title": "Habit View"
}
import { VersionCallout } from "@/components/VersionCallout";
The Habit View provides a visual interface to track your progress on the habits you've defined in Task Genius. It leverages the data you record in your daily notes' Frontmatter.
## Open the Habit View
1. Open the [Task Genius View](/docs/task-view).
2. Select the `Habit` nav item in the left sidebar.
3. The Habit View will load, displaying your tracked habit data.
## Usage
The Habit View typically presents your habit data in a calendar-like format, often referred to as a heatmap or streaks view. This allows you to quickly see your consistency over time.
The view generally consists of:
1. **Habit Grid/Calendar:** The main area showing days and whether each habit was completed according to its definition. Colors, icons, or other visual cues are used to represent the status (e.g., completed, missed, partially completed, value recorded).
2. **Summary/Statistics (If applicable):** May include information like current streaks, completion rates, or other relevant statistics.
You can press checkbox or icon button to toggle the habit status.
### Tooltip
You can hover over the habit heatmap to see the tooltip with the habit status and the value recorded.
### Configuring Habits
The Habit View is for *visualizing* your progress based on the habits you have already set up.
Open Habit Settings
To **define**, **add**, or **modify** habits (e.g., change their name, icon, type, properties, or completion conditions), you must use the Task Genius settings:
1. Open Task Genius settings.
2. Navigate to the **Habit** settings tab.
3. Configure your habits there.
For comprehensive instructions on how to define and manage your habits, please refer to the main **[Habit Tracking Setup](/docs/habit)** documentation.
file: ./content/docs/task-view/inbox-view.mdx
meta: {
"title": "Inbox View"
}
import { VersionCallout } from "@/components/VersionCallout";
import { ListIcon, GitBranchIcon } from "lucide-react";
The Inbox View is a built-in view that displays tasks based on specific criteria, acting as a central place to process incoming or unfiltered tasks. It utilizes a flexible content component that supports various display and filtering options.
## Open the inbox view
1. Open the [Task Genius View](/docs/task-view).
2. Select `Inbox` nav item in the left sidebar.
3. You will see the tasks grouped by inbox in the right panel.
## Usage
* **Task Display**: Shows tasks that match its configured filter rules. By default, it might show tasks without project tags.
* **Filtering**:
* **Text Filter**: A search bar in the header allows for quick filtering of displayed tasks by their content (case-insensitive).
* **Rule-Based Filtering**: Applies predefined filter rules ([see settings](#settings)) to determine which tasks are initially loaded into the view.
* **View Modes**:
* **List View** (): Displays tasks as a flat list.
* **Tree View** (): Displays tasks hierarchically, showing parent-child relationships. You can toggle between these modes using the list/branch icon in the header.
* **Task Count**: The header displays the current number of tasks visible after applying filters.
* **Sorting**: Tasks are automatically sorted based on the following order:
1. Completion status (incomplete tasks first).
2. Priority (higher priority first).
3. Due Date (earlier dates first).
4. Task content (alphabetical).
* **Interactions**:
* **Selection**: Click on a task to select it (used for detail views or actions).
* **Completion**: Mark tasks as complete directly within the view.
* **Context Menu**: Right-click on a task to open a context menu for more actions.
* **Lazy Loading**: For performance with large numbers of tasks, the view loads tasks in batches as you scroll down.
## Settings
You can read more about the settings in the [Basic view settings](/docs/task-view/basic-view-settings#basic-settings) page.
file: ./content/docs/task-view/index.mdx
meta: {
"title": "View"
}
import { VersionCallout } from "@/components/VersionCallout";
The Task Genius View provides a powerful, centralized dashboard to manage all your tasks across your entire Obsidian vault.
## Quick Access
Open View Settings
## Architecture
Task Genius uses the modern **Dataflow Architecture** for optimal performance and flexibility:
* **Event-driven System**: Real-time updates across all views
* **Multi-source Support**: Seamlessly integrates file tasks, ICS calendar events, and file-level tasks
* **Smart Caching**: Fast startup with persisted state and incremental updates
* **Worker Processing**: Parallel processing for large vaults
* **Bases Compatible**: All views can be used within Obsidian Bases for enhanced data visualization
The system automatically indexes your tasks and keeps them synchronized across all views.
## Opening the View
Access the view using one of these methods:
* Click the dedicated **Ribbon Icon** (if enabled in settings).
* Run the command `Task Genius: Open Task Genius view` from the Obsidian command palette (`Ctrl/Cmd + P`).
## Interface Overview
The view typically consists of:
* **Left Panel/Sidebar**: Navigation controls to switch between different views.
* **Main Panel**: Displays the [list of tasks](/docs/task-view/list-item) based on the current mode and filters. (You can filter by tags, projects, status, etc.)
* **Right Panel (Details Panel)**: Shows detailed information and allows editing of the currently selected task.
## Views
The Task Genius View offers several views to organize and visualize your tasks:
## Interacting with Tasks
Within the view, you can:
* **View/Edit Details**: Click on a task in the main panel to see its full description, due date, priority, notes, source file link, etc., in the right details panel. You can often edit these details directly.
* **Change Status**: Click the task marker (e.g., `[ ]`) directly in the task list to cycle its status or mark it complete.
* **Sort & Filter**: Use controls within the view to sort tasks (by priority, due date, etc.) and apply filters (by tag, status, date range, etc.).
* **Context Menu**: Right-click on a task in the list to access relevant actions (e.g., set priority, set due date, move task, go to source note).
## Task Indexing
The Dataflow architecture maintains a high-performance index of all tasks:
### Automatic Updates
* **Real-time Monitoring**: File changes trigger instant updates
* **Event-driven Sync**: All views stay synchronized automatically
* **Background Processing**: Workers handle large operations without blocking
### Data Sources
* **File Tasks**: Regular tasks from Markdown and Canvas files
* **ICS Events**: External calendar events displayed as tasks
* **File-level Tasks**: Entire files recognized as tasks based on metadata
* **Bases Integration**: Native Obsidian file indexing for notes as tasks ([Learn more](/docs/bases-support))
### Manual Controls
If needed, you can manually refresh the index:
* `Task Genius: Refresh task index` - Quick refresh
* `Task Genius: Force reindex all tasks` - Complete rebuild
Learn more in the [Task Indexing](/docs/task-view/indexer) documentation.
file: ./content/docs/task-view/indexer.mdx
meta: {
"title": "Indexer"
}
import { VersionCallout } from "@/components/VersionCallout";
Task Genius uses the modern **Dataflow Architecture** to efficiently index and manage tasks from multiple sources. This event-driven system provides real-time updates, smart caching, and exceptional performance.
## Quick Configuration
Open Index Settings
## How it Works
The Dataflow architecture orchestrates multiple components for optimal performance:
### Core Components
1. **Orchestrator**: Central coordinator managing all data sources and events
2. **Data Sources**:
* **ObsidianSource**: Monitors file changes in your vault
* **IcsSource**: Integrates external calendar events
* **FileSource**: Recognizes entire files as tasks
3. **Repository**: Maintains the task index and handles queries
4. **Storage**: Multi-tier caching system for instant startup
5. **Workers**: Background processing for large operations
### Processing Flow
1. **File Monitoring**: ObsidianSource watches for changes (create, modify, delete)
2. **Smart Caching**: Repository checks cache validity using content hashing
3. **Parallel Processing**:
* WorkerOrchestrator distributes parsing to Web Workers
* Multiple files processed simultaneously
* Automatic fallback to main thread if needed
4. **Event Broadcasting**: Changes trigger `task-genius:task-cache-updated` events
5. **View Synchronization**: All views update automatically via event subscription
### Performance Features
* **Snapshot Loading**: \~100ms startup for 1000+ tasks
* **Incremental Updates**: Only changed files reprocessed
* **Content Hashing**: Detect actual changes vs. metadata updates
* **Loop Prevention**: Sequence-based event tracking prevents infinite updates
B[ObsidianSource]
K[Calendar] -- Sync --> L[IcsSource]
M[File Tasks] -- Recognize --> N[FileSource]
end
subgraph "Dataflow Core"
B -- FILE_UPDATED --> O[Orchestrator]
L -- ICS_EVENTS_UPDATED --> O
N -- FILE_TASK_UPDATED --> O
O -- Process --> P[Repository]
P -- Query --> Q[Storage Cache]
Q -- Hit/Miss --> R{Cache Status}
R -- Miss --> S[WorkerOrchestrator]
S -- Parse --> T[Web Workers]
T -- Results --> P
R -- Hit --> U[Cached Data]
U --> P
end
subgraph "Views"
P -- TASK_CACHE_UPDATED --> V[All Views]
V --> W[UI Updates]
end
`}
/>
### Data Sources
The system integrates multiple data sources seamlessly:
* **File Tasks**: Regular tasks from Markdown and Canvas files
* **ICS Events**: External calendar events displayed as tasks
* **File-level Tasks**: Entire files treated as tasks based on metadata
### Troubleshooting
If the index seems outdated:
* Run `Task Genius: Force reindex all tasks` to rebuild completely
* Use `Task Genius: Refresh task index` for a quick refresh
* Check console for any error messages
## Managing the Indexer
### Disabling
Disable indexing in Settings → Task Genius → Index → "Enable Indexing"
### Performance Tuning
* **Worker Count**: Adjust based on vault size (Settings → Index)
* **Cache Duration**: Configure persistence time
* **Batch Size**: Control processing chunks
## Configuration
Customize indexing behavior to match your workflow:
### Metadata Format
Choose how to parse task metadata:
* **Tasks**: Emoji format (`🛫 2025-01-01`, `⏫`, `🔁 every week`)
* **Dataview**: Inline fields (`[due:: 2025-01-01]`, `[priority:: high]`)
The system automatically falls back to the other format when needed.
### Daily Notes Integration
Automatically assign dates to tasks in daily notes:
* **Enable**: Extract dates from daily note file paths
* **Path**: Daily notes folder (e.g., `dailies`, `journal/daily`)
* **Format**: Date pattern in filenames (`yyyy-MM-dd`, `dd-MM-yyyy`)
* **Assign As**: Target field for extracted date (`due`, `start`, `scheduled`)
### Heading Filters
Control which tasks are indexed based on their headings:
* **Ignore Under**: Exclude tasks under specific headings (`## Archive`, `## Done`)
* **Focus On**: Only index tasks under specified headings (`## Project`, `## Inbox`)
Enter headings separated by commas. Focus takes priority over ignore.
file: ./content/docs/task-view/inline-editor.mdx
meta: {
"title": "Inline Editor"
}
import { VersionCallout } from "@/components/VersionCallout";
The Inline Editor is a powerful component that enables direct editing of task content and metadata within the task view. It provides seamless in-place editing capabilities without requiring separate sidebar or dialogs.
## Overview
The Inline Editor component allows users to edit task properties directly within the task list view. It supports both content editing and metadata field editing with intelligent auto-completion.
## Features
### Content Editing
The editor supports two modes for editing task content (Currently, Task Genius is not support Textarea editor mode):
* **Embedded Markdown Editor**: Full-featured markdown editor with syntax highlighting and live preview.
* ~~**Textarea Editor**: Lightweight text input with auto-resize functionality~~
### Metadata Editing
Supports editing of all task metadata fields:
* **Project**: Project assignment with autocomplete
* **Tags**: Tag management with comma-separated input and autocomplete
* **Context**: Context assignment with autocomplete
* **Dates**: Due date, start date, and scheduled date with date picker
* **Priority**: Priority levels (1-5) with dropdown selection
* **Recurrence**: Recurrence rules with text input
Using `Enter` to save and exit the editor.
## Keyboard Shortcuts
| Shortcut | Action |
| -------- | ---------------------------------------------------------------------------------- |
| `Enter` | Save and exit (content: embedded editor handles this, metadata: saves immediately) |
| `Escape` | Cancel editing and revert changes |
## Event Handling
### Content Events
* **Blur**: Automatically saves and exits content editing
* **Keydown**: Handles Enter/Escape key combinations
### Metadata Events
* **Blur**: Saves and exits metadata editing
* **Change**: Immediate save for select elements (priority)
## Auto-completion
The editor provides intelligent auto-completion for:
* **Projects**: Suggests existing project names from the vault
* **Tags**: Suggests existing tags with # prefix support
* **Contexts**: Suggests existing context values
## Settings
You can configure the inline editor in the Task Genius settings.
file: ./content/docs/task-view/list-item.mdx
meta: {
"title": "List Item"
}
import { VersionCallout } from "@/components/VersionCallout";
import { ListItem } from "@/components/ListItem";
List item is the basic unit of the task view. It is a single task that is displayed in the list view.
## Task List Item
This component is responsible for rendering a single task item within the task list view. It displays task details like content, dates, priority, tags, and handles user interactions.
Contains the following information:
* Task checkbox
* Task content
* Task dates
* Task priority
* Task tags
* Task project
### Rendering Principles
* **Task Checkbox**: Displays the task's completion status (`Status`). Clicking it triggers the completion logic. The entire item gets a `task-completed` class if the task is marked as done.
* **Task Content**: Renders the `Original Markdown` using Task Genius's Markdown renderer that extends Obsidian's Markdown renderer, preserving formatting and links.
* **Task Dates**:
* **Incomplete Tasks**: Shows Due, Scheduled, and Start dates if available. Due dates are styled differently if they are overdue, due today, or due tomorrow. Recurrence rules are also shown if present.
* **Completed Tasks**: Shows Completion and Created dates if available.
* **Relative Time**: Dates can be displayed using relative time (e.g., "in 2 days", "yesterday") based on the `Use Relative Time` setting. (Available in Task Genius [8.6.0+](/changelog/2025-05-04-desktop-v8.6.0))
* **Task Priority**: If `Priority` is set (1, 2, or 3), an indicator (eg, `!`, `!!`, `!!!`) is displayed, styled with a corresponding CSS class (`priority-1`, `priority-2`, `priority-3`).
* **Task Tags**: If `Tags` exist, each tag is displayed, prefixed with `#`.
* **Task Project**: If `Project` exists and the current view is not the project view (`viewMode !== 'projects'`), the project name (typically the last part of the path) is displayed.
file: ./content/docs/task-view/matrix-view.mdx
meta: {
"title": "Matrix View (Eisenhower Matrix)"
}
import { VersionCallout } from "@/components/VersionCallout";
import {
Filter,
Grid3X3,
MousePointerClick,
ArrowUpDown,
Eye,
EyeOff,
PlusIcon,
XIcon,
} from "lucide-react";
The Matrix View provides an Eisenhower Matrix (Four Quadrants) interface for organizing and managing your tasks based on urgency and importance. This view helps you prioritize tasks effectively by categorizing them into four distinct quadrants.
## Open the Matrix View
1. Open the [Task Genius View](/docs/task-view).
2. Select the `Matrix` navigation item in the left sidebar.
3. You will see your tasks organized into four quadrants in the right panel.
## Usage
The Matrix View displays tasks in a 2x2 grid based on the Eisenhower Matrix methodology:
### The Four Quadrants
* **🔺 Urgent & Important (Do First):** Crisis & emergencies that require immediate attention
* **⏫ Not Urgent & Important (Schedule):** Planning & development activities that are important but not time-sensitive
* **🔼 Urgent & Not Important (Delegate):** Interruptions & distractions that are urgent but not crucial
* **🔽 Not Urgent & Not Important (Eliminate):** Time wasters that should be minimized or eliminated
### Task Categorization
Tasks are automatically categorized into quadrants based on:
#### Tag-Based Classification (Default)
* **Urgency:** Determined by `#urgent` tag, high priority emojis (🔺⏫), or due dates within the configured threshold
* **Importance:** Determined by `#important` tag, priority emojis (🔺⏫🔼), or important keywords (goal, project, milestone, strategic)
#### Priority-Based Classification (Optional)
* **Urgency:** Tasks with priority level ≥ 4 (configurable threshold)
* **Importance:** Tasks with priority level ≥ 3 (configurable threshold)
### Interactions
#### Drag and Drop
* **Move tasks between quadrants** by clicking and dragging them
* Dropping a task into a new quadrant automatically updates the task's tags and priority
* Visual feedback shows successful task updates
#### Task Actions
* **Click task:** Selects the task and opens its details in the sidebar
* **Right-click task:** Opens a context menu with relevant actions
* **Status updates:** Tasks can be marked as complete directly from the matrix
#### Sorting
* **Sort dropdown:** Located in the header, allows sorting tasks within each quadrant
* Available sort options:
* Priority (High to Low / Low to High)
* Due Date (Earliest First / Latest First)
* Created Date (Newest First / Oldest First)
### Filtering
The Matrix View includes advanced filtering capabilities:
1. Click the **Add filter** button to open the filter dropdown
2. Select a **category** to filter by (e.g., `Tag`, `Priority`, `Project`, `Context`)
3. Choose the specific **value** within that category
4. Active filters are displayed as removable "pills" above the matrix (remove via )
5. Multiple filters can be applied - tasks must match **all** active filters to be displayed
6. Click **Clear all** to remove all active filters at once
Available filter categories include:
* Status
* Tag
* Project
* Context
* Priority
* Completed (Yes/No)
* File Path
### Column Management
* **Hide empty columns:** / Option to hide quadrants that contain no tasks
* **Dynamic updates:** Quadrants automatically update when tasks are added, removed, or modified
### Task Updates
When moving tasks between quadrants:
1. **Automatic tag updates:** Relevant `#urgent` and `#important` tags are added or removed
2. **Priority adjustment:** Task priority is updated based on the target quadrant:
* Urgent & Important: Priority 5 (Highest)
* Not Urgent & Important: Priority 4 (High)
* Urgent & Not Important: Priority 3 (Medium)
* Not Urgent & Not Important: Priority 2 (Low)
3. **Metadata tracking:** Quadrant information is stored in task metadata for consistency
4. **Visual feedback:** Success or error messages appear after task updates
### Performance Optimizations
* **Selective refresh:** Only updates quadrants with changed tasks
* **Mobile optimization:** Enhanced touch interactions with appropriate delays and thresholds
* **Efficient rendering:** Virtual scrolling and optimized DOM updates for large task lists
## Configuration
### Quadrant Settings
The Matrix View can be configured through view-specific settings:
* **Urgent Tag:** Custom tag for identifying urgent tasks (default: `#urgent`)
* **Important Tag:** Custom tag for identifying important tasks (default: `#important`)
* **Urgent Threshold Days:** Number of days before due date to consider a task urgent (default: 3)
* **Classification Mode:** Choose between tag-based or priority-based classification
* **Priority Thresholds:** Configure priority levels for urgent/important classification
### Advanced Options
* **Use Priority for Classification:** Switch from tag-based to priority-based categorization
* **Urgent Priority Threshold:** Priority level threshold for urgent tasks (default: 4)
* **Important Priority Threshold:** Priority level threshold for important tasks (default: 3)
* **Hide Empty Columns:** Automatically hide quadrants without tasks
## Best Practices
1. **Focus on incomplete tasks:** Filter out completed tasks to simplify the view
2. **Consistent Tagging:** Use `#urgent` and `#important` tags consistently across your tasks
3. **Regular Review:** Regularly review and move tasks between quadrants as priorities change
4. **Focus on Quadrant 2:** Spend more time on "Not Urgent & Important" tasks for long-term success
5. **Minimize Quadrant 4:** Eliminate or reduce "Not Urgent & Not Important" tasks
6. **Due Date Management:** Set appropriate due dates to help with automatic urgency classification
## Settings
You can read more about view settings on the [Basic view settings](/docs/task-view/basic-view-settings#basic-settings) page.
### Specific Settings
* **Hide Empty Columns:** Automatically hide quadrants that contain no tasks
* **Sort Option:** Default sorting method for tasks within each quadrant
* **Classification Mode:** Choose between tag-based or priority-based task categorization
file: ./content/docs/task-view/plan-view.mdx
meta: {
"title": "Plan View (Gantt)"
}
import { VersionCallout } from "@/components/VersionCallout";
import {
Filter,
GanttChartSquare,
ZoomIn,
ZoomOut,
MousePointerClick,
CalendarSearch,
Pin,
PinOff,
} from "lucide-react";
The Plan View provides a timeline-based Gantt chart interface for visualizing and managing your tasks and their dependencies. It allows you to view task durations, start/end dates, and navigate through the timeline.
## Open the Plan View
1. Open the [Task Genius View](/docs/task-view).
2. Select the `Plan` navigation item in the left sidebar.
3. You will see the tasks displayed as a Gantt chart in the right panel.
## Usage
The Plan View displays tasks based on a horizontal timeline:
* **Timeline:** Shows dates, automatically adjusting the display granularity (Day, Week, Month, Year) based on the zoom level.
* **Task Bars:** Represent tasks with both start and end dates.
* **Milestones:** Represent tasks with only a due date or identical start and end dates.
* **Filter Area:** Located at the top of the view, allowing you to filter displayed tasks based on various criteria. Read more about the filter in the [Advanced Filter](/docs/task-view/filter/advanced-filter) page.
### Task Display
Tasks are processed and displayed on the Gantt chart based on their date properties:
* **Date Mapping:**
* The **start** position of a task bar is based on `Start date` or `Scheduled date`.
* The **end** position of a task bar is based on `Due date`.
* If only `Due date` is present, or if `Start date` is the same as `Due date`, the task is displayed as a **Milestone** (diamond shape).
* Tasks without valid date information will not be displayed on the Gantt chart.
* **Task Sorting:** Tasks are sorted by default based on their start date (or due date).
* **Task Labels:** Task content (supports Markdown rendering) is displayed next to the task bar or milestone.
### Interactions
You can interact with the Gantt chart in several ways:
* **Click Task Bar/Milestone:** Selects the corresponding task and opens its details in the sidebar.
* **Right-click Task Bar/Milestone:** Opens a context menu with relevant actions for that task.
* **Click Offscreen Indicator:** / If a task is outside the currently visible area, indicators appear on the left/right edges of the view. Clicking an indicator scrolls the view to that task's position.
* **Scroll to Date:** Use the "Scroll to Date" button in the filter area to quickly navigate to a specific date.
### Navigation & Zoom
* **Horizontal Scrolling:** Use the scrollbar or touchpad/mouse wheel to scroll the timeline horizontally to view tasks in different time periods.
* **Zooming:** / Hold the `Ctrl` key and scroll the mouse wheel to zoom the timeline.
* Zooming in increases the timeline granularity (e.g., from Month view to Week or Day view).
* Zooming out decreases the timeline granularity (e.g., from Day view to Week, Month, or Year view).
* Zooming centers on the time point under the mouse cursor.
## Settings
You can read more about view settings on the [Basic view settings](/docs/task-view/basic-view-settings#basic-settings) page.
file: ./content/docs/task-view/project-view.mdx
meta: {
"title": "Project View"
}
import { VersionCallout } from "@/components/VersionCallout";
Project view is a view that allows you to view your tasks by their project. Inherits from the [Two Column View](/docs/task-view/custom-view/two-column-view).
## Open the project view
1. Open the [Task Genius View](/docs/task-view).
2. Select `Project` nav item in the left sidebar.
3. You will see the tasks grouped by project in the right panel.
## Usage
1. Add `#project/xx` to your tasks you want to group by project.
2. Open the [Task Genius View](/docs/task-view).
3. Select `Project` nav item in the left sidebar.
4. You will see the tasks grouped by project in the right panel.
### Multi-select
Read more about the multi-select in the [Two Column View](/docs/task-view/custom-view/two-column-view#multi-select) page.
## Settings
You can read more about the settings in the [Basic view settings](/docs/task-view/basic-view-settings#basic-settings) page.
file: ./content/docs/task-view/review-view.mdx
meta: {
"title": "Review View"
}
import { VersionCallout } from "@/components/VersionCallout";
import { FolderCheckIcon, FolderIcon, SidebarIcon } from "lucide-react";
The Review View helps you systematically review tasks on a project-by-project basis according to a defined schedule. It allows you to configure review frequencies for each project and keeps track of when each project was last reviewed.
## Open the review view
1. Open the [Task Genius View](/docs/task-view).
2. Select `Review` nav item in the left sidebar.
3. You will see the tasks grouped by project in the right panel.
## Usage
The Review View features a two-column layout:
1. **Project Sidebar (Left):** Lists all projects containing tasks.
2. **Task Review Area (Right):** Displays tasks for the selected project and provides review controls.
On mobile devices, the Project Sidebar is initially hidden and can be toggled using the .
### Project Sidebar
The sidebar lists your projects, grouped into two sections:
* **Configured for Review:** Projects for which you have set a review schedule. These projects have a . Projects due for review according to their schedule are highlighted.
* **Not Configured:** Projects without a review schedule. These projects have a .
Clicking on a project name in the sidebar selects it for review in the right-hand area.
### Task Review Area
When you select a project, this area displays its details and tasks.
#### Header
The header shows:
* **Project Title:** The name of the selected project.
* **Review Information:**
* If configured: The review frequency (e.g., "Review every weekly") and the date it was last reviewed (e.g., "Last reviewed: 1/1/2024"). Clicking the frequency text opens the configuration modal.
* If not configured: A message indicating "No review schedule configured for this project".
* **Action Button:**
* If configured: A "**Mark as Reviewed**" button.
* If not configured: A "**Configure Review Schedule**" button.
#### Configuring the Review Schedule
You can configure the review schedule for a project by:
1. Clicking the "**Configure Review Schedule**" button (for unconfigured projects).
2. Clicking the frequency text in the header (for already configured projects).
This opens a modal where you can set:
* **Review Frequency:** Choose from predefined options (daily, weekly, every 2 weeks, monthly, quarterly, every 6 months, yearly) or select "Custom..." to define your own (e.g., "every 10 days").
* The modal also displays when the project was last reviewed.
#### Task List & Filtering
By default, when you select a project that has been reviewed before, the task list is filtered to show only:
* Tasks created *after* the last review date.
* Tasks that existed during the last review but were *not completed* then and are *still not completed*.
* Tasks that were *not part of the last review* (e.g., older tasks added to the project later).
Completed tasks from the previous review session are hidden by default to focus your attention on what's new or still pending.
* A message like "Showing new and in-progress tasks only. X completed tasks from previous reviews are hidden." will appear below the header.
* You can click "**Show all tasks**" to disable this filter and view every task in the project, including previously reviewed and completed ones.
* Click "**Show only new and in-progress tasks**" to re-enable the default filter.
If a project has never been reviewed, all its tasks are shown initially.
#### Marking a Project as Reviewed
Clicking the "**Mark as Reviewed**" button performs two actions:
1. Updates the "Last Reviewed" timestamp for the project to the current date and time.
2. Records the IDs of all tasks currently associated with the project (regardless of whether they are visible due to filtering). This list is used for filtering in subsequent reviews.
After marking as reviewed, the task list will refresh based on the default filtering logic (hiding completed tasks from the review you just finished).
## Settings
You can read more about the settings in the [Basic view settings](/docs/task-view/basic-view-settings#basic-settings) page.
file: ./content/docs/task-view/status-view.mdx
meta: {
"title": "Status View (Kanban)"
}
import { VersionCallout } from "@/components/VersionCallout";
import {
FolderCheckIcon,
FolderIcon,
SidebarIcon,
FilterIcon,
PlusIcon,
XIcon,
} from "lucide-react";
The Status View displays your tasks in a Kanban board format, organized into columns based on their status. This allows for a visual workflow management where you can easily track task progress.
## Open the status view
1. Open the [Task Genius View](/docs/task-view).
2. Select `Status` nav item in the left sidebar.
3. You will see the tasks grouped by status in the right panel.
## Usage
### Columns
* Each column represents a specific task status defined in your settings (e.g., "Todo", "In Progress", "Done"). Based on the status of task itself.
* The order of the columns follows the `taskStatusCycle` setting, typically grouping standard statuses, then custom statuses, and finally completed statuses (marked with 'x').
* Tasks within each column are sorted primarily by priority (highest first) and secondarily by due date (earliest first).
### Drag and Drop
* You can move tasks between columns by clicking and dragging them.
* Dropping a task into a new column will update the task's status to match the status of that column.
* Visual indicators appear during dragging to show where the task will be placed.
### Filtering
Above the Kanban board, filter controls allow you to narrow down the displayed tasks.
1. Click the **Add filter** button to open a dropdown.
2. Select a **category** to filter by (e.g., `Tag`, `Priority`, `Project`).
3. Select the specific **value** within that category (e.g., `#urgent`, `🔺 Highest`, `MyProject`).
4. Available filter categories and options are dynamically generated based on the tasks currently loaded.
5. Active filters are displayed as removable "pills" above the board (via ).
6. You can add multiple filters. Tasks must match **all** active filters to be displayed.
7. Click the **Clear all** button to remove all active filters at once.
8. The filterable criteria include:
* Status
* Tag
* Project
* Context
* Priority (often represented by icons like 🔺, ⏫, 🔼)
* Completed (Yes/No)
* File Path
9. Applying, adding, or removing filters dynamically updates the Kanban board.
### Group by
You can group tasks by status, tag, project, context, priority, completed, and file path.
You can also group tasks by custom status.
### Sort by
You can sort tasks by status, tag, project, context, priority, completed, and file path.
### Hide empty columns
You can hide empty columns by enable `Hide empty columns` in the settings.
## Settings
You can read more about the settings in the [Basic view settings](/docs/task-view/basic-view-settings#basic-settings) page.
### Specific settings
`Show Checkbox`: When enabled, displays a checkbox for each task in the kanban view, allowing you to mark tasks as complete directly from the board.
file: ./content/docs/task-view/table-view.mdx
meta: {
"title": "Table View"
}
import { VersionCallout } from "@/components/VersionCallout";
import { ListIcon, GitBranchIcon, ArrowUpDownIcon } from "lucide-react";
The Table View provides a comprehensive tabular interface for viewing, editing, and managing your tasks in Task Genius. It offers powerful features like sorting, filtering, inline editing, and both flat and hierarchical tree views.
## Open the Table View
1. Open the [Task Genius View](/docs/task-view).
2. Select the `Table` nav item in the left sidebar.
3. The Table View will load, displaying your tasks in a structured table format.
## Usage
The Table View presents your tasks in a spreadsheet-like interface with powerful data management capabilities.
The view consists of:
1. **Table Header Bar:** Contains controls for view mode toggle (flat/tree), and column visibility settings.
2. **Table Headers:** Column headers that support sorting (click to sort) and resizing (drag column borders).
3. **Table Body:** The main area displaying task data in rows and columns.
4. **Selection Controls:** Support for single and multi-row selection using click and Ctrl/Cmd+click.
### Available Columns
The table supports various column types that can be shown or hidden:
* **Status:** Task completion status with visual indicators
* **Content:** Task description and details
* **Priority:** Task priority level (High, Medium, Low)
* **Due Date:** When the task is due
* **Start Date:** When the task should start
* **Scheduled Date:** When the task is scheduled
* **Created Date:** When the task was created
* **Completed Date:** When the task was completed
* **Tags:** Associated task tags
* **Project:** Project assignment
* **Context:** Task context
* **Recurrence:** Recurring task settings
* **Estimated Time:** Time estimated to complete
* **Actual Time:** Time actually spent
* **File:** Source file location
### View Modes
#### Flat View
Displays all tasks in a simple list format with each task on its own row. You can click on button to toggle the view mode.
#### Tree View
Organizes tasks hierarchically, showing parent-child relationships and allowing you to expand/collapse task groups. You can click on button to toggle the view mode.
### Sorting and Filtering
* **Click column headers** or button to sort by that column. You can click again to reverse sort order.
* **Visual sort indicators** show current sort field and direction.
* Tasks are automatically filtered and sorted based on your current criteria
### Inline Editing
When inline editing is enabled:
* **Double-click any cell** to start editing
* **Press Enter** to save changes
* **Press Escape** to cancel editing
* **Date fields** show date pickers for easy selection
* **Priority fields** provide dropdown selection
* **Status fields** provide dropdown selection
* **Tag fields** support comma-separated values
### Row Selection
* **Single-click** to select a row
* **Ctrl/Cmd+click** for multi-selection
* **Right-click** for context menu options
### Virtual Scrolling
For large task lists, the table uses virtual scrolling to maintain performance by only rendering visible rows.
### Column Management
Use the column visibility controls in the header bar to:
* **Show/hide columns** based on your needs
* **Resize columns** by dragging column borders
* Settings are automatically saved
### Keyboard Shortcuts
* **Escape:** Cancel current cell editing
* **Tab:** Move to next cell
* **Shift+Tab:** Move to previous cell
* **Arrow keys:** Navigate between cells (when editing)
* **Enter:** Confirm cell editing
## Settings
You can read more about the settings in the [Basic view settings](/docs/task-view/basic-view-settings#basic-settings) page.
file: ./content/docs/task-view/tag-view.mdx
meta: {
"title": "Tag View"
}
import { VersionCallout } from "@/components/VersionCallout";
Tag view is a view that allows you to view your tasks by their tag. Inherits from the [Two Column View](/docs/task-view/custom-view/two-column-view).
## Open the tag view
1. Open the [Task Genius View](/docs/task-view).
2. Select `Tag` nav item in the left sidebar.
3. You will see the tasks grouped by tag in the right panel.
## Usage
1. Add `#tag` to your tasks you want to group by tag.
2. Open the [Task Genius View](/docs/task-view).
3. Select `Tag` nav item in the left sidebar.
4. You will see the tasks grouped by tag in the right panel.
### Multi-select
Read more about the multi-select in the [Two Column View](/docs/task-view/custom-view/two-column-view#multi-select) page.
## Settings
You can read more about the settings in the [Basic view settings](/docs/task-view/basic-view-settings#basic-settings) page.
file: ./content/docs/task-view/timeline-sidebar-view.mdx
meta: {
"title": "Timeline Sidebar View"
}
import { VersionCallout } from "@/components/VersionCallout";
import {
Calendar,
CalendarClock,
RefreshCw,
Focus,
ExternalLink,
Clock,
CheckSquare,
Plus,
MoreHorizontal,
} from "lucide-react";
The Timeline Sidebar View provides a chronological timeline interface for viewing and managing your tasks based on their dates. It displays tasks in a time-ordered format, making it easy to see what's happening when and track your schedule at a glance.
## Open the Timeline Sidebar View
Open Timeline Settings
The Timeline Sidebar View can be opened as a dedicated sidebar panel:
1. Use the command palette (`Ctrl/Cmd + P`) and search for "Timeline"
2. Or use the ribbon icon if available
3. The timeline will appear as a sidebar panel showing your tasks chronologically
## Usage
The Timeline Sidebar View presents your tasks in a chronological timeline format with the following components:
### Timeline Display
* **Date Groups:** Tasks are grouped by date (Today, Yesterday, Tomorrow, or specific dates)
* **Chronological Order:** Events are sorted by time, with the most recent events first
* **Time Stamps:** Each event shows the specific time when it's scheduled or due
* **Visual Indicators:** Today's events are highlighted with special styling
### Event Types
The timeline displays various task-related events:
* **Due Date Events:** Tasks with due dates
* **Scheduled Events:** Tasks with scheduled dates
* **Start Date Events:** Tasks with start dates
* **Completion Events:** Tasks with completion dates (if enabled in settings)
### Header Controls
The timeline header provides several navigation and control options:
#### Navigation Controls
* **Today Button:** Quickly scroll to today's events
* **Refresh Button:** Manually refresh the timeline data
* **Focus Mode:** Toggle focus mode to show only today's events
### Task Interactions
#### Task Management
* **Task Checkboxes:** Click to mark tasks as complete/incomplete
* **Task Navigation:** Click on any task to navigate to its location in your vault
* **Go to Task:** Use the action button to jump to the task's file
#### Visual States
* **Completed Tasks:** Visually distinguished with different styling
* **Today's Events:** Highlighted with special "is-today" styling
* **Task Status:** Shows current task status and allows status changes
### Quick Capture
The timeline includes a built-in quick capture feature at the bottom:
#### Quick Input Area
* **Markdown Editor:** Built-in editor with markdown support
* **Placeholder Text:** "What do you want to do today?"
* **Target Information:** Shows where captured tasks will be saved
#### Capture Actions
* **Quick Capture:** Save the task using current quick capture settings
* **More Options:** Open the full Quick Capture modal with advanced options
#### Keyboard Shortcuts
* **Ctrl/Cmd + Enter:** Submit the quick capture
* **Escape:** Clear the input field
* **Auto-focus:** Input field automatically receives focus after capture
### Date Grouping
Tasks are intelligently grouped by date with relative time indicators:
* **Today:** Current day's events with "Today" label
* **Yesterday/Tomorrow:** Recent days with relative labels
* **Specific Dates:** Other dates shown in "MMM DD, YYYY" format
* **Relative Time:** Shows "X days ago" or "in X days" for context
## Features
### Smart Filtering
The timeline automatically filters content based on settings:
* **Completed Tasks:** Option to show/hide completed tasks
* **Date-based Display:** Only shows tasks with relevant date information
### Auto-scrolling
* **Today Focus:** Automatically scrolls to today's events when opened
* **Smooth Scrolling:** Animated scrolling for better user experience
* **Scroll Memory:** Maintains scroll position during updates
## Configuration
### Timeline Settings
The timeline behavior can be configured through plugin settings:
* **Show Completed Tasks:** Choose whether to display completed tasks in the timeline
* **Date Range:** Configure how far back/forward to show events
* **Auto-scroll:** Enable/disable automatic scrolling to today
### Quick Capture Settings
The integrated quick capture uses the global quick capture settings:
* **Target Type:** Daily notes or specific file
* **Target File:** Specific file for capturing tasks
* **Target Heading:** Specific heading within the target file
* **Daily Note Settings:** Format and folder for daily notes
### Display Options
* **Time Format:** 24-hour or 12-hour time display
* **Date Format:** Customize date display format
* **Relative Time:** Show relative time indicators
* **Visual Themes:** Timeline appearance customization
## Best Practices
1. **Regular Review:** Use the timeline for daily and weekly planning reviews
2. **Quick Capture:** Leverage the integrated quick capture for rapid task entry
3. **Date Management:** Set appropriate due dates and scheduled dates for better timeline visibility
4. **Today Focus:** Use the "Today" button to quickly focus on current priorities
5. **Status Updates:** Update task status directly from the timeline for efficiency
## Keyboard Shortcuts
* **Ctrl/Cmd + Enter:** Submit quick capture input
* **Escape:** Clear quick capture input
* **Click:** Navigate to task location
* **Checkbox Click:** Toggle task completion status
## Integration
### File Types Supported
* **Markdown Files:** Full support with proper line navigation
* **Canvas Files:** Direct opening of canvas files
* **Mixed Content:** Handles both markdown and canvas task sources
### External Integrations
* **ICS Calendar:** Filters ICS badge events appropriately
* **Daily Notes:** Seamless integration with daily note workflows
* **Task Manager:** Real-time synchronization with the task management system
## Settings
You can read more about view settings on the [Basic view settings](/docs/task-view/basic-view-settings#basic-settings) page.
### Specific Settings
* **Enable Timeline Sidebar:** Control whether the timeline sidebar feature is enabled
* **Auto Open on Startup:** Automatically open the timeline sidebar when the plugin starts
* **Show Completed Tasks:** Control visibility of completed tasks in the timeline
* **Focus Mode by Default:** Start the timeline in focus mode (showing only today's events)
* **Max Events to Show:** Limit the maximum number of events displayed in the timeline
file: ./content/docs/mcp-integration/clients/claude-code.mdx
meta: {
"title": "Claude Code Configuration",
"description": "Setup guide for Claude Code CLI with Task Genius MCP"
}
This guide shows you how to configure Claude Code to work with your Task Genius tasks directly from the command line.
## Prerequisites
* Claude Code installed ([installation guide](https://claude.ai/code))
* Task Genius MCP server enabled in Obsidian
* Your authentication credentials from Task Genius settings
## Quick Setup
Add Task Genius to Claude Code with one command:
```bash
claude mcp add --transport http obsidian-tasks http://127.0.0.1:7777/mcp \
--header "Authorization: Bearer YOUR_TOKEN+YOUR_APP_ID"
```
Get Your Credentials from Task Genius Settings
That's it! You can now manage your Obsidian tasks from Claude Code.
## Verify Your Setup
After adding Task Genius, test the connection:
```bash
claude mcp test obsidian-tasks
```
You should see:
```
✅ Connection successful
✅ Authentication valid
✅ 25+ tools available
```
## Basic Commands
```bash
# View your Task Genius configuration
claude mcp show obsidian-tasks
# Update credentials if needed
claude mcp update obsidian-tasks \
--header "Authorization: Bearer NEW_TOKEN+NEW_APP_ID"
# Remove and re-add if having issues
claude mcp remove obsidian-tasks
```
## Multiple Vaults
If you have multiple Obsidian vaults with Task Genius:
```bash
# Add personal vault
claude mcp add --transport http personal-vault \
http://127.0.0.1:7777/mcp \
--header "Authorization: Bearer TOKEN1+APPID1"
# Add work vault (different port)
claude mcp add --transport http work-vault \
http://127.0.0.1:7778/mcp \
--header "Authorization: Bearer TOKEN2+APPID2"
```
## Using Task Genius with Claude Code
### Interactive Session
Start Claude Code connected to your tasks:
```bash
claude --use obsidian-tasks
```
### Common Task Operations
```bash
# Today's tasks
claude --use obsidian-tasks "What tasks do I have today?"
# Create a new task
claude --use obsidian-tasks "Create task: Review quarterly report, priority 4, due tomorrow"
# Mark tasks complete
claude --use obsidian-tasks "Mark task 'Review quarterly report' as complete"
# Query by project
claude --use obsidian-tasks "Show all tasks for project ClientPresentation"
# Update priorities
claude --use obsidian-tasks "Set all overdue tasks to priority 5"
# Quick capture
claude --use obsidian-tasks "Add to inbox: Call John about proposal"
```
### Task Genius Specific Features
```bash
# Work with Task Genius projects
claude --use obsidian-tasks "List all my active projects with task counts"
# Use Task Genius contexts
claude --use obsidian-tasks "Show tasks in @office context"
# Batch operations
claude --use obsidian-tasks "Postpone all tasks tagged #waiting to next week"
# Daily note integration
claude --use obsidian-tasks "Add task to today's daily note: Team standup at 10am"
```
## Productivity Tips
### Shell Aliases
Add these to your `~/.bashrc` or `~/.zshrc` for quick access:
```bash
# Quick task operations
alias task="claude --use obsidian-tasks"
alias today="claude --use obsidian-tasks 'Show today\'s tasks'"
alias inbox="claude --use obsidian-tasks 'Show inbox tasks'"
# Task creation function
new_task() {
claude --use obsidian-tasks "Create task: $*"
}
# Daily review
alias review="claude --use obsidian-tasks 'Show overdue tasks and today\'s priorities'"
```
Usage:
```bash
task "What's due this week?"
new_task Call client about proposal
today
review
```
### Environment Variables
Store credentials securely:
```bash
# Add to ~/.bashrc or ~/.zshrc
export OBSIDIAN_TOKEN="your_token"
export OBSIDIAN_APP_ID="your_app_id"
# Use in configuration
claude mcp add --transport http obsidian-tasks \
http://127.0.0.1:7777/mcp \
--header "Authorization: Bearer ${OBSIDIAN_TOKEN}+${OBSIDIAN_APP_ID}"
```
## Troubleshooting
### Connection Failed
1. **Check Task Genius MCP is enabled:**
* Open Obsidian → Task Genius Settings → MCP Integration
* Ensure server is running (green status)
2. **Verify port availability:**
```bash
curl http://127.0.0.1:7777/health
```
3. **Test connection:**
```bash
claude mcp test obsidian-tasks --verbose
```
### Authentication Issues
1. **Get fresh credentials:**
Open MCP Settings
2. **Update configuration:**
```bash
claude mcp update obsidian-tasks \
--header "Authorization: Bearer NEW_TOKEN+NEW_APP_ID"
```
### Common Issues
* **"Connection refused"**: Task Genius MCP server not running
* **"401 Unauthorized"**: Invalid token or App ID
* **"No tools available"**: Server running but not properly configured
* **Timeout errors**: Large vault - increase timeout with `--timeout 60000`
## Quick Reference
### Essential Commands
```bash
# Setup
claude mcp add --transport http obsidian-tasks [URL] --header [AUTH]
# Management
claude mcp list # List all servers
claude mcp show obsidian-tasks # View configuration
claude mcp test obsidian-tasks # Test connection
claude mcp remove obsidian-tasks # Remove server
# Usage
claude --use obsidian-tasks # Interactive mode
claude --use obsidian-tasks "..." # Single command
```
### Task Genius MCP Tools
Available operations through Claude Code:
* Query tasks (by date, project, context, priority)
* Create tasks (with due dates, priorities, tags)
* Update task status (complete, postpone, delete)
* Batch operations (update multiple tasks)
* Daily note integration
* Project and context management
## Best Practices
1. **Use aliases** for frequent operations (see Productivity Tips)
2. **Store credentials** in environment variables, not in commands
3. **Be specific** in queries to get better results
4. **Use projects and contexts** to organize tasks effectively
5. **Batch similar operations** for better performance
## Next Steps
* Explore [Task Genius use cases](/docs/mcp-integration/use-cases) for workflow ideas
* Check the [API reference](/docs/mcp-integration/api-reference) for all available operations
* See [troubleshooting guide](/docs/mcp-integration/troubleshooting) if you encounter issues
**Pro Tip**: Start with simple queries like "Show today's tasks" to get familiar with Task Genius through Claude Code.
file: ./content/docs/mcp-integration/clients/claude-desktop.mdx
meta: {
"title": "Claude Desktop Configuration",
"description": "Setup guide for Claude Desktop with Task Genius MCP"
}
This guide shows you how to configure Claude Desktop to work with your Task Genius tasks.
## Prerequisites
* Claude Desktop installed
* Task Genius MCP server enabled in Obsidian
* Your authentication credentials from Task Genius settings
## Configuration Steps
### Step 1: Locate Configuration File
Find your Claude Desktop configuration file:
**macOS:**
```bash
~/Library/Application Support/Claude/claude_desktop_config.json
```
**Windows:**
```bash
%APPDATA%\Claude\claude_desktop_config.json
```
**Linux:**
```bash
~/.config/Claude/claude_desktop_config.json
```
### Step 2: Create or Edit Configuration
If the file doesn't exist, create it with this structure:
```json
{
"mcpServers": {
"obsidian-tasks": {
"command": "curl",
"args": [
"-X", "POST",
"-H", "Authorization: Bearer YOUR_TOKEN+YOUR_APP_ID",
"-H", "Content-Type: application/json",
"--data-raw", "@-",
"http://127.0.0.1:7777/mcp"
]
}
}
}
```
### Step 3: Get Your Credentials
Open MCP Settings
Copy:
1. Authentication Token
2. App ID
3. Server URL (if using custom port)
### Step 4: Update Configuration
Replace placeholders with your actual values:
* `YOUR_TOKEN` → Your authentication token
* `YOUR_APP_ID` → Your vault's App ID
### Step 5: Restart Claude Desktop
1. Completely quit Claude Desktop (not just close window)
2. Restart the application
3. The MCP server should connect automatically
## Advanced Configuration
### Multiple Vaults
Connect to multiple Obsidian vaults:
```json
{
"mcpServers": {
"personal-tasks": {
"command": "curl",
"args": [
"-X", "POST",
"-H", "Authorization: Bearer TOKEN1+APPID1",
"-H", "Content-Type: application/json",
"--data-raw", "@-",
"http://127.0.0.1:7777/mcp"
]
},
"work-tasks": {
"command": "curl",
"args": [
"-X", "POST",
"-H", "Authorization: Bearer TOKEN2+APPID2",
"-H", "Content-Type: application/json",
"--data-raw", "@-",
"http://127.0.0.1:7778/mcp"
]
}
}
}
```
### Remote Vault Access
For accessing a vault on another machine:
```json
{
"mcpServers": {
"remote-vault": {
"command": "curl",
"args": [
"-X", "POST",
"-H", "Authorization: Bearer YOUR_TOKEN+YOUR_APP_ID",
"-H", "Content-Type: application/json",
"--data-raw", "@-",
"http://192.168.1.100:7777/mcp"
]
}
}
}
```
## Using Task Genius in Claude Desktop
Once configured, interact naturally with your tasks:
### Common Operations
```text
"Show today's high-priority tasks"
"Create task: Review quarterly report, priority 4, due tomorrow"
"Mark 'Review quarterly report' as complete"
"What tasks are overdue?"
"Show all tasks for project ClientPresentation"
"List tasks in @office context"
"Add task to today's daily note"
```
### Daily Workflows
```text
"Help me plan my day based on my tasks"
"What should I focus on this morning?"
"Show me overdue tasks that need attention"
"What did I complete yesterday?"
"Create a summary of this week's progress"
```
## Key Features
* **Context Awareness**: Claude remembers what you're discussing
* **Batch Operations**: Update multiple tasks at once
* **Smart Suggestions**: Get recommendations based on your task patterns
* **Natural Language**: No need to learn specific commands
## Troubleshooting
### Connection Issues
1. **Verify Task Genius MCP is running:**
* Open Obsidian → Task Genius Settings → MCP Integration
* Check server status is green
2. **Test connection:**
```bash
curl -X POST http://127.0.0.1:7777/health
```
3. **Check configuration file:**
* Ensure JSON syntax is valid
* Verify token format: `Bearer YOUR_TOKEN+YOUR_APP_ID`
* No extra spaces or quotes
### Authentication Errors
* **"Unauthorized"**: Invalid token or App ID
* **"Connection refused"**: MCP server not running
* **Solution**: Get fresh credentials from MCP Settings
### Windows-Specific
If curl isn't found, use full path:
```json
{
"command": "C:\\Windows\\System32\\curl.exe"
}
```
## Best Practices
1. **Security**: Never share or commit your configuration file
2. **Naming**: Use descriptive names like `personal-tasks` or `work-projects`
3. **Conversations**: Start new chats for different task contexts
4. **Performance**: Be specific in queries for faster responses
## Next Steps
* Explore [Task Genius use cases](/docs/mcp-integration/use-cases) for workflow ideas
* Configure [other clients](/docs/mcp-integration/clients) like Claude Code or Cursor
* Check the [API reference](/docs/mcp-integration/api-reference) for all available operations
* See [troubleshooting guide](/docs/mcp-integration/troubleshooting) if you encounter issues
**Quick Tip**: Start with simple requests like "show today's tasks" to get familiar with Task Genius in Claude Desktop.
file: ./content/docs/mcp-integration/clients/cursor.mdx
meta: {
"title": "Cursor Configuration",
"description": "Setup guide for Cursor with Task Genius MCP"
}
This guide shows you how to configure Cursor to work with your Task Genius tasks.
## Prerequisites
* Cursor installed
* Task Genius MCP server enabled in Obsidian
* Your authentication credentials from Task Genius settings
## One-Click Installation (Recommended)
The easiest way to configure Cursor is using the automatic deeplink installation:
### Step 1: Open MCP Settings
Open MCP Settings in Obsidian
### Step 2: Find Cursor Section
Navigate to the "Client Configuration" section and locate Cursor.
### Step 3: Click Install
Click the "Add to Cursor" button. This will:
1. Open Cursor automatically
2. Add the Task Genius MCP server
3. Configure authentication
4. Verify the connection
## Manual Configuration
Cursor supports multiple configuration methods for MCP servers.
### Method 1: Using mcp.json (Recommended)
#### Project-specific Configuration
Create `.cursor/mcp.json` in your project root:
```json
{
"mcpServers": {
"task-genius": {
"transport": "http",
"url": "http://127.0.0.1:7777/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN+YOUR_APP_ID"
}
}
}
}
```
#### Global Configuration
For system-wide access, create `~/.cursor/mcp.json`:
```json
{
"mcpServers": {
"obsidian-tasks": {
"transport": "http",
"url": "http://127.0.0.1:7777/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN+YOUR_APP_ID"
}
}
}
}
```
### Method 2: Environment Variables
Store credentials securely using environment variables:
```json
{
"mcpServers": {
"task-genius": {
"transport": "http",
"url": "http://127.0.0.1:7777/mcp",
"env": {
"TASK_GENIUS_TOKEN": "YOUR_TOKEN",
"TASK_GENIUS_APP_ID": "YOUR_APP_ID"
},
"headers": {
"Authorization": "Bearer ${TASK_GENIUS_TOKEN}+${TASK_GENIUS_APP_ID}"
}
}
}
}
```
### Step 2: Get Your Credentials
Get Credentials from Task Genius
Copy:
* Authentication Token
* App ID
### Step 3: Apply Configuration
1. Replace `YOUR_TOKEN` and `YOUR_APP_ID` with actual values
2. Save the mcp.json file
3. Restart Cursor or reload the window
## Transport Methods
Task Genius MCP server uses HTTP transport, which Cursor fully supports:
* **HTTP**: Best for Task Genius integration
* **SSE**: Alternative for real-time updates (if configured)
* **stdio**: Not applicable for Task Genius
### Extension API (Advanced)
For programmatic registration, Cursor provides an extension API:
```javascript
// Register Task Genius MCP server programmatically
vscode.cursor.mcp.registerServer('task-genius', {
transport: 'http',
url: 'http://127.0.0.1:7777/mcp',
headers: {
'Authorization': 'Bearer YOUR_TOKEN+YOUR_APP_ID'
}
});
```
This is useful for:
* Enterprise deployments
* Automated setup workflows
* Dynamic configuration
## Advanced Configuration
### Multiple Vaults
Configure multiple Obsidian vaults with different ports:
```json
{
"mcpServers": {
"personal-tasks": {
"transport": "http",
"url": "http://127.0.0.1:7777/mcp",
"headers": {
"Authorization": "Bearer TOKEN1+APPID1"
}
},
"work-tasks": {
"transport": "http",
"url": "http://127.0.0.1:7778/mcp",
"headers": {
"Authorization": "Bearer TOKEN2+APPID2"
}
}
}
}
```
### Remote Access
For accessing Task Genius from another machine:
```json
{
"mcpServers": {
"remote-vault": {
"transport": "http",
"url": "http://192.168.1.100:7777/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN+YOUR_APP_ID"
}
}
}
}
```
## Using Task Genius in Cursor
### Composer Agent Integration
The Composer Agent automatically uses Task Genius tools when relevant. Simply describe what you need:
```
"Show today's high-priority tasks"
"Create task: Review quarterly report, priority 4, due tomorrow"
"Mark 'Review quarterly report' as complete"
"What tasks are overdue?"
"Show all tasks for project ClientPresentation"
```
### Tool Management
#### Toggling Tools
Enable or disable Task Genius tools directly in chat:
* Click tool names in the Available Tools list
* Disabled tools won't be loaded into context
#### Tool Approval
By default, Cursor asks for approval before using MCP tools:
* Click the arrow next to tool name to see arguments
* Approve individual operations
* Enable auto-run for trusted operations
#### Auto-run Mode
For faster workflow, enable auto-run:
* Tools execute without asking for permission
* Similar to terminal command auto-execution
* Configure in Cursor settings
## Troubleshooting
### Connection Failed
If Cursor can't connect to Task Genius:
1. **Verify server is running**:
```bash
curl http://127.0.0.1:7777/health
```
2. **Check authentication**:
* Ensure token is correct
* Verify App ID is included
* Try regenerating token
3. **Test with curl**:
```bash
curl -X POST http://127.0.0.1:7777/mcp \
-H "Authorization: Bearer YOUR_TOKEN+YOUR_APP_ID" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize"}'
```
### Tools Not Available
If MCP tools don't appear in Cursor:
1. **Restart Cursor** after configuration changes
2. **Check logs** in Cursor's developer console
3. **Verify configuration** syntax is correct
4. **Ensure MCP server** is enabled in Obsidian
### Authentication Errors
Common authentication issues:
| Error | Solution |
| ---------------- | ------------------------------------- |
| "Invalid token" | Regenerate token in Obsidian settings |
| "Missing app ID" | Ensure format is `Bearer TOKEN+APPID` |
| "Unauthorized" | Check token hasn't expired or changed |
### Performance Issues
For better performance:
1. **Use specific queries** instead of broad requests
2. **Limit results** for large vaults
3. **Enable caching** if available in your Cursor version
## Security Considerations
When using Task Genius with Cursor:
1. **Verify the source**: Task Genius is an official Obsidian plugin
2. **Review permissions**: MCP only accesses your task data
3. **Limit API access**: Use local-only mode when possible
4. **Secure credentials**: Never share or commit tokens
## Best Practices
1. **Configuration Location**:
* Use project-specific `.cursor/mcp.json` for vault-specific tasks
* Use global `~/.cursor/mcp.json` for personal task management
2. **Authentication**:
* Store tokens in environment variables when possible
* Regenerate tokens periodically
* Use separate tokens for different vaults
3. **Usage**:
* Be specific in queries for better results
* Use tool toggling to control which operations are available
* Enable auto-run only for trusted operations
## Example Workflows
### Daily Review
```
"Show today's tasks by priority"
"What tasks did I complete yesterday?"
"List overdue high-priority tasks"
```
### Project Management
```
"Show all tasks for project Q1Planning"
"Find incomplete tasks tagged #milestone"
"Create task in project: Design review meeting"
```
### Quick Capture
```
"Add to inbox: Call client about proposal"
"Create task in daily note: Team standup at 10am"
"Quick task: Review pull request #123"
```
## Next Steps
* Explore [Task Genius use cases](/docs/mcp-integration/use-cases) for workflow ideas
* Check the [API reference](/docs/mcp-integration/api-reference) for all available operations
* Configure [other clients](/docs/mcp-integration/clients) like Claude Code
* See [troubleshooting guide](/docs/mcp-integration/troubleshooting) if you encounter issues
**Quick Tip**: Start with simple queries like "show today's tasks" to get familiar with Task Genius in Cursor.
file: ./content/docs/mcp-integration/clients/vscode.mdx
meta: {
"title": "VS Code Configuration",
"description": "Setup guide for VS Code with Task Genius MCP"
}
This guide shows you how to configure VS Code to work with your Task Genius tasks using Model Context Protocol (MCP).
## Prerequisites
* VS Code 1.102 or later
* GitHub Copilot access
* Task Genius MCP server enabled in Obsidian
* Your authentication credentials from Task Genius settings
## Quick Setup
The fastest way to add Task Genius to VS Code:
### Step 1: Enable MCP Support
MCP support is enabled by default in VS Code. Verify with:
* Open Settings (`Cmd/Ctrl + ,`)
* Search for `chat.mcp.enabled`
* Ensure it's checked
### Step 2: Add Task Genius Server
Run the command from Command Palette (`Cmd/Ctrl + Shift + P`):
```
MCP: Add Server
```
Choose:
1. **Server Type**: HTTP
2. **Name**: `task-genius`
3. **URL**: `http://127.0.0.1:7777/mcp`
4. **Scope**: Workspace or Global
### Step 3: Configure Authentication
Get Credentials from Task Genius
Add authentication header in the configuration dialog:
* **Header Name**: `Authorization`
* **Header Value**: `Bearer YOUR_TOKEN+YOUR_APP_ID`
## Manual Configuration
### Workspace Configuration
Create `.vscode/mcp.json` in your project:
```json
{
"servers": {
"task-genius": {
"type": "http",
"url": "http://127.0.0.1:7777/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN+YOUR_APP_ID"
}
}
}
}
```
### Global Configuration
For all workspaces, run:
```
MCP: Open User Configuration
```
Or create/edit `~/mcp.json`:
```json
{
"servers": {
"task-genius": {
"type": "http",
"url": "http://127.0.0.1:7777/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN+YOUR_APP_ID"
}
}
}
}
```
## Using Task Genius in VS Code
### Agent Mode
1. Open Chat view (`Ctrl/Cmd + Shift + I`)
2. Select **Agent** mode from dropdown
3. Click **Tools** to see Task Genius tools
4. Start chatting about your tasks
### Common Operations
```text
"Show today's high-priority tasks"
"Create task: Review code changes, priority 4"
"Mark 'Review code changes' as complete"
"List overdue tasks"
"Show tasks for project ClientAPI"
```
### Direct Tool Reference
Type `#` in chat to directly reference tools:
```text
#task-genius.create_task Create a new feature task
#task-genius.query_tasks Show all incomplete tasks
```
### Tool Sets
Group frequently used tools:
1. Create a tool set in settings
2. Name it (e.g., "daily-review")
3. Add Task Genius tools
4. Reference with `#daily-review` in chat
## Advanced Configuration
### Multiple Vaults
```json
{
"servers": {
"personal-tasks": {
"type": "http",
"url": "http://127.0.0.1:7777/mcp",
"headers": {
"Authorization": "Bearer TOKEN1+APPID1"
}
},
"work-tasks": {
"type": "http",
"url": "http://127.0.0.1:7778/mcp",
"headers": {
"Authorization": "Bearer TOKEN2+APPID2"
}
}
}
}
```
### Secure Credentials
Use input variables to avoid hardcoding tokens:
```json
{
"inputs": [
{
"type": "promptString",
"id": "task-genius-auth",
"description": "Task Genius Authentication (TOKEN+APPID)",
"password": true
}
],
"servers": {
"task-genius": {
"type": "http",
"url": "http://127.0.0.1:7777/mcp",
"headers": {
"Authorization": "Bearer ${input:task-genius-auth}"
}
}
}
}
```
### Dev Container Support
Add to `.devcontainer/devcontainer.json`:
```json
{
"customizations": {
"vscode": {
"mcp": {
"servers": {
"task-genius": {
"type": "http",
"url": "http://host.docker.internal:7777/mcp",
"headers": {
"Authorization": "Bearer ${localEnv:TASK_GENIUS_AUTH}"
}
}
}
}
}
}
}
```
## Settings & Features
### Auto-start Servers
Enable automatic server start:
```json
{
"chat.mcp.autostart": true
}
```
### Tool Confirmation
Control tool execution approval:
* **Always ask**: Default, confirms each tool use
* **Auto-confirm specific tools**: Use dropdown in confirmation dialog
* **Trust all**: Enable in settings (use with caution)
### Manage Servers
Access server management:
1. **Extensions View**: `MCP SERVERS - INSTALLED` section
2. **Command Palette**: `MCP: List Servers`
3. **Configuration File**: Click inline actions in `mcp.json`
Available actions:
* Start/Stop server
* View logs
* Reset cached tools
* Test connection
* Uninstall
## Troubleshooting
### Connection Issues
1. **Verify Task Genius MCP is running:**
```bash
curl http://127.0.0.1:7777/health
```
2. **Check VS Code MCP status:**
```
MCP: Show Installed Servers
```
3. **View server logs:**
```
MCP: List Servers > task-genius > Show Output
```
### Authentication Errors
| Error | Solution |
| ----------------------- | ------------------------------------------- |
| "401 Unauthorized" | Regenerate token in Obsidian settings |
| "Invalid header format" | Use format: `Bearer TOKEN+APPID` |
| "Connection refused" | Ensure MCP server is enabled in Task Genius |
### Tools Not Available
1. **Refresh tools cache:**
```
MCP: Reset Cached Tools
```
2. **Restart server:**
```
MCP: List Servers > task-genius > Restart
```
3. **Check tool limit:**
* Maximum 128 tools per request
* Deselect unused tools in Tools picker
## Best Practices
### Performance
* Be specific in queries for faster responses
* Use tool sets for common operations
* Enable virtual tools for large tool collections:
```json
{
"github.copilot.chat.virtualTools.threshold": 50
}
```
### Security
* Store credentials using input variables
* Use workspace settings for project-specific tasks
* Never commit `mcp.json` with credentials
* Regularly regenerate authentication tokens
### Workflow Tips
1. **Daily Review:**
* Create "daily-review" tool set
* Include query\_tasks, update\_task\_status tools
* Quick access with `#daily-review`
2. **Project Management:**
* Workspace-specific configuration per project
* Use project tags in Task Genius
* Filter by project in queries
3. **Quick Capture:**
* Set up keyboard shortcut for Chat view
* Use `#task-genius.create_task` for quick entry
* Enable auto-start for instant access
## Integration Examples
### With Git Workflows
```text
"Create task for PR #123 review"
"List tasks tagged with current-sprint"
"Mark deployment tasks as complete"
```
### With Development Tasks
```text
"Add task: Fix TypeScript errors in components folder"
"Show all tasks related to API refactoring"
"Create subtasks for implementing user authentication"
```
### With Team Collaboration
```text
"List tasks assigned to team-frontend project"
"Show high-priority bugs for this week"
"Create task in daily note: Discuss architecture changes"
```
## Next Steps
* Explore [Task Genius use cases](/docs/mcp-integration/use-cases) for workflow ideas
* Check the [API reference](/docs/mcp-integration/api-reference) for all available operations
* Learn about [MCP prompts and resources](/docs/mcp-integration/advanced-features)
* See [troubleshooting guide](/docs/mcp-integration/troubleshooting) for detailed solutions
**Pro Tip**: Start with Agent mode and the Tools picker to explore Task Genius capabilities before creating custom tool sets.
file: ./content/docs/task-view/custom-view/index.mdx
meta: {
"title": "Custom View"
}
import { VersionCallout } from "@/components/VersionCallout";
import { Edit3Icon, TrashIcon, CopyIcon } from "lucide-react";
In Task Genius, you can create custom views to display tasks in a specific way.
## Create a custom view
1. Open the settings page of [Task Genius View](/docs/task-view/basic-view-settings#basic-settings).
2. Click on the button `Add Custom View`.
3. Input the view name, and then select a icon for the view.
4. Select the `View Type` you want to create. (You can select [Standard View](/docs/task-view/custom-view/standard-view) or [Two Column View](/docs/task-view/custom-view/two-column-view))
5. Configure the view settings.
6. Click on the button `Save`.
## Duplicate a custom view
You can duplicate a custom view by clicking the button.
## Edit a custom view
After creating a custom view, you can press the button to edit the view.
Or you can right-click the view in the sidebar and select `Edit View` to edit the view.
## Delete a custom view
After creating a custom view, you can press the button to delete the view.
## Use a custom view
After creating a custom view, you can use it by clicking the view in the sidebar.
## Settings
You can read more about the settings in the [Basic view settings](/docs/task-view/basic-view-settings#basic-settings) page.
file: ./content/docs/task-view/custom-view/standard-view.mdx
meta: {
"title": "Standard View"
}
import { VersionCallout } from "@/components/VersionCallout";
All standard view are inherit from the [Inbox View](/docs/task-view/inbox-view).
## Usage
You can read more about the usage in the [Inbox View](/docs/task-view/inbox-view) page.
## Settings
1. Open the settings page of [Task Genius View](/docs/task-view/basic-view-settings#basic-settings).
2. Click on the button `Add Custom View`.
3. Input the view name, and then select a icon for the view.
4. Select the `View Type` as `Standard View`.
5. Configure the view settings.
6. Click on the button `Save`.
7. All done.
You can read more about the settings in the [Basic view settings](/docs/task-view/basic-view-settings#basic-settings) page.
After reload Obsidian, you will see the new view in the sidebar.
file: ./content/docs/task-view/custom-view/two-column-view.mdx
meta: {
"title": "Two Column View"
}
import { VersionCallout } from "@/components/VersionCallout";
import { ListPlusIcon } from "lucide-react";
Two column view is a view that displays tasks in two columns.
## Usage
When creating or editing a custom view, if you select "Two Column View" as the `View Type`, the following settings become available:
* **Group by Task Property**: Select which task property (e.g., Tags, Project, Priority, Status, Due Date, File Path) to use for grouping items in the left column. The title of the left column will often default based on this selection (e.g., selecting "Tags" might default the left column title to "Tags").
* *Default*: `Tags`
* **Left Column Title**: The title displayed at the top of the left column, which lists the groups (based on the selected property).
* *Default*: `Items` (or based on the "Group by Task Property" selection)
* **Right Column Title**: The default title displayed at the top of the right column when a single group is selected from the left column.
* *Default*: `Tasks`
* **Multi-select Text**: The text displayed in the right column's title bar when multiple groups are selected in the left column.
* *Default*: `selected items`
* **Empty State Text**: The text displayed in the right column when no group is selected in the left column.
* *Default*: `No items selected`
## Task List
The task list is the list of tasks that will be displayed in the right column. The task list is influenced by the basic filter settings.
## Group List
The group list is the list of groups that will be displayed in the left column. The group list is influenced by the "Group by Task Property" setting.
### Multi-select
In the top-right corner of the group list, you can see a multi-select button . You can use it to select multiple groups.
After you press the multi-select button, you can use the left mouse button to select a group and then press the `Ctrl/Cmd` key to select another group.
## Settings
1. Open the settings page of [Task Genius View](/docs/task-view/basic-view-settings#basic-settings).
2. Click on the button `Add Custom View`.
3. Input the view name, and then select a icon for the view.
4. Select the `View Type` as `Two Column View`.
5. Configure the view settings especially the `Group by Task Property` setting.
6. Click on the button `Save`.
7. All done.
You can read more about the settings in the [Basic view settings](/docs/task-view/basic-view-settings#basic-settings) page.
After reload Obsidian, you will see the new view in the sidebar.
file: ./content/docs/task-view/filter/advanced-filter.mdx
meta: {
"title": "Advanced Filter"
}
import { VersionCallout } from "@/components/VersionCallout";
import { PlusIcon, XIcon } from "lucide-react";
The Advanced Filter is a powerful tool that allows you to filter tasks based on complex criteria.
## Scope
Currently, the advanced filter is only available in the [Plan(Gantt) view](/docs/task-view/plan-view) and also the [Status(Kanban) view](/docs/task-view/status-view).
## Usage
1. Click the **Add filter** button to open a dropdown.
2. Select a **category** to filter by (e.g., `Tag`, `Priority`, `Project`).
3. Select the specific **value** within that category (e.g., `#urgent`, `🔺 Highest`, `MyProject`).
4. Available filter categories and options are dynamically generated based on the tasks currently loaded.
5. Active filters are displayed as removable "pills" above the board (via ).
6. You can add multiple filters. Tasks must match **all** active filters to be displayed.
7. Click the **Clear all** button to remove all active filters at once.
8. The filterable criteria include:
* Status
* Tag
* Project
* Context
* Priority (often represented by icons like 🔺, ⏫, 🔼)
* Completed (Yes/No)
* File Path
9. Applying, adding, or removing filters dynamically updates the tasks in the view.
file: ./content/docs/task-view/filter/basic-filter.mdx
meta: {
"title": "Basic Filter"
}
import { VersionCallout } from "@/components/VersionCallout";
The basic filter is a simple filter that allows you to filter tasks by content.
## Scope
Currently, the basic filter is available in all views(except the [Plan(Gantt) view](/docs/task-view/plan-view) or [Status(Kanban) view](/docs/task-view/status-view)).
## Usage
You can find the basic filter in the top right corner of the view. When you input a keyword, the tasks that contain the keyword will be filtered.
file: ./content/docs/task-view/filter/index.mdx
meta: {
"title": "Filter"
}
Task Genius views provide a variety of filters to help you find the tasks you need.
file: ./content/docs/task-view/filter/popover-filter.mdx
meta: {
"title": "Popover Filter"
}
import { VersionCallout } from "@/components/VersionCallout";
import {
Edit3Icon,
PlusIcon,
CopyIcon,
Trash2Icon,
GripVerticalIcon,
SaveIcon,
FolderOpenIcon,
} from "lucide-react";
The Popover Filter is an advanced filtering system that provides a comprehensive interface for creating complex filter conditions with multiple groups and logical operators.
## Overview
The Popover Filter allows you to create sophisticated filter configurations using:
* Multiple filter groups with different logical operators (AND, OR, NOT)
* Individual filters within each group with various conditions
* Drag-and-drop reordering of filter groups
* Real-time filter application with debounced updates
## Features
### Filter Groups
* **Root Condition**: Choose how filter groups are combined (Any, All, None)
* **Group Condition**: Set how filters within each group are combined (All, Any, None)
* **Drag & Drop**: Reorder filter groups using the handle
* **Duplicate Groups**: Copy entire filter groups with the button
* **Remove Groups**: Delete filter groups with the button
### Filter Properties
The system supports filtering by various task properties:
* **Content**: Filter by task text content
* **Status**: Filter by task status
* **Priority**: Filter by task priority level
* **Due Date**: Filter by task due dates
* **Start Date**: Filter by task start dates
* **Scheduled Date**: Filter by scheduled dates
* **Tags**: Filter by task tags
* **File Path**: Filter by the file containing the task
* **Completed**: Filter by completion status
### Filter Conditions
Different properties support different condition types:
#### Text Properties (Content, File Path, Status)
* Contains / Does not contain
* Is / Is not
* Starts with / Ends with
* Is empty / Is not empty
#### Date Properties (Due Date, Start Date, Scheduled Date)
* Is / Is not
* Greater than (>) / Less than (\<)
* Greater than or equal (>=) / Less than or equal (\<=)
* Is empty / Is not empty
#### Priority Property
* Is / Is not
* Is empty / Is not empty
#### Tags Property
* Contains / Does not contain
* Is empty / Is not empty
#### Completed Property
* Is true / Is false
## Usage
### Creating Filter Groups
1. Click the **Add filter group** button to create a new filter group
2. Choose the group condition (All, Any, None) to determine how filters within the group are combined
3. Add individual filters to the group using the **Add filter** button
### Configuring Individual Filters
1. **Select Property**: Choose what aspect of the task to filter by
2. **Select Condition**: Choose the comparison operator
3. **Enter Value**: Provide the value to compare against (if required)
4. **Remove Filter**: Use the button to delete unwanted filters
### Managing Filter Groups
* **Reorder**: Drag filter groups using the handle
* **Duplicate**: Click the button to copy a filter group
* **Remove**: Click the button to delete a filter group
### Root Condition Settings
At the top level, choose how multiple filter groups are combined:
* **Any**: Tasks matching any filter group will be shown
* **All**: Tasks must match all filter groups to be shown
* **None**: Tasks matching any filter group will be hidden
### Save or load filter
* **Save Filter**: Click the button to save the current filter configuration
* **Load Filter**: Click the button to load a previously saved filter configuration
## Real-time Updates
The Popover Filter system provides real-time filtering with:
* **Automatic Saving**: Filter configurations are automatically saved to local storage
* **Debounced Updates**: Filter changes are applied with a slight delay to prevent excessive updates
* **Event Broadcasting**: Filter changes trigger events that other components can listen to
## Data Persistence
Filter configurations are automatically saved and restored:
* Settings persist across application sessions
* Invalid configurations are automatically reset to defaults
* Filter state can be programmatically loaded and retrieved
file: ./content/docs/task-view/filter/view-filter.mdx
meta: {
"title": "View Filter Settings"
}
import { VersionCallout } from "@/components/VersionCallout";
import { Edit3Icon } from "lucide-react";
A view filter setting is a predefined filter that is based on the view you are currently in.
## Usage
1. Open the settings of Task Genius.
2. Go to the `View` tab.
3. Select the view you want to filter.
4. Click the button.
5. Set the filter you want to use.
You can read more about the filter settings in the [Basic view settings](/docs/task-view/basic-view-settings) page.