# YAOTP — Yet Another Obsidian Task Plugin A plugin for [Obsidian](https://obsidian.md) that provides a Todoist-like task management UI 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 ```bash npm install ``` ### Watch mode ```bash 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 ```bash 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 ```