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

77 lines
2.6 KiB
Markdown

# Obsidian GUI Tasks
A plugin for [Obsidian](https://obsidian.md) 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
```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
```