77 lines
2.7 KiB
Markdown
77 lines
2.7 KiB
Markdown
# 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
|
|
```
|