Move Done Down
approvedby Mihanentalpo@yandex.ru
Move completed top-level Markdown task blocks down before the completed-task tail. - This plugin has not been manually reviewed by Obsidian staff.
Move Done Down
Move Done Down is an Obsidian plugin that moves completed top-level Markdown task blocks down in the current note.
It is built for task lists where finished items should naturally collect near the bottom while active tasks stay easier to scan.
Features
- Moves fully completed top-level task blocks below active content.
- Keeps nested task blocks together with their parent task.
- Treats a parent task as movable only when all nested task items inside the block are also completed.
- Can insert newly moved tasks before an existing completed-task tail at the bottom of the note.
- Preserves line endings, final newlines, trailing blank lines, and non-task text.
- Supports custom completion markers.
- Works on desktop and mobile.
Usage
Run the command:
Move completed top-level tasks down
Example:
- [ ] Active task
- [x] Finished task
- [ ] Another active task
becomes:
- [ ] Active task
- [ ] Another active task
- [x] Finished task
Nested task blocks are moved together. A completed parent with an active child is left in place:
- [ ] Prepare release
- [x] Update documentation
- [x] Add installation notes
- [x] Add settings section
- [x] Review pull request
- [ ] Check mobile behavior
- [ ] Publish release
becomes:
- [ ] Prepare release
- [x] Review pull request
- [ ] Check mobile behavior
- [ ] Publish release
- [x] Update documentation
- [x] Add installation notes
- [x] Add settings section
When the note already ends with completed tasks, newly completed blocks are inserted above that existing completed-task tail:
- [ ] Plan next version
- [x] Write changelog
- [ ] Check translations
- [x] Older completed task
- [x] Another older completed task
becomes:
- [ ] Plan next version
- [ ] Check translations
- [x] Write changelog
- [x] Older completed task
- [x] Another older completed task
The plugin edits the current Markdown editor content directly. If you are using it on important notes, keep Obsidian file recovery, Sync version history, or Git available.
Settings
Done markers
Comma-separated one-character markers treated as completed.
Default:
x,X,v,V,-
This means all of these are considered completed:
- [x] Done
- [X] Done
- [v] Done
- [V] Done
- [-] Done
Space is not allowed as a completed marker.
Insert moved tasks before old completed tail
When enabled, existing completed tasks already collected at the bottom stay at the bottom, and newly moved tasks are inserted above them.
When disabled, completed tasks are moved to the end of the note.
Show notices
Controls whether the plugin shows a notice after running the command.
Languages
The plugin follows the current Obsidian app language when possible.
Supported languages:
- English
- Russian
- Simplified Chinese
- German
- French
- Spanish
Unsupported languages fall back to English.
Installation
From Obsidian Community Plugins
Once the plugin is published:
- Open Obsidian Settings.
- Go to Community plugins.
- Search for
Move Done Down. - Install and enable the plugin.
Manual installation
Download the release files from GitHub:
main.jsmanifest.jsonstyles.css
Copy them into:
<your-vault>/.obsidian/plugins/move-done-down/
Then reload Obsidian and enable the plugin in Community plugins.
Development
Install dependencies:
npm install
Run tests:
npm test
Run lint:
npm run lint
Build the plugin:
npm run build
The build creates main.js. It is ignored by git because GitHub Releases attach the compiled plugin files as release assets.
Release
For a public release, create a Git tag that exactly matches the version in manifest.json, for example:
git tag 0.1.3
git push origin 0.1.3
The release workflow builds the plugin, runs tests, and uploads:
main.jsmanifest.jsonstyles.css
Obsidian installs plugin files from GitHub release assets, not from the source tree.
License
MIT
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.