docs: tighten accuracy, fix cross-links, and consolidate unreleased notes

This commit is contained in:
callumalpass 2026-02-21 13:41:32 +11:00
parent 917522f7c6
commit 735706ead4
28 changed files with 930 additions and 2282 deletions

View file

@ -1,56 +1,67 @@
# TaskNotes Privacy Policy
Last updated: February 8, 2026
Last updated: February 21, 2026
## Overview
TaskNotes is an Obsidian plugin that helps you manage tasks within your notes.
TaskNotes is an Obsidian plugin. It stores task data in your local vault files.
## Data Collection and Usage
TaskNotes does not collect, transmit, or share any of your data.
TaskNotes does not include telemetry or analytics collection.
## Data Storage
## Local Storage
Task and note content stays in your local Obsidian vault, and plugin settings are stored in Obsidians local configuration. By default, TaskNotes does not send vault data to external services.
Task and note content stays in your local Obsidian vault.
Plugin settings are stored in Obsidian's local plugin configuration.
## Optional Network Features
TaskNotes is local-first. Network requests occur only when you enable features that require them.
Optional network features:
- OAuth calendar integration (Google/Microsoft): fetches and updates calendar events through provider APIs.
- ICS subscriptions: fetches events from configured ICS URLs.
- Webhooks: sends event payloads to webhook endpoints you configure.
- API docs UI (`/api/docs/ui`): loads Swagger UI assets from `unpkg.com` in your browser.
## OAuth Credentials and Tokens
- OAuth client credentials are configured by you in TaskNotes settings.
- Access and refresh tokens are stored locally on your device.
- You can disconnect providers at any time to revoke TaskNotes access.
## Third-Party Services (When Enabled)
- Google APIs: https://policies.google.com/privacy
- Microsoft APIs: https://privacy.microsoft.com/privacystatement
- Any ICS host or webhook endpoint you configure
## What TaskNotes Does Not Do
- No TaskNotes-hosted cloud sync service
- No remote storage of your vault content by TaskNotes
- No telemetry pipeline sending usage metrics
## Data Deletion
You can stop TaskNotes processing by disabling the plugin, and remove plugin configuration by uninstalling it. Your notes remain in your vault under your control.
You can stop TaskNotes processing by disabling the plugin.
You can remove plugin settings by uninstalling the plugin.
Your notes remain in your vault.
## Network Requests (Optional Features)
## Changes to This Policy
TaskNotes operates locally by default, but includes optional features that make network requests when you enable them:
**Optional network features:**
OAuth calendar integration (Google or Microsoft) uses OAuth 2.0 (with PKCE) to authenticate and stores access/refresh tokens locally on your device. If enabled, TaskNotes fetches calendar events and can update external events when you choose sync actions.
ICS subscriptions fetch event data from URLs you configure. Webhooks send task event payloads to endpoints you configure. License validation sends your license key to Lemon Squeezy for validity checks, caches results locally for 24 hours, and applies a 7-day grace period when validation is temporarily unavailable.
**OAuth Credentials:**
TaskNotes includes bundled OAuth client credentials for quick setup. These app credentials are public identifiers and do not expose your account. Authentication and calendar access are controlled by your user tokens. You can also use your own OAuth credentials in advanced setup.
**Third-Party Services:**
- **Lemon Squeezy**: License validation only (https://www.lemonsqueezy.com/privacy)
- **Google**: OAuth authentication and Calendar API access (https://policies.google.com/privacy)
- **Microsoft**: OAuth authentication and Calendar API access (https://privacy.microsoft.com/privacystatement)
**What we never do:**
TaskNotes does not run analytics/telemetry collection, does not read your notes remotely, and does not store your calendar data on TaskNotes servers. Calendar requests go directly between your device and the provider APIs you connect.
## Changes to Privacy Policy
We may update this policy. Changes will be posted in this file with an updated date.
This policy may be updated. Changes are published in this file with a new date.
## Contact
For questions or concerns about privacy, please open an issue on GitHub:
For privacy questions, open an issue:
https://github.com/callumalpass/tasknotes/issues
## Open Source
## Open Source Verification
TaskNotes is open source software. You can review the code at https://github.com/callumalpass/tasknotes to verify these privacy practices.
TaskNotes is open source. You can inspect the implementation:
https://github.com/callumalpass/tasknotes

View file

@ -28,7 +28,7 @@ Open a view with commands like **TaskNotes: Open tasks view** or **TaskNotes: Op
## How it works with Bases
TaskNotes registers as a Bases data source and provides custom view types: `tasknotesTaskList`, `tasknotesKanban`, `tasknotesCalendar`, `tasknotesAgenda`, and `tasknotesMinicalendar`. Your task notes become rows; frontmatter properties become columns.
TaskNotes registers as a Bases data source and provides custom view types: `tasknotesTaskList`, `tasknotesKanban`, `tasknotesCalendar`, and `tasknotesMiniCalendar`. The default Agenda file is a preconfigured `tasknotesCalendar` list view (`listWeek`). Your task notes become rows; frontmatter properties become columns.
The default `.base` files include formula properties for computed values:

File diff suppressed because it is too large Load diff

View file

@ -2,19 +2,6 @@
TaskNotes supports Google Calendar and Microsoft Calendar integration via OAuth 2.0.
<!-- TEMPORARILY DISABLED FOR BETA RELEASE
## Quick Setup
TaskNotes bundles OAuth client IDs (and the Google client secret) so you can connect without creating your own apps. You'll need an active TaskNotes license to unlock these built-in credentials.
1. Go to Settings → Integrations → Calendar.
2. In the license card, ensure **Quick Setup** is selected and enter your Lemon Squeezy license key.
3. Click **Validate License** (or blur the input) and wait for the success notice.
4. Use the Google or Microsoft card to click **Connect** and authorize access in your browser.
- Google uses the OAuth loopback flow and will reopen to `http://127.0.0.1:<port>` to finish the login.
- Microsoft uses the OAuth device-flow and will show you a short code and link.
-->
## Setup (Your Own OAuth Credentials)
To connect calendars, create OAuth credentials with Google and/or Microsoft, then paste them into TaskNotes Integrations settings. The sections below walk through each provider.
@ -27,7 +14,7 @@ To connect calendars, create OAuth credentials with Google and/or Microsoft, the
*Video by [@antoneheyward](https://www.youtube.com/@antoneheyward)*
In [Google Cloud Console](https://console.cloud.google.com), create or select a project, enable the Google Calendar API, and create OAuth 2.0 credentials using the Desktop application type. Then copy the Client ID and Client Secret into TaskNotes (Settings → Integrations → Calendar) and click **Connect Google Calendar**.
In [Google Cloud Console](https://console.cloud.google.com), create or select a project, enable the Google Calendar API, and create OAuth 2.0 credentials using the Desktop application type. Then copy the Client ID and Client Secret into TaskNotes (`Settings -> TaskNotes -> Integrations`) and click **Connect Google Calendar**.
### Microsoft Calendar
@ -50,7 +37,7 @@ Credentials and tokens are stored locally in your Obsidian data. Tokens refresh
**"Failed to connect"**
Verify credentials first, then confirm redirect URI setup. For Microsoft, use `http://127.0.0.1` via the manifest editor (not `localhost`). For Google, verify `http://localhost:8080` is configured. Also confirm API permissions were granted.
Verify credentials first, then confirm loopback redirect configuration. TaskNotes uses a local callback on `127.0.0.1` with a dynamically selected port. For Microsoft, ensure loopback redirect support is configured in the app registration. Also confirm required permissions/scopes are granted.
**"Failed to fetch events"**

View file

@ -75,7 +75,7 @@ Property keys are configurable. If your vault uses `deadline` instead of `due`,
### Custom Fields
Add any frontmatter property to your tasks. User-defined fields work in filtering, sorting, and templates. Define custom fields in Settings → Task Properties to include them in task modals and views.
Add any frontmatter property to your tasks. User-defined fields work in filtering, sorting, and templates. Define custom fields in `Settings -> TaskNotes -> Task Properties` to include them in task modals and views.
## Bases Integration
@ -93,7 +93,6 @@ This makes view behavior inspectable and predictable. If a task appears in the w
Bases is a core plugin included with Obsidian 1.10.1+:
1. Open Settings → Core Plugins
1. Open `Settings -> Core Plugins`
2. Enable "Bases"
3. TaskNotes views will now function

View file

@ -1,6 +1,6 @@
# Features
TaskNotes covers the full spectrum of task management, from basic organization to advanced workflows with time tracking and calendar integration.
TaskNotes includes task organization, time tracking, and calendar integration features.
## Task Management
@ -26,7 +26,7 @@ For details on how Bases integration works, see [Core Concepts](core-concepts.md
Inline task features let you work from normal notes without context switching. Task links can display interactive cards, checkboxes can be converted into full task notes, and project notes can surface subtasks and dependency relationships in place.
Natural language parsing supports date, priority, and context extraction across multiple languages, which helps keep capture friction low while preserving structured data.
Natural language parsing supports date, priority, and context extraction across multiple languages, which helps keep fast capture while preserving structured data.
See [Inline Task Integration](features/inline-tasks.md) for details.
@ -42,7 +42,7 @@ See [Time Management](features/time-management.md) for details.
TaskNotes supports bidirectional OAuth sync with Google Calendar and Microsoft Outlook, plus read-only ICS subscriptions for external feeds. Calendar views include month, week, day, year, and list modes, and drag-and-drop scheduling can update tasks directly.
For planning workflows, time-blocking and calendar-linked task updates make it possible to move from backlog management to real schedule execution in one workspace.
For planning workflows, time-blocking and calendar-linked task updates connect backlog management with schedule execution in the same workspace.
![Calendar month view](assets/views-calendar-month.png)

View file

@ -19,7 +19,7 @@ OAuth calendar integration requires creating an OAuth application with your cale
1. Create an OAuth application in Google Cloud Console or Microsoft Azure Portal
2. Configure redirect URIs and scopes
3. Obtain client ID and client secret
4. Enter credentials in TaskNotes settings (**Settings → TaskNotes → Integrations → OAuth Calendar Integration**)
4. Enter credentials in TaskNotes settings (`Settings -> TaskNotes -> Integrations`, OAuth calendar section)
### Synchronization Behavior
@ -49,9 +49,10 @@ To create a time entry on the Calendar View:
1. Click and drag on a time slot in the calendar to select a time range
2. When the selection menu appears, choose **Create time entry** (timeblock appears only if the feature is enabled)
3. The time entry editor opens with start/end times pre-filled for the selected range
3. Choose a task in the task selector modal
4. A time entry is created for that task with the selected start/end range
Time entries are associated with tasks and stored in the task's frontmatter. Multiple time entries can exist for a single task.
Time entries are always associated with a specific task and stored in that task's frontmatter. Multiple time entries can exist for one task.
### Managing Time Entries
@ -62,13 +63,13 @@ The time entry editor modal provides functions to:
- Delete time entries
- See the total time tracked across all entries for a task
Access the time entry editor by clicking on an existing time entry in the calendar or through the task's context menu.
Access the time entry editor by clicking an existing time entry in the calendar.
## ICS Calendar Subscriptions
TaskNotes can subscribe to external calendar feeds using the iCalendar (ICS) format. This provides read-only access to events from calendar services. ICS subscriptions differ from OAuth calendar integration in that they are read-only—dragging ICS events to new dates does not update the source calendar.
Add and manage ICS subscriptions from **Settings → TaskNotes → Integrations → Calendar subscriptions**.
Add and manage ICS subscriptions from `Settings -> TaskNotes -> Integrations` (Calendar Subscriptions section).
For details on creating notes and tasks from calendar events, see [ICS Integration](ics-integration.md).
@ -82,4 +83,4 @@ The Calendar View supports time blocking for scheduling dedicated work periods.
Time blocks are stored in the frontmatter of daily notes and can be linked to specific tasks. This differs from time entries, which track actual time spent and are stored in task frontmatter rather than daily notes.
Enable time blocking under **Settings → TaskNotes → Features → Timeblocking**.
Enable time blocking under `Settings -> TaskNotes -> Features` (Timeblocking section).

View file

@ -1,6 +1,6 @@
# ICS Calendar Event Integration
TaskNotes provides integration with ICS calendar events, allowing you to create notes and tasks directly from calendar entries. This feature bridges the gap between scheduled events and actionable content in your vault.
TaskNotes can use ICS calendar events to create notes and tasks directly from calendar entries.
ICS integration creates linked notes and tasks from event data without manual re-entry.
## Overview
@ -12,7 +12,7 @@ The ICS integration allows you to:
- Generate tasks from events with proper scheduling and context
- Link existing vault content to calendar events
- Maintain relationships between events and created content
Event context, notes, and follow-up tasks remain connected through frontmatter links rather than manual cross-linking.
Event context, notes, and follow-up tasks remain connected through frontmatter links.
## Event Information Modal
@ -44,7 +44,6 @@ The relationship is maintained through the ICS Event ID field in the content's f
**Link Note** - Opens a file selection dialog to link an existing note to the calendar event.
**Refresh** - Reloads the list of related content to reflect recent changes.
For meeting workflows, the modal provides a single place to inspect event data, create content, and link existing files.
## Note Creation from Events
@ -93,7 +92,7 @@ Tasks are scheduled using the event's start time as an ISO timestamp, preserving
- **Contexts** - Event location is added as a context (if provided)
- **Time Estimate** - Calculated from event duration (if start and end times are available)
- **Tags** - Includes the ICS event tag and any default task tags
After creation, priority, status, and schedule can be edited when the event data does not match the final task plan.
After creation, priority, status, and schedule can be edited if event data does not match the final task plan.
### Content
@ -109,7 +108,6 @@ You can establish connections between existing vault content and calendar events
2. The file's frontmatter is updated to include the event ID
3. The modification date is updated to reflect the change
4. The connection appears in the related content list
Linking existing files supports notes created before calendar integration or outside the modal flow.
### Bidirectional References
@ -160,7 +158,7 @@ All standard TaskNotes template variables remain available:
## Configuration
ICS integration settings are located under **Settings → TaskNotes → Integrations**:
ICS integration settings are located under `Settings -> TaskNotes -> Integrations`:
### Default Templates
@ -175,7 +173,6 @@ Folder paths support template variables for dynamic organization:
- Date variables: `{{year}}`, `{{month}}`, `{{day}}`, `{{monthName}}`, etc.
- ICS event variables: `{{icsEventTitle}}`, `{{icsEventLocation}}`, `{{icsEventDescription}}`
- Other variables: See template variables section below
Define folder conventions before large imports to keep event-generated files in predictable locations.
Example folder paths:

View file

@ -6,7 +6,7 @@ Inline features support capture and task updates without leaving the current not
## Task Link Overlays
When a wikilink to a task note is created, TaskNotes can replace it with an interactive **Task Link Overlay**. Enable or disable overlays from **Settings → TaskNotes → General → Task link overlay**. The widget displays information about the task, such as its status, priority, and due date, and allows actions like changing the status or priority or opening the task for editing directly from the note.
When a wikilink to a task note is created, TaskNotes can replace it with an interactive **Task Link Overlay**. Enable or disable overlays from `Settings -> TaskNotes -> Features` (`Task link overlay`). The widget displays information about the task, such as status, priority, and due date, and allows actions like status/priority changes or opening the edit modal.
![Task Link Overlays in Live Preview mode](../assets/2025-07-17_21-03-55.png)
@ -45,12 +45,12 @@ When you run the command, the current line is used as the title of the new task.
## Instant Task Conversion
The **Instant Task Conversion** feature transforms lines in your notes into TaskNotes files. This works with both checkbox tasks and regular lines of text. Turn the feature on or off from **Settings → TaskNotes → Features → Show convert button next to checkboxes**. When enabled, a "convert" button appears next to the content in edit mode. Clicking this button creates a new task note using the line's text as the title and replaces the original line with a link to the new task file.
The **Instant Task Conversion** feature transforms lines in your notes into TaskNotes files. This works with both checkbox tasks and regular lines of text. Turn the feature on or off from `Settings -> TaskNotes -> Features` (`Show convert button next to checkboxes`). When enabled, a "convert" button appears next to content in edit mode. Clicking this button creates a new task note using the line text as the title and replaces the original line with a link to the new task file.
This supports progressive conversion from draft notes to dedicated task files.
### Folder Configuration
By default, converted tasks are placed in the same folder as the current note (`{{currentNotePath}}`). You can change this behavior in **Settings → TaskNotes → General → Folder for converted tasks**:
By default, converted tasks are placed in the same folder as the current note (`{{currentNotePath}}`). You can change this behavior in `Settings -> TaskNotes -> General` (`Folder for converted tasks`):
- **Leave empty**: Uses your default tasks folder (configured in the same section)
- **`{{currentNotePath}}`**: Places tasks in the same folder as the note you're editing (default)
@ -106,7 +106,7 @@ To use bulk conversion:
3. Search for "Convert all tasks in note to TaskNotes"
4. Execute the command
The command will display progress and show a summary when complete (e.g., "✅ Successfully converted 5 tasks to TaskNotes!").
The command displays progress and shows a summary when complete (for example, "Successfully converted 5 tasks to TaskNotes.").
!!! warning "Important Considerations"
@ -171,7 +171,7 @@ Additional behavior:
### Configuration
Enable or disable the widget in **Settings → TaskNotes → Misc Settings → Show Relationships Widget**.
Enable or disable the widget in `Settings -> TaskNotes -> Appearance` (`Show relationships widget`).
Position the widget at the top (after frontmatter) or bottom of the note using the **Relationships Position** setting.
@ -180,7 +180,7 @@ Position the widget at the top (after frontmatter) or bottom of the note using t
Tasks with subtasks can display an expand/collapse chevron that toggles subtask visibility.
- The chevron can be positioned on the Right (default, hover to show) or on the Left (always visible, matches group chevrons).
- Configure this in Settings → TaskNotes → Misc Settings → Subtask chevron position.
- Configure this in `Settings -> TaskNotes -> Appearance` (`Subtask chevron position`).
![Left subtask chevron](../assets/left-task-subtask-chevron.gif)
@ -196,7 +196,7 @@ These settings are replaced in v4 by:
- `showRelationships` and `relationshipsPosition`
If you had project subtasks enabled in v3, the relationships widget will be enabled automatically after upgrading to v4. The underlying Bases file changed from `TaskNotes/Views/project-subtasks.base` to `TaskNotes/Views/relationships.base`. Run the **Create Default Files** command in Settings → General to create the new relationships.base file.
If you had project subtasks enabled in v3, the relationships widget is enabled automatically after upgrading to v4. The underlying Bases file changed from `TaskNotes/Views/project-subtasks.base` to `TaskNotes/Views/relationships.base`. Run the **Create default files** action in `Settings -> TaskNotes -> Integrations` if `relationships.base` is missing.
## Natural Language Processing
@ -234,7 +234,7 @@ Features include:
### Customizable Triggers
**New in v4**: Triggers for NLP properties can be customized in **Settings → Features → NLP Triggers**.
**New in v4**: Triggers for NLP properties can be customized in `Settings -> TaskNotes -> Features` (`NLP Triggers`).
You can configure trigger characters or strings for:

View file

@ -5,7 +5,7 @@ TaskNotes integrates with external services and Obsidian's core plugins.
## Bases Core Plugin
TaskNotes v4 uses Obsidian's Bases core plugin for its main views (Task List, Kanban, Calendar, Agenda). Bases must be enabled from Settings → Core Plugins.
TaskNotes v4 uses Obsidian's Bases core plugin for its main views (Task List, Kanban, Calendar, Agenda). Bases must be enabled in `Settings -> Core Plugins`.
For details on Bases integration, see [Core Concepts](../core-concepts.md#bases-integration).
@ -17,12 +17,12 @@ For setup instructions, see [Calendar Integration](calendar-integration.md).
## HTTP API
A REST API enables external applications to create, update, and query tasks. Use this for automation, browser extensions, mobile apps, or custom integrations.
A REST API enables external applications to create, update, and query tasks. Use it for automation, browser extensions, or custom integrations.
For API documentation, see [HTTP API](../HTTP_API.md).
## Webhooks
Send task data to external services when tasks are created, updated, or completed. Supports custom payload transformations for services like Slack, Discord, and Microsoft Teams.
Webhooks send task event payloads to external services when subscribed events occur. Optional payload transformations support service-specific formats.
For configuration, see [Webhooks](../webhooks.md).

View file

@ -112,7 +112,7 @@ These indicators are intended to make reminders discoverable in list-heavy views
Default reminders can be configured in:
**Settings → TaskNotes → Task Properties → Reminders**
`Settings -> TaskNotes -> Task Properties -> Reminders`
Defaults are applied to:
@ -120,7 +120,7 @@ Defaults are applied to:
- Instant conversion
- Natural language task creation
Default reminders are best for recurring operating habits, such as pre-deadline checks or day-before planning prompts.
Default reminders are useful for recurring habits, such as pre-deadline checks or day-before planning prompts.
![Task properties settings](../assets/settings-task-properties.png)

View file

@ -94,7 +94,7 @@ Additionally, you can convert any line type in your notes to TaskNotes using the
Tasks store their data in YAML frontmatter with properties for status, priority, dates, contexts, projects, tags, time estimates, recurrence, and reminders. Custom fields can extend this structure.
This frontmatter-first design keeps task data editable and portable while still supporting rich UI interactions across views and widgets.
This frontmatter-first design keeps task data editable and portable while supporting consistent behavior across views and widgets.
For property types and examples, see [Core Concepts](../core-concepts.md#yaml-frontmatter). For configuration options, see [Task Properties Settings](../settings/task-properties.md).

View file

@ -6,7 +6,7 @@ TaskNotes includes features for time tracking and productivity, such as a time t
TaskNotes has a time tracker to record the time spent on each task. Time tracking information is stored in the `timeEntries` array within each task's YAML frontmatter. Each time entry includes a start time and an end time.
The time tracking interface includes controls to start and stop tracking, which appear in task views and on task cards. Only one task can be actively tracked at a time; starting a new timer will automatically stop the previous one. The total time spent on a task is calculated from all completed sessions.
The time tracking interface includes controls to start and stop tracking in task views and task cards. TaskNotes prevents duplicate active sessions on the same task. Active sessions on different tasks can exist at the same time, and total time spent on each task is calculated from completed sessions.
### Auto-Stop Time Tracking
@ -14,7 +14,7 @@ TaskNotes can automatically stop time tracking when a task is marked as complete
The auto-stop feature works by monitoring task status changes across all views and interfaces. When a task's status changes from any non-completed state to a completed state (as defined by the custom status configuration), any active time tracking session for that task is automatically terminated.
**Configuration Options:** Configure these under **Settings → TaskNotes → Features → Time Tracking**.
**Configuration Options:** Configure these under `Settings -> TaskNotes -> Features` (Time Tracking section).
- **Auto-stop tracking** - Enable or disable the automatic stopping behavior (enabled by default)
- **Completion notification** - Show a notice when auto-stop occurs (disabled by default)

View file

@ -1,23 +1,37 @@
# TaskNotes NLP API
TaskNotes now exposes its natural language parsing capabilities through API endpoints, allowing external clients to parse task descriptions and create tasks using natural language input.
The NLP API parses natural-language task text and optionally creates a task.
## Endpoints
### POST /api/nlp/parse
- `POST /api/nlp/parse`
- `POST /api/nlp/create`
Parses natural language input and returns structured task data without creating a task.
Both endpoints require a JSON body with `text`.
## Request Format
**Request:**
```json
{
"text": "Review PR #123 tomorrow high priority @work",
"locale": "en"
"text": "Review PR #123 tomorrow high priority @work"
}
```
**Response:**
Notes:
- `text` is required and must be a string.
- Per-request `locale` is not currently supported.
- Parser language comes from TaskNotes settings (`nlpLanguage`).
## `POST /api/nlp/parse`
Parses text and returns two objects:
- `parsed`: direct parser output
- `taskData`: normalized task payload that would be used for creation
Example response (shape):
```json
{
"success": true,
@ -28,8 +42,8 @@ Parses natural language input and returns structured task data without creating
"contexts": ["work"],
"projects": [],
"priority": "high",
"status": "todo",
"dueDate": "2024-08-13",
"status": null,
"dueDate": "2026-02-22",
"scheduledDate": null,
"dueTime": null,
"scheduledTime": null,
@ -40,11 +54,11 @@ Parses natural language input and returns structured task data without creating
"taskData": {
"title": "Review PR",
"priority": "high",
"status": "todo",
"status": "open",
"tags": ["123"],
"contexts": ["work"],
"projects": [],
"due": "2024-08-13",
"due": "2026-02-22",
"scheduled": null,
"recurrence": null,
"timeEstimate": null
@ -53,123 +67,51 @@ Parses natural language input and returns structured task data without creating
}
```
### POST /api/nlp/create
If parser does not detect status, `taskData.status` falls back to your default status workflow.
Parses natural language input and creates a task in one step.
## `POST /api/nlp/create`
**Request:**
```json
{
"text": "Call mom due friday 2pm #personal",
"locale": "en"
}
Parses text and creates a task in one call.
Returns HTTP `201` on success.
Example:
```bash
curl -X POST http://localhost:8080/api/nlp/create \
-H "Content-Type: application/json" \
-d '{"text":"Call mom due friday 2pm #personal"}'
```
**Response:**
```json
{
"success": true,
"data": {
"task": {
"id": "TaskNotes/Tasks/Call mom.md",
"title": "Call mom",
"filePath": "TaskNotes/Tasks/Call mom.md",
"priority": "medium",
"status": "todo",
"tags": ["personal"],
"contexts": [],
"projects": [],
"due": "2024-08-16 14:00"
},
"parsed": {
"title": "Call mom",
"tags": ["personal"],
"contexts": [],
"projects": [],
"priority": null,
"status": "todo",
"dueDate": "2024-08-16",
"dueTime": "14:00",
"scheduledDate": null,
"scheduledTime": null,
"recurrence": null,
"estimate": null,
"isCompleted": false
}
}
}
```
Response fields:
## Natural Language Parsing Features
- `data.task` (created task)
- `data.parsed` (parser output)
The NLP parser can extract the following from text input:
## What the Parser Extracts
### Dates and Times
- **Absolute**: "tomorrow", "friday", "next week", "2024-08-15"
- **Relative**: "today", "tomorrow", "next monday"
- **Times**: "2pm", "14:00", "at 6pm"
- **Keywords**: "due friday", "scheduled tomorrow"
The parser can extract:
### Priority Levels
- **Keywords**: "high priority", "low priority", "urgent"
- **Symbols**: "!!!" (high), "!!" (medium), "!" (low)
- Dates and times (`tomorrow`, `friday 2pm`, ISO dates)
- Priority terms (`high priority`, `urgent`, symbol patterns)
- Status terms (mapped to your configured statuses)
- Tags (`#tag`)
- Contexts (`@context`)
- Projects (`+project`)
- Time estimates (`2h`, `30min`, `estimate 45m`)
- Recurrence (`daily`, `weekly`, `every monday`)
### Tags
- **Format**: "#tag", "#personal", "#work"
- **Extracted**: Becomes task tags
Exact parsing behavior depends on your TaskNotes NLP settings and trigger configuration.
### Contexts
- **Format**: "@context", "@work", "@home"
- **Extracted**: Becomes task contexts
## Error Responses
### Projects
- **Format**: "+project", "+website-redesign"
- **Extracted**: Becomes task projects
Common errors:
### Time Estimates
- **Format**: "2h", "30min", "estimate 45m"
- **Extracted**: Converted to minutes
- `400`: missing/invalid `text`
- `401`: auth required (if API token is enabled)
- `500`: parse/processing error
### Recurrence
- **Keywords**: "daily", "weekly", "monthly", "every monday"
- **Format**: Converted to RRule format
### Status
- **Keywords**: "done", "completed", "todo", "in-progress"
- **Custom**: Uses your configured status types
### Multi-language Support
The NLP parser supports multiple languages. You can specify the language to use for parsing by providing a `locale` parameter in the request body. The following locales are supported:
- `en` (English)
- `de` (German)
- `es` (Spanish)
- `fr` (French)
- `it` (Italian)
- `ja` (Japanese)
- `nl` (Dutch)
- `pt` (Portuguese)
- `ru` (Russian)
- `sv` (Swedish)
- `uk` (Ukrainian)
- `zh` (Chinese)
If no locale is provided, the parser will default to English.
## Example Inputs
| Input | Extracted |
|-------|-----------|
| `Review PR #123 tomorrow high priority @work` | Title: "Review PR", Tags: ["123"], Contexts: ["work"], Priority: "high", Due: tomorrow |
| `Buy groceries today at 6pm` | Title: "Buy groceries", Scheduled: today 18:00 |
| `Weekly team meeting every monday 10am` | Title: "Weekly team meeting", Recurrence: "weekly", Scheduled: mondays 10:00 |
| `Fix bug estimate 2h high priority @urgent` | Title: "Fix bug", Estimate: 120 min, Priority: "high", Contexts: ["urgent"] |
| `Call mom due friday 2pm #personal` | Title: "Call mom", Due: friday 14:00, Tags: ["personal"] |
## Error Handling
Both endpoints return standard error responses:
Error shape:
```json
{
@ -178,75 +120,56 @@ Both endpoints return standard error responses:
}
```
Common errors:
- **400**: Missing or invalid `text` field
- **401**: Authentication required (if API token configured)
- **500**: Internal server error during parsing or task creation
## Client Examples
## Client Usage
### JavaScript
### JavaScript Example
```javascript
// Parse text only
async function parseTask(text, locale = 'en') {
const response = await fetch('http://localhost:8080/api/nlp/parse', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ text, locale })
async function parseTask(text) {
const response = await fetch("http://localhost:8080/api/nlp/parse", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ text })
});
return response.json();
}
// Parse and create task
async function createTaskFromText(text, locale = 'en') {
const response = await fetch('http://localhost:8080/api/nlp/create', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ text, locale })
async function createTaskFromText(text) {
const response = await fetch("http://localhost:8080/api/nlp/create", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ text })
});
return response.json();
}
```
### Python Example
### Python
```python
import requests
def parse_task(text, locale='en'):
response = requests.post('http://localhost:8080/api/nlp/parse',
json={'text': text, 'locale': locale})
def parse_task(text):
response = requests.post(
"http://localhost:8080/api/nlp/parse",
json={"text": text},
)
return response.json()
def create_task_from_text(text, locale='en'):
response = requests.post('http://localhost:8080/api/nlp/create',
json={'text': text, 'locale': locale})
def create_task_from_text(text):
response = requests.post(
"http://localhost:8080/api/nlp/create",
json={"text": text},
)
return response.json()
```
## Integration Benefits
- **Mobile Apps**: Parse voice-to-text input
- **CLI Tools**: Natural language task creation
- **Chat Bots**: Process user messages
- **Email Integration**: Parse forwarded emails
- **Browser Extensions**: Smart task creation
- **Third-party Apps**: Integrate with existing workflows
## Authentication
If you have an API authentication token configured in TaskNotes settings, include it in requests:
If API auth token is enabled, include bearer token:
```javascript
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your-api-token'
}
```http
Authorization: Bearer YOUR_TOKEN
```
## User Settings Integration
The NLP parser uses your TaskNotes configuration:
- **Custom Status Types**: Your configured statuses
- **Custom Priorities**: Your priority levels
- **Default Behavior**: Scheduled vs due date preferences
- **Task Creation Defaults**: Applied to created tasks

View file

@ -1,56 +1,67 @@
# TaskNotes Privacy Policy
Last updated: February 8, 2026
Last updated: February 21, 2026
## Overview
TaskNotes is an Obsidian plugin that helps you manage tasks within your notes.
TaskNotes is an Obsidian plugin. It stores task data in your local vault files.
## Data Collection and Usage
TaskNotes does not collect, transmit, or share any of your data.
TaskNotes does not include telemetry or analytics collection.
## Data Storage
## Local Storage
Task and note content stays in your local Obsidian vault, and plugin settings are stored in Obsidians local configuration. By default, TaskNotes does not send vault data to external services.
Task and note content stays in your local Obsidian vault.
Plugin settings are stored in Obsidian's local plugin configuration.
## Optional Network Features
TaskNotes is local-first. Network requests occur only when you enable features that require them.
Optional network features:
- OAuth calendar integration (Google/Microsoft): fetches and updates calendar events through provider APIs.
- ICS subscriptions: fetches events from configured ICS URLs.
- Webhooks: sends event payloads to webhook endpoints you configure.
- API docs UI (`/api/docs/ui`): loads Swagger UI assets from `unpkg.com` in your browser.
## OAuth Credentials and Tokens
- OAuth client credentials are configured by you in TaskNotes settings.
- Access and refresh tokens are stored locally on your device.
- You can disconnect providers at any time to revoke TaskNotes access.
## Third-Party Services (When Enabled)
- Google APIs: https://policies.google.com/privacy
- Microsoft APIs: https://privacy.microsoft.com/privacystatement
- Any ICS host or webhook endpoint you configure
## What TaskNotes Does Not Do
- No TaskNotes-hosted cloud sync service
- No remote storage of your vault content by TaskNotes
- No telemetry pipeline sending usage metrics
## Data Deletion
You can stop TaskNotes processing by disabling the plugin, and remove plugin configuration by uninstalling it. Your notes remain in your vault under your control.
You can stop TaskNotes processing by disabling the plugin.
You can remove plugin settings by uninstalling the plugin.
Your notes remain in your vault.
## Network Requests (Optional Features)
## Changes to This Policy
TaskNotes operates locally by default, but includes optional features that make network requests when you enable them:
**Optional network features:**
OAuth calendar integration (Google or Microsoft) uses OAuth 2.0 (with PKCE) to authenticate and stores access/refresh tokens locally on your device. If enabled, TaskNotes fetches calendar events and can update external events when you choose sync actions.
ICS subscriptions fetch event data from URLs you configure. Webhooks send task event payloads to endpoints you configure. License validation sends your license key to Lemon Squeezy for validity checks, caches results locally for 24 hours, and applies a 7-day grace period when validation is temporarily unavailable.
**OAuth Credentials:**
TaskNotes includes bundled OAuth client credentials for quick setup. These app credentials are public identifiers and do not expose your account. Authentication and calendar access are controlled by your user tokens. You can also use your own OAuth credentials in advanced setup.
**Third-Party Services:**
- **Lemon Squeezy**: License validation only (https://www.lemonsqueezy.com/privacy)
- **Google**: OAuth authentication and Calendar API access (https://policies.google.com/privacy)
- **Microsoft**: OAuth authentication and Calendar API access (https://privacy.microsoft.com/privacystatement)
**What we never do:**
TaskNotes does not run analytics/telemetry collection, does not read your notes remotely, and does not store your calendar data on TaskNotes servers. Calendar requests go directly between your device and the provider APIs you connect.
## Changes to Privacy Policy
We may update this policy. Changes will be posted in this file with an updated date.
This policy may be updated. Changes are published in this file with a new date.
## Contact
For questions or concerns about privacy, please open an issue on GitHub:
For privacy questions, open an issue:
https://github.com/callumalpass/tasknotes/issues
## Open Source
## Open Source Verification
TaskNotes is open source software. You can review the code at https://github.com/callumalpass/tasknotes to verify these privacy practices.
TaskNotes is open source. You can inspect the implementation:
https://github.com/callumalpass/tasknotes

View file

@ -33,3 +33,5 @@ Example:
- Fixed a settings Integrations listener lifecycle issue that could accumulate calendar update callbacks while the settings UI is repeatedly opened/re-rendered
- (#1630) Fixed TaskNote inline task cards ignoring centered "Readable line length" layout in Minimal theme by constraining and centering the widget in readable mode
- Thanks to @martin-forge for reporting
- Consolidated documentation cleanup for accuracy and clarity across API, webhook, NLP, privacy, settings, and view docs (corrected outdated endpoint/behavior details, normalized current settings paths, and tightened non-release prose)
- Fixed a broken docs cross-reference from Property Types Reference to Task Properties settings

View file

@ -1,11 +1,11 @@
# Settings
TaskNotes provides settings to customize its behavior and appearance. The settings are organized into tabs, each controlling a different aspect of the plugin.
TaskNotes settings are organized into tabs. Each tab controls a different part of plugin behavior.
## General
The General tab controls how TaskNotes recognizes tasks, where files are stored, and how task cards respond to clicks. This is the best place to start if your vault already has conventions you want TaskNotes to follow, such as custom task tags, property-based identification, or specific folder structures.
The General tab controls task identification, storage locations, and task-card click behavior. Use this tab when your vault already has conventions such as custom tags, property-based identification, or specific folder structures.
For more information, see the [General Settings](settings/general.md) documentation.

View file

@ -1,95 +1,86 @@
# Advanced Settings
These settings provide customization options, such as field mapping, custom status and priority workflows.
## Field Mapping
**Field Mapping** allows you to customize the YAML property names that TaskNotes uses for its internal properties. This can be used for integrating with other plugins or for matching your existing vault structure. You can map all of the core task properties, including title, status, priority, due date, contexts, and projects, as well as other properties like time estimates and recurrence patterns.
## User Fields
**User Fields** allow you to define custom frontmatter properties that appear as filterable options in all TaskNotes views. This feature enables you to extend TaskNotes with your own custom metadata while maintaining full filtering capabilities.
### Creating User Fields
1. Navigate to **Settings → Advanced → Field Mapping**
2. Scroll to the **User Fields** section
3. Click **Add field** to create a new custom property
4. Configure each field with:
- **Property Name**: The frontmatter key (e.g., `effort`, `assignee`)
- **Display Name**: How it appears in filter dropdowns (e.g., "Effort Level", "Assigned To")
- **Type**: Data type that determines available filter operators
### Field Types
**Text**: For string values like names, descriptions, or categories
- Filter operators: is, is not, contains, does not contain, is empty, is not empty
- Example: `assignee: "John Smith"`
**Number**: For numeric values including mixed text-number formats
- Filter operators: is, is not, greater than, less than, equal or greater than, equal or less than, is empty, is not empty
- Example: `effort: 5` or `priority: "2-Medium"` (evaluates as number 2)
**Date**: For date values with natural language support
- Filter operators: is, is not, before, after, on or before, on or after, is empty, is not empty
- Example: `deadline: 2024-12-25` or `review_date: "next week"`
**Boolean**: For true/false values
- Filter operators: is checked, is not checked
- Example: `urgent: true`
**List**: For comma-separated values including wikilinks
- Filter operators: contains, does not contain, is empty, is not empty
- Example: `tags: "work, urgent"` or `related: "[[Project A]], [[Project B]]"`
### Smart List Filtering
User fields of type **List** support comma splitting that preserves:
- **Wikilinks**: `[[Health, Fitness & Mindset]], [[Nutrition]]` correctly splits into two items
- **Quoted text**: `"Focus, Deep Work", Notes` treats quoted content as single items
- **Mixed content**: Handles combinations of wikilinks, quotes, and plain text
![Custom User Fields - List Filtering](../assets/custom-user-fields-list-filter.gif)
### Numeric Field Intelligence
User fields of type **Number** can handle mixed text-number formats, making them perfect for priority systems:
- `"1-Low"` evaluates as number `1`
- `"2-Medium"` evaluates as number `2`
- `"3-High"` evaluates as number `3`
This allows filtering like "Priority greater than 1" to match "2-Medium" and "3-High" while excluding "1-Low".
![Custom User Fields - Numeric Filtering](../assets/custom-user-fields-numeric-filter.gif)
### Instant Availability
User fields become available in the Bases filter/sort/group controls immediately after configuration—no plugin reload required. The fields appear in all TaskNotes views (Task List, Agenda, Kanban, Calendar View) as soon as you save the settings.
## Custom Status System
TaskNotes allows you to define your own **Custom Status Workflows**. You can create as many statuses as you need, and you can customize their names, colors, and completion behavior. You can also set the order in which the statuses appear, which determines the progression of the workflow.
## Custom Priority System
You can also create a **Custom Priority System**. You can define as many priority levels as you need, and you can customize their names, colors, and weights.
> **Note:** In TaskNotes v4.0+, Obsidian's Bases plugin handles priority sorting alphabetically by the priority value. To ensure priorities sort in your desired order, name them to sort alphabetically (e.g., `1-urgent`, `2-high`, `3-medium`, `4-normal`, `5-low`). The weight field is preserved for potential future use but does not affect Bases sorting.
## Pomodoro Timer Settings
You can configure the **Pomodoro Timer** from this section, including the duration of work and break sessions, as well as the notification settings. You can also choose where to store the Pomodoro session data.
### Time Tracking Auto-Stop
**Auto-stop time tracking on task completion** - Automatically stop active time tracking when any task is marked as completed. This ensures that time tracking accurately reflects the work done on tasks without requiring manual intervention. Enabled by default.
**Show notification when auto-stopping time tracking** - Display a notification when time tracking is automatically stopped due to task completion. This provides feedback when the auto-stop feature activates. Disabled by default to avoid notification clutter.
## Field Mapping
The Field Mapping section includes two additional fields for ICS integration:
**ICS Event ID** - Frontmatter field name for storing calendar event identifiers. Default is `icsEventId`. This field maintains the connection between vault content and calendar events.
**ICS Event Tag** - Tag used to identify content created from ICS events. Default is `ics_event`. This tag is automatically added to notes and tasks generated from calendar events.
# Advanced Settings
This page documents advanced configuration patterns that are spread across multiple TaskNotes settings tabs.
## Where Advanced Configuration Lives
TaskNotes v4 uses a 6-tab settings layout:
- `General`
- `Task Properties`
- `Modal Fields`
- `Appearance`
- `Features`
- `Integrations`
There is no separate `Advanced` tab in the current UI.
## Field Mapping
Field mapping controls which frontmatter keys TaskNotes reads and writes for core properties.
Location:
- `Settings -> TaskNotes -> Task Properties`
Use field mapping when:
- You already use different frontmatter key names in your vault.
- You are integrating with other plugins that expect specific keys.
## User Fields
User fields add custom properties that become available in filters, grouping, sorting, and modal forms.
Location:
- `Settings -> TaskNotes -> Task Properties`
Typical fields:
- Text (`client`, `assignee`)
- Number (`effort`, `score`)
- Date (`reviewDate`)
- Boolean (`urgent`)
- List (`labels`, `stakeholders`)
## Status and Priority Workflows
Custom statuses and priorities are configured in Task Properties.
Location:
- `Settings -> TaskNotes -> Task Properties`
Notes:
- Statuses define workflow progression and completion semantics.
- Priority names sort lexicographically in Bases unless your view uses explicit formulas.
## Modal Field Layout
The create/edit modal can be reconfigured to show only relevant fields.
Location:
- `Settings -> TaskNotes -> Modal Fields`
This is useful when your team standardizes a minimal required schema.
## Time Tracking and Pomodoro Controls
Time tracking auto-stop and pomodoro behavior are configured in Features.
Location:
- `Settings -> TaskNotes -> Features`
## ICS-Specific Field Mapping
ICS-related identifiers (`icsEventId`, ICS tag field) are part of field mapping.
Location:
- `Settings -> TaskNotes -> Task Properties`
These fields are used to maintain links between imported calendar events and created notes/tasks.

View file

@ -1,47 +1,58 @@
# Calendar Settings
These settings control the appearance and behavior of the calendar views, as well as the integration with external calendar systems.
Calendar behavior is configured across multiple tabs.
## Default Calendar View
## Settings Map
You can set the **Default View** for the Calendar View, choosing from month, week, day, year, or custom days. You can also configure the **Time Slot Duration** and the **Time Range** that is displayed in the week, day, and custom days views.
### Appearance tab
**Custom view day count** - When using the Custom Days view, this slider controls how many days (2-10) are displayed simultaneously. The default is 3 days, which provides optimal screen space utilization while maintaining detailed scheduling capabilities.
Location:
## Week and Date Settings
- `Settings -> TaskNotes -> Appearance`
You can set the **First Day of the Week** and choose whether to **Show Weekends** in the calendar views.
Controls include:
You can also configure the **Calendar Locale** to change the calendar's language and date formatting. This supports different calendar systems like the Jalali (Persian) calendar by setting the locale to "fa". Leave this field empty to automatically detect your browser's locale.
- Default calendar view mode (month/week/day/year/custom days)
- First day of week and weekend visibility
- Locale and date formatting
- Time slot window (`slotMinTime`, `slotMaxTime`, `slotDuration`)
- Default event visibility toggles (due, scheduled, recurring, time entries, ICS)
- Event stacking and overlap display options
## Event Type Visibility
### Features tab
You can control which types of events are shown by default in the calendar views, including scheduled tasks, tasks with due dates, recurring tasks, time entries, and events from external calendars.
Location:
## Event Display and Stacking
- `Settings -> TaskNotes -> Features`
These settings control how events are displayed when multiple events occur at the same time or on the same day.
Controls include:
**Allow events to overlap** - When enabled, timed events in week and day views can visually overlap each other. When disabled, events are displayed side-by-side with no overlapping.
- Timeblocking enable/disable
- Timeblocking behavior options
**Max stacked events (week/day view)** - Limits how many events can stack horizontally in the week and day views. When exceeded, a "+X more" link appears. Set to 0 for unlimited stacking.
### Integrations tab
**Max events per day (month view)** - Limits how many events are shown per day cell in month view. When exceeded, a "+X more" link appears. Set to 0 for automatic limiting based on cell height.
Location:
**Max event rows per day (month view)** - Limits how many rows of events are shown per day cell in month view. Set to 0 for unlimited rows.
- `Settings -> TaskNotes -> Integrations`
## Timeblocking Features
Controls include:
You can enable or disable the **Timeblocking** feature in the Features tab, which allows you to create and manage timeblocks in the calendar views. When enabled, dragging on a time slot in the calendar view will display a context menu that includes the "Create timeblock" option.
- Google/Microsoft OAuth calendar connections
- ICS calendar subscriptions
- ICS import behavior and note/task creation options
- Automatic ICS export settings
- Google Calendar task export settings
## External Calendar Integration
## Practical Setup Order
You can manage your **ICS Calendar Subscriptions** from this section, including adding, editing, and removing subscriptions. You can also set the refresh interval for remote calendars.
1. Configure baseline calendar display in `Appearance`.
2. Enable timeblocking in `Features` if you schedule focused blocks.
3. Add external calendars in `Integrations`.
4. Validate event visibility in your calendar `.base` view options.
## Content Creation from Events
## Related Docs
These settings control how notes are created from calendar events.
**Default note template** - Template file for notes created from ICS events (leave empty for default format). Specify the path to a markdown template file.
**Default note folder** - Folder for notes created from ICS events (leave empty for vault root). The folder structure will be created if it doesn't exist.
- `docs/features/calendar-integration.md`
- `docs/calendar-setup.md`
- `docs/views/calendar-views.md`

View file

@ -1,43 +1,49 @@
# Misc Settings
These settings control various plugin features and display options that don't fit into other categories.
This page documents settings that do not fit one single workflow category.
## Saved Views button position
## Saved Views Button Position
Choose where the Saved Views button appears in the view header for Task List, Agenda, Kanban, and Calendar Bases views:
Controls where the Saved Views button appears in view headers.
- **Right (default)**: Saved Views sits after the other header controls
- **Left**: Saved Views is placed before the other controls
- `Right` (default)
- `Left`
This setting only changes alignment—the button still opens the same Saved Views picker.
Affects Task List, Agenda, Kanban, and Calendar Bases views.
## Status Bar: Tracked Tasks
## Status Bar
Shows currently tracked tasks in the Obsidian status bar.
**Show tracked tasks in status bar** - Display currently tracked tasks (with active time tracking) in the status bar at the bottom of the app. This provides a quick visual indicator of which tasks are currently being tracked without needing to open the TaskNotes views.
Use this when you want active timer visibility without opening a task view.
## Relationships Widget
**Show relationships widget** - Display the unified widget that surfaces subtasks, parent projects, and blocking relationships in the editor. Disable this if you prefer to open the `relationships.base` file in a separate pane instead of embedding it in notes.
Shows or hides the inline relationships widget in notes.
## Task Display
The widget surfaces:
**Hide completed tasks from overdue** - Control whether completed tasks appear as overdue in the agenda view. When enabled (default), completed tasks will not appear in the "Overdue" section of the agenda view, even if their due or scheduled date has passed. This setting affects task grouping and overdue detection throughout the plugin, helping keep overdue lists focused on actionable items.
- Subtasks
- Parent project links
- Blocking and blocked-by relationships
## Hide Completed from Overdue
When enabled, completed tasks are not shown in overdue sections even if their dates are in the past.
## Subtask Chevron Position
Configure where the expand/collapse chevron appears on project task cards and inside the Relationships widget.
Controls chevron placement for expandable subtasks.
- Right (default): The chevron appears on the right-hand side and shows on hover.
- Left (match group chevrons): The chevron appears on the left-hand side, always visible, matching group chevrons.
- Right (default)
- Left (matches group chevrons)
Demo:
## Disable Note Indexing
![Left subtask chevron](../assets/left-task-subtask-chevron.gif)
Disables indexing of non-task notes to reduce indexing overhead in large vaults.
## Performance Settings
Trade-off:
**Disable note indexing** - Disable indexing and caching of non-task notes to improve performance in large vaults. Note: This will disable the Notes view and notes display in the Agenda view. Requires plugin restart to take effect.
This setting is useful for large vaults where performance may be impacted by indexing many notes. When enabled, TaskNotes will only index and track task files, which can significantly improve performance but will disable some features that depend on note content.
- Task workflows remain available.
- Features that rely on non-task note indexing (for example note/date lookups used by note-oriented UI elements) will have reduced functionality.
- Plugin reload/restart is recommended after changing this setting.

View file

@ -337,7 +337,7 @@ For example, if you map `due` to `dueDate`, TaskNotes will expect:
dueDate: "2025-01-15"
```
See [Field Mapping](task-properties.md#field-mapping) for configuration details.
See [Task Properties settings](task-properties.md) for configuration details.
---

View file

@ -258,7 +258,7 @@ Storing title in filename favors path-readable tasks and external tooling that k
## Default Reminders
Configure default reminders in **Settings → Task Properties → Reminders**. These reminders automatically apply to new tasks.
Configure default reminders in `Settings -> TaskNotes -> Task Properties` (Reminders card). These reminders automatically apply to new tasks.
Default reminders apply to all new tasks and can be supplemented with per-task reminders.
### Reminder Types
@ -272,7 +272,7 @@ Default reminders apply to all new tasks and can be supplemented with per-task r
### Configuration
1. Navigate to Settings → TaskNotes → Task Properties
1. Navigate to `Settings -> TaskNotes -> Task Properties`
2. Expand the Reminders card
3. In the Default Reminders section, select type (Relative or Absolute)
4. Configure timing and optional description

View file

@ -10,13 +10,13 @@ When debugging, start with the smallest reproducible scenario: one affected task
**Symptoms**: TaskNotes views show errors or don't display tasks
First confirm Bases is enabled (Settings → Core Plugins → Bases), then restart Obsidian once. If views are still missing, verify `.base` files exist in `TaskNotes/Views/`. If needed, regenerate defaults from Settings → TaskNotes → Integrations → **Create default files**.
First confirm Bases is enabled (`Settings -> Core Plugins -> Bases`), then restart Obsidian once. If views are still missing, verify `.base` files exist in `TaskNotes/Views/`. If needed, regenerate defaults from `Settings -> TaskNotes -> Integrations` (`Create default files`).
### Commands Open Wrong Files
**Symptoms**: Ribbon icons or commands open unexpected files
Check command mappings in Settings → TaskNotes → Integrations → View Commands. Reset mappings that were changed unintentionally, then verify each referenced `.base` file exists at the configured path.
Check command mappings in `Settings -> TaskNotes -> General` (`View Commands`). Reset mappings that were changed unintentionally, then verify each referenced `.base` file exists at the configured path.
## Common Issues
@ -48,7 +48,7 @@ Reduce visible event layers first (scheduled/due/recurring/time entries), then i
**Symptoms**: Natural language input doesn't extract expected task properties
Enable NLP in Settings → TaskNotes → Features, then verify your trigger characters (`@`, `#`, `!` by default) and any custom status/priority mappings. If parsing still seems inconsistent, compare input against the syntax in [NLP API](nlp-api.md).
Enable NLP in `Settings -> TaskNotes -> Features`, then verify your trigger characters (`@`, `#`, `!` by default) and any custom status/priority mappings. If parsing still seems inconsistent, compare input against the syntax in [NLP API](nlp-api.md).
### Time Tracking Issues
@ -88,7 +88,7 @@ To improve loading times, reduce external calendar subscriptions, increase ICS r
**Symptoms**: Google Calendar or Microsoft Outlook won't connect
Verify credentials and redirect URI (`http://localhost:42813/callback`) exactly, ensure app publication/test-user access is correct, and retry after disconnecting. Also check popup blockers. For provider-specific setup details, use [Calendar Setup](calendar-setup.md).
Verify credentials and loopback redirect configuration (`127.0.0.1` with dynamic local port), ensure app publication/test-user access is correct, and retry after disconnecting. Also check popup blockers. For provider-specific setup details, use [Calendar Setup](calendar-setup.md).
### OAuth Calendar Not Syncing

View file

@ -7,7 +7,7 @@ For details on Bases integration and how to enable it, see [Core Concepts](core-
## Task-Focused Views
Task-focused views are different entry points into the same underlying task notes. The [Task List View](views/task-list.md) is usually the best default for day-to-day planning because it exposes filters, sorting, and grouping in a straightforward list format.
Task-focused views are different entry points into the same underlying task notes. The [Task List View](views/task-list.md) is a common starting view for day-to-day planning because it exposes filters, sorting, and grouping in list format.
When you want workflow by status, [Kanban View](views/kanban-view.md) organizes cards into columns and can optionally add swimlanes for an extra organizational layer. [Calendar Views](views/calendar-views.md) are useful when schedule and timing matter more than backlog shape, with month/week/day/year/list modes plus drag-and-drop scheduling and time-block support.

View file

@ -1,61 +1,18 @@
# Notes View
# Notes View (Legacy)
The Notes View displays your vault's non-task notes organized by date, providing a chronological view of your notes for the selected day.
This page documents the legacy Notes View from earlier TaskNotes versions.
## What Notes Are Included
## Current Status
The Notes View shows **non-task notes** that meet specific criteria:
In current v4 Bases-first workflows, Notes View is not part of the default view command/file set.
### Inclusion Criteria
Use these v4 alternatives instead:
- **Markdown files** (`.md` extension)
- **Non-task notes** (don't contain the task tag in frontmatter)
- **Date-matched notes** for the selected day
- **Not in excluded folders** (configurable in settings)
- **Note indexing enabled** (performance setting)
- `views/calendar-views.md` for schedule-centric planning
- `views/agenda-view.md` for list-style near-term planning
- `views/default-base-templates.md` to customize `.base` files
### Date Detection
## Legacy Behavior Reference
Notes are associated with dates through:
1. **Frontmatter fields**: `dateCreated` or `date`
2. **Filename patterns**: YYYY-MM-DD format in the filename
3. Only notes matching the selected date appear
### Exclusions
Notes are excluded if they:
- Are task files (contain the configured task tag)
- Are in excluded folders (Templates, Archive, etc.)
- Have note indexing disabled (performance optimization)
- Don't have a date or the date doesn't match the selected day
## Interface Layout
The Notes View consists of:
- **Date navigation header** - Navigate between dates to view notes for different days
- **Note cards list** - Displays all qualifying notes for the selected date
- Each note card shows the note's title, path, and relevant metadata
## Note Actions
**Click to open**: Click on any note card to open the note in the current pane.
## Settings That Affect Notes View
Several settings control what appears in the Notes View:
- **Note indexing** (Settings > Performance > "Disable note indexing")
- When disabled, no notes appear in this view
- **Excluded folders** (Settings > General > "Excluded folders")
- Comma-separated folder paths to exclude from indexing
- **Task tag** (Settings > General)
- Notes with this tag are treated as tasks and excluded from Notes view
## Performance Considerations
For large vaults, you can:
- Disable note indexing entirely to improve performance
- Add frequently-changing folders (like Templates) to excluded folders
- Note that disabling note indexing will hide the Notes view entirely
Historically, Notes View listed non-task notes by date using note indexing.
If you are migrating older docs or saved workflows, verify behavior in your current plugin version before relying on this page.

View file

@ -15,14 +15,14 @@ Task List is implemented as a `.base` file located in `TaskNotes/Views/tasks-def
Bases is an official Obsidian core plugin built directly into Obsidian (not a community plugin). It provides a framework for creating database views of notes and tasks.
To enable Bases:
1. Open Settings → Core Plugins
1. Open `Settings -> Core Plugins`
2. Enable "Bases"
3. TaskNotes view commands will now open `.base` files from `TaskNotes/Views/`
If commands open empty or unexpected views, first confirm Bases is enabled and the command path points to the intended `.base` file.
### View File Location
When you use the "Open Tasks View" command or ribbon icon, TaskNotes opens the `.base` file configured under **Settings → TaskNotes → General → View Commands** (initially `TaskNotes/Views/tasks-default.base`). The default file is created automatically the first time you use the command, and you can point the command to any other `.base` file if you maintain multiple task-list layouts.
When you use the "Open Tasks View" command or ribbon icon, TaskNotes opens the `.base` file configured under `Settings -> TaskNotes -> General` (`View Commands`) (initially `TaskNotes/Views/tasks-default.base`). The default file is created automatically the first time you use the command, and you can point the command to any other `.base` file if you maintain multiple task-list layouts.
## Configuration
@ -96,7 +96,7 @@ TaskNotes properties are accessed in Bases YAML using these paths:
| Created | `file.ctime` | File creation date |
| Modified | `file.mtime` | File modification date |
The exact property names depend on your TaskNotes field mapping settings (Settings → Advanced → Field Mapping). The table above shows the default mappings.
The exact property names depend on your TaskNotes field mapping settings (`Settings -> TaskNotes -> Task Properties`). The table above shows default mappings.
## Filtering and Sorting
@ -233,7 +233,7 @@ The v3 FilterBar UI component no longer exists - all configuration is done throu
The Task List View provides interaction with tasks through clicking and context menus:
- **Click on a task**: Opens the task for editing or navigates to the task note (behavior configured in Settings → General → Click Actions)
- **Click on a task**: Opens the task for editing or navigates to the task note (behavior configured in `Settings -> TaskNotes -> General` in click-action controls)
- **Right-click on a task**: Opens a context menu with actions:
- Mark as complete
- Change priority

File diff suppressed because it is too large Load diff

View file

@ -62,7 +62,6 @@ nav:
- Views:
- Overview: views.md
- Task List View: views/task-list.md
- Notes View: views/notes-view.md
- Agenda View: views/agenda-view.md
- Kanban View: views/kanban-view.md
- Calendar Views: views/calendar-views.md
@ -73,12 +72,15 @@ nav:
- General: settings/general.md
- Features: settings/features.md
- Task Properties: settings/task-properties.md
- Modal Fields: settings/modal-fields.md
- Property Identification: settings/property-identification.md
- Property Types Reference: settings/property-types-reference.md
- Defaults & Templates: settings/defaults.md
- Task Defaults: settings/task-defaults.md
- Appearance & UI: settings/appearance.md
- Inline Task Settings: settings/inline-task-settings.md
- Calendar Settings: settings/calendar-settings.md
- Misc Settings: settings/misc-settings.md
- Integrations: settings/integrations.md
- Advanced Settings: settings/advanced-settings.md
- APIs & Integration: