wxjett238 downloadsMove completed tasks into a customizable Done section with nested task filtering, auto mode, and Tasks plugin support.
An Obsidian plugin that moves completed checkbox tasks — including their indented sub-tasks — into a customizable Done section of the same note.
🌍 Languages: English (this page) · Deutsch · 简体中文 The plugin interface follows Obsidian's UI language: English by default, German when Obsidian is set to German, and Simplified Chinese when Obsidian is set to Chinese.

#task. The filter applies to auto mode, Move completed tasks to Done,
and Move selection to Done.✅ YYYY-MM-DD to each moved, checked
line (no duplicate dates).### Done behavior, or enter
a full Markdown heading such as # Completed to choose its level. An
existing heading with the same title is reused.| Setting | Description | Default |
|---|---|---|
| Auto mode | Move completed tasks automatically | off |
| Done heading | Target heading. Plain text creates ###; a Markdown heading keeps its level. |
Done |
| Task filter | Text a task must contain before it can move; empty disables filtering. | empty |
| Append completion date | Append a ✅ date to moved lines |
on |
| Excluded folders/files | Vault paths (one per line) where auto mode stays inactive | empty |
#task, should move.data.json inside your vault's
configuration folder.npm ci
npm test # unit tests (Vitest)
npm run build # produces main.js
For normal installation, download main.js and manifest.json from the
matching GitHub Release. Copy them into
<Vault>/.obsidian/plugins/smart-done-mover/, then enable the plugin under
Settings → Community plugins.
For development you can use the project folder directly as the plugin folder
(npm run dev for a watch build).
Pushing a git tag triggers the GitHub Actions workflow in
.github/workflows/release.yml, which builds the plugin and attaches
main.js and manifest.json to a new GitHub release. Make sure the tag
matches the version in manifest.json.
| File | Purpose |
|---|---|
main.ts |
Plugin class: commands, context menu, auto mode |
src/taskParser.ts |
Markdown parsing, section and block detection |
src/mover.ts |
Pure move logic (moveCompletedTasks, moveSelectedTasks) |
src/settings.ts |
Settings UI |
src/exclusions.ts |
Path-exclusion matching for auto mode |
src/i18n.ts |
UI string localization (English / German / Simplified Chinese) |
src/types.ts |
Shared types and defaults |
src/*.test.ts |
Unit tests |
taskParser.ts, mover.ts and exclusions.ts have no Obsidian dependencies,
so they are unit-testable without a running Obsidian instance.
Smart Done Mover is an independent project based on To-Do to Done Mover by DonnervS. It retains the original MIT license.