Update README coverage for board dashboard, saved views, global defaults, nested subtasks, and current release workflow. Assisted-by: Codex <codex@openai.com> |
||
|---|---|---|
| .claude/skills | ||
| .github/workflows | ||
| specs | ||
| src | ||
| test-vaults/obsidian-plugin-dev | ||
| tools | ||
| .editorconfig | ||
| .eslintignore | ||
| .eslintrc | ||
| .gitignore | ||
| .npmrc | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| esbuild.config.mjs | ||
| LICENSE | ||
| MAINTAINABILITY.md | ||
| manifest.json | ||
| package-lock.json | ||
| package.json | ||
| README.architecture.md | ||
| README.development.md | ||
| README.md | ||
| README.planning.md | ||
| README.process.md | ||
| styles.css | ||
| svelte.config.js | ||
| tmp_commit_msg | ||
| tsconfig.json | ||
| version-bump.mjs | ||
| versions.json | ||
| vite.config.ts | ||
Task List Kanban
Task List Kanban is a free, open source Obsidian plugin that turns Markdown tasks from your vault into a kanban board. Tasks stay in their original files, and changes made from the board are written back to Markdown.
Use it to:
- collect tasks from one folder, selected folders, or the whole vault
- move tasks between columns with tags
- manage multiple boards from a dashboard and board rail
- edit, complete, cancel, archive, duplicate, and bulk-update tasks
- filter by content, tag, file, or date with a single search query
- save reusable views that combine filters, sorting, grouping, layout, and width
- group tasks into swimlanes by file or tag, then flip group order to put the lanes you need first
- sort tasks by file order, parsed task properties, or manual pinned order
- display, sort, group, and edit Tasks Plugin or Dataview date metadata
- keep nested Markdown blocks attached to their parent cards when you want subtasks
Getting Started
Create a Board
Click the New Kanban board ribbon icon, run Create new kanban board from the command palette, or open the dashboard and choose New board. Each flow lets you choose the destination folder.
You can also right-click the folder where you want the board file, then choose New kanban.
Dashboard And Board Rail
Open the dashboard from the board rail or run Show board dashboard while a kanban view is focused. The dashboard lists every board in the vault, shows task counts plus updated/opened timestamps, and lets you create or switch boards without hunting through files.
From the dashboard, right-click a board card to rename, hide, show, or delete that board. Delete asks for confirmation and moves the board file through Obsidian's trash flow. Drag cards to choose the dashboard order; hidden boards move under Other boards instead of becoming inaccessible.
When your vault has more than one board, the board rail gives one-click board switching. Drag rail items to reorder boards. In plugin settings, dock the rail on the left or across the top; the left rail can also be resized.
Add Tasks
Create Markdown tasks in any included file:
- [ ] Write release notes #this-week
Task List Kanban supports the standard Markdown task bullets -, *, and +.
Tasks without a column tag appear in Uncategorized. To place a task in a column, either add the column tag in Markdown or drag the task to that column on the board. Placement tags are hidden from task cards so the board stays clean.
Click Add new at the bottom of a column to create a task from the board. If a default or recently used task file is available, the input opens immediately; otherwise, choose a file first.
Board Configuration
Open board settings with the settings icon in the top-right corner.
Board settings inherit from plugin-wide board defaults unless the board has its own override. In the settings modal, inherited fields can be pinned to freeze the current board value, or reset so the board follows the defaults again. The command palette also includes Use current board settings as global defaults and Prune board settings that match the defaults for keeping older boards tidy.
Plugin settings include:
- Board rail: choose whether the board rail docks left or top.
- Board defaults: set default columns, status markers, scope, tag display, property behavior, and nested subtask behavior for boards that do not override those fields.
- Default view: set plugin-wide defaults for flow direction and card width.
- Global saved views: create reusable views available from every board.
Scope
Choose which files feed the board:
- Same as board folder: files beside the kanban file.
- Every folder: the whole vault.
- Selected folders: specific vault-relative folders. The board's own folder is always included.
Use Excluded paths to omit directories or files after scope is applied. The board's own folder cannot be excluded directly, but its subdirectories can.
Columns
Use the Columns section to rename, color, remove, and reorder custom columns. Uncategorized and Done stay fixed at the top and bottom of the settings list, with separate visibility and name controls.
Column matching options:
- Name matching: a column named
In Progressmatches tags such as#InProgress,#in-progress, and#In-Progress. - Explicit tag matching: configure one or more required tags for a column. A column with
status/activeandproject/alphamatches only tasks with both tags. - Status marker matching: configure a column to match an active checkbox marker such as unchecked
[ ], in-progress[/], or blocked[!]. Moving a task into that column updates the checkbox marker. - Priority matching: configure a column to match Tasks Plugin or Dataview priority metadata when a property schema is enabled. Moving a task into that column writes the matching priority value.
- Updating changed match rules: settings can optionally update existing tasks when a name-matched column is renamed, an explicit tag mapping changes, a status marker mapping changes, or a priority mapping changes.
Column display options:
- Colors: add a hex color like
#FF5733to show a color bar on the column and its cards. - Width: set all columns between 200px and 600px.
- Visibility: show Uncategorized and Done always, never, or only when non-empty.
Tag Display
Enable Consolidate tags in settings to move non-column tags to the card footer.
The Excluded tags setting hides configured tags from cards, tag grouping, and consolidated tag footers. A settings button can automatically exclude all tags mapped to active columns.
Layout
Flow direction controls how columns are arranged:
- Left to right: horizontal board, scrolling right.
- Right to left: horizontal board in reverse order.
- Top to bottom: transposed board, with board columns as rows and cards flowing horizontally.
- Bottom to top: transposed board in reverse row order.
Card width can be adjusted from the view controls between 200px and 600px.
Obsidian Tasks plugin / Dataview integration
Enable a Property schema in settings to read and write task metadata from the Obsidian Tasks plugin or Dataview inline fields.
Task List Kanban can display, sort, group, and edit metadata from either integration while keeping each task in its source Markdown format.
- Obsidian Tasks plugin: due, scheduled, start, done, created, priority, and recurrence metadata.
- Dataview: due, scheduled, start, done, completion, created, priority, repeat, and arbitrary inline fields.
The Show properties setting controls whether parsed metadata appears on task cards:
- None: leave parsed properties inline as task text.
- Pretty: show formatted property values, with Tasks plugin dates and priorities using familiar labels and icons.
- Debug (JSON): show the raw parsed data for troubleshooting schemas and unusual task lines.
When the schema is Tasks Plugin or Dataview, task cards show a compact + Date control. Use it to set or clear due, scheduled, and start dates directly from the board. New tasks created from the board can include the same dates.
Date writes use the selected integration's native format:
- [ ] Send invoice 📅 2026-06-15 ⏳ 2026-06-16 🛫 2026-06-17
- [ ] Send invoice [due:: 2026-06-15] [scheduled:: 2026-06-16] [start:: 2026-06-17]
Completing an open task from the board adds a completion date when the selected schema supports it and the task does not already have one:
- [x] Send invoice ✅ 2026-06-15
- [x] Send invoice [completion:: 2026-06-15]
Existing completion dates are preserved. Reopening, moving, cancelling, archiving, or editing a task does not remove or rewrite historical completion metadata.
Nested Tasks And Source Blocks
Enable Treat nested tasks as subtasks to show only the root task as a card while keeping nested tasks and notes inside that card. Nested rows can be edited, status-cycled, added, deleted, and reordered from the card without turning each child task into its own board card.
When this mode is on, source-block actions stay together: moving, duplicating, deleting, or archiving the parent card operates on the owned nested Markdown block instead of only the first task line.
Task Status Settings
Task status visuals come from your active Obsidian theme or plugin CSS.
Status marker settings control how checkbox characters behave:
- Status marker order: controls how status markers sort and group when using status as a parsed property.
- Done markers: characters treated as complete. Default:
xX. - Ignored markers: characters hidden from the board entirely. Default: empty.
- Cancelled markers: characters used by cancel/restore. Default:
-. - Status cycle sequence: characters used to advance the task status when clicking the checkbox on the board.
Examples:
xXrecognizes[x]and[X]as done.xX✓also recognizes[✓].- ignored marker
-hides[-]tasks.
Cancel and restore only change checkbox markers. If a cancelled marker is also configured as ignored or done, that marker setting determines whether the task is hidden or treated as complete.
Board Controls
Column Controls
- Collapse: collapse columns from the board header; collapse state is saved.
Task Actions
- Edit: click task text, edit inline, then click away or press Enter.
- Move: drag a task to another column, or choose a column from the task menu.
- Complete / Cycle Status: click the task checkbox to mark a task done and move it to Done. If a status cycle sequence is configured, clicking the checkbox will instead advance the task status through the specified sequence.
- Cancel or restore: use the task menu to switch between cancelled and active.
- Archive: archive tasks from the task menu or bulk menu. This marks open tasks done and adds the
#archivedtag. - Duplicate: duplicate a task directly below the original source line.
- Open source file: click the file path or arrow icon on a card.
- Add card: run Add card from the command palette to create a card on a visible board without first opening that board.
Sorting
Use the Sort dropdown in the board header to order tasks within each column:
- File order: use natural order from Markdown files.
- Task name: sort lexicographically by task text.
- Property sorting: sort by parsed task properties such as dates or priorities when a property schema is enabled.
- Manual: drag one task within a column to pin a custom order.
Manual sorting keeps pinned tasks together at the top of the column. Pinned cards show a pin marker; click it to unpin the task and return it to the file-order tail. When a task is first pinned, the plugin will add an Obsidian block link like ^abc123 to the source line unless one already exists, so the order survives text edits and reloads.
Manual drag reordering is available when the board is not grouped. When grouping is active, saved manual order still displays, but the Manual sort option is readonly until grouping is turned off because relative order would not be stable across different groupings.
Filters
The search bar above the board filters tasks with a single query. A query is a space-separated list of tokens, and a task must match every token:
| Token | Filters by | Example |
|---|---|---|
word or "quoted phrase" |
content contains the term (case-insensitive) | fix, "big rocks" |
tag:x or tag:x,y |
task has the tag; a comma list matches any listed tag | tag:home,errand |
file:x or file:x,y |
file path contains any listed entry (case-insensitive) | file:projects |
due:<$TODAY |
date property compared to a date | due:<=2026-07-04 |
Details:
- Everything is AND-ed:
fix tag:home file:projects due:<$TODAYkeeps tasks containing "fix", taggedhome, in a file path containing "projects", due before today. There is no OR across tokens and no negation. - Repeated
tag:tokens AND together, sotag:home tag:errandrequires both tags, whiletag:home,errandmatches either. Repeatedfile:tokens merge into one "any of" list. - Quote values containing spaces:
file:"weekly notes". - Date tokens use a date-typed property key from the active property schema (such as
due,scheduled,start,done,created) with an operator (<,<=,=,>=,>) and either aYYYY-MM-DDdate or$TODAY, which re-evaluates at midnight. Tasks without the referenced property are never hidden by a date token. - A token that doesn't parse as a filter (an unknown prefix like
note:or a bad date value) is treated as plain content text.
Filtering applies when you press Enter. As you type, suggestions appear for the token under the caret — tag names, file paths, date keys and operators, and query-only saved view names. The sliders icon expands a structured editor under the bar; it and the bar are two views of the same query, so edits in either stay in sync. Filters persist per board.
Saved views live in the expanded view controls. A saved view can capture the current filter, sort, grouping, flow direction, and card width. Save one with an optional name, click it to apply its stored view properties, or delete a board-local saved view with the × control. Query-only saved views also appear as search bar suggestions, so the older saved-filter workflow is still there in a more general form. Global saved views are read-only from the board and can be edited from plugin settings.
Bulk Actions
Each column header has a Done / Select toggle.
- Done mode: cards complete tasks.
- Select mode: cards select tasks for bulk actions.
After selecting tasks, use the column bulk menu to move, complete, cancel, restore, archive, duplicate, or delete them. Selected-card command palette actions are also available for marking done, cancelling, archiving, duplicating, and deleting. Dragging one selected task moves all selected tasks in that column.
Grouping And Swimlanes
Use Group by in the board header to split tasks into swimlanes.
- In horizontal layouts, groups appear as board-wide swimlane rows.
- In vertical layouts, groups appear as columns across the top of the transposed grid.
- Use the group direction control to switch grouped boards between ascending and descending group order.
- Dragging tasks between swimlanes updates the relevant file, tag, or property.
Group and column headers stay visible while scrolling grouped boards, making large swimlane views easier to scan.
Group By File
Tasks are grouped by source Markdown file.
Group By Tag
Tasks are grouped by tag, optionally limited to a configured prefix.
- Use the include list in the grouping controls to show only specific tag swimlanes. Included swimlanes keep the configured order, and tasks without an included grouping tag appear in Unassigned.
Group By Property
When a Tasks Plugin or Dataview property schema is enabled, tasks can also be grouped by parsed properties. Date groups support Combine past dates so overdue dates can collapse into one past bucket.
Saved views replace the older saved grouping workflow and can reuse common grouping setups, including tag prefixes, include lists, property groups, group direction, and the surrounding layout.
Screenshot Refresh Candidates
The current README still uses older screenshots. Useful new or replacement screenshots would be:
- the main board screenshot, showing current card footers, properties, and the + Date control
- the board dashboard and rail, showing board counts, updated/opened metadata, and Other boards
- the saved views controls, showing combined filter/sort/group/flow/width saved views
- plugin settings, showing board defaults, default view, global saved views, and board rail dock
- the task date editor, showing due, scheduled, and start date inputs on a card
- a grouped Top to bottom or Bottom to top board, showing the transposed grid with board columns as rows and groups across the top
- the Task properties settings section, showing Property schema and Show properties
- the Status markers settings section, showing status marker order alongside done, ignored, and cancelled markers
Development
Prerequisites
- Node.js
- npm
- Obsidian for manual testing
Setup
npm install
npm run dev
Build output is written to the repository root for Obsidian plugin loading.
Quality Checks
npm run build
npm test
npm run build runs TypeScript checking and a production ESBuild bundle. npm test runs the Vitest suite.
Manual Testing
Deploy to the vendored test vault:
./tools/deploy_for_manual_test.sh
This copies the built plugin into test-vaults/obsidian-plugin-dev/.obsidian/plugins/task-list-kanban/. You can pass a target directory to deploy somewhere else.
Release
-
Bump the version:
npm run version -
Commit the version changes, create an annotated tag, then push
mainand the tag. -
Wait for GitHub Actions to create the draft release with built assets.
-
Edit and publish that draft from the releases page.
Do not create a release draft manually with gh release create or the GitHub UI; the automated draft is the one with the correct assets.