a87964d2ed2fd5bd692f800a64e404541a7ed130
Obsidian GUI Tasks
A plugin for Obsidian that provides a task management GUI for designated markdown files. Instead of editing raw markdown, you interact with a clean task list interface while all changes persist as standard - [ ] / - [x] checklist items.
Features
- Custom task view for any markdown file matching a configurable pattern (default:
Tasks/*.md) - Drag-and-drop task reordering (desktop and mobile long-press)
- Task editing modal for text, notes, and moving tasks between files
- File switcher header bar to navigate between task lists
- Completing a task moves it to today's Daily Note under a
#### Tasksheading - All state stored as plain markdown — no database, no lock-in
Requirements
- Obsidian 1.4.0 or later
- Obsidian's built-in Daily Notes plugin (for task completion)
Development
Setup
npm install
Watch mode
npm run dev
This starts esbuild in watch mode. It bundles src/main.ts to main.js with inline source maps and re-bundles on every file change.
Load in Obsidian
- Copy (or symlink) this repo into your vault's
.obsidian/plugins/yaotp/directory. - Enable the plugin in Settings → Community Plugins.
- Obsidian will hot-reload the plugin when
main.jschanges while in watch mode.
Production Build
npm run build
This runs TypeScript type-checking followed by a minified esbuild bundle with no source maps. The output is main.js, ready to ship.
Configuration
Plugin settings are available under Settings → YAOTP — Task Manager:
| Setting | Default | Description |
|---|---|---|
| Inbox file | Tasks/Inbox.md |
Default file opened on plugin load |
| Task file regex | ^Tasks\/.*\.md$ |
Pattern that identifies task files |
| Daily note date format | YYYY-MM-DD |
Moment.js format matching your Daily Notes setup |
| Daily note folder | (vault root) | Folder where daily notes are created |
Project Structure
src/
├── main.ts # Plugin entry point
├── types.ts # Task type definition
├── parser.ts # Markdown ↔ Task[] serialization
├── settings.ts # Settings interface and UI tab
├── constants.ts # Shared constants
├── daily-notes.ts # Daily Notes integration
├── file-intercept.ts # Redirects task file opens to custom view
└── view/
├── TaskFileView.ts # Main view (extends TextFileView)
├── TaskListComponent.ts # Sortable task list renderer
├── TaskEditorModal.ts # Task edit modal and file picker
└── FileSwitcherBar.ts # File switcher header bar
Description
Languages
JavaScript
92.2%
TypeScript
6.8%
CSS
1%