Files
obsidian-gui-tasks/README.md
2026-03-29 10:16:33 -04:00

2.6 KiB

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 #### Tasks heading
  • 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

  1. Copy (or symlink) this repo into your vault's .obsidian/plugins/yaotp/ directory.
  2. Enable the plugin in Settings → Community Plugins.
  3. Obsidian will hot-reload the plugin when main.js changes 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