Checkbox Sort

by mattang687
5
4
3
2
1
Score: 24/100

Description

The Checkbox Sorter plugin automatically moves completed checklist items to the bottom of their respective groups while maintaining the original structure of nested lists. When a checkbox is marked as done, the plugin intelligently reorders only its immediate peers, keeping child items correctly nested and unrelated lists unaffected. It offers flexible control through global settings, YAML frontmatter, or inline list markers, so you can fine-tune behavior at the vault, file, or list level.

Reviews

No reviews yet.

Stats

8
stars
1,398
downloads
2
forks
367
days
318
days
318
days
2
total PRs
1
open PRs
0
closed PRs
1
merged PRs
4
total issues
4
open issues
0
closed issues
0
commits

Latest Version

10 months ago

Changelog

  • Merged fix from @kiber-io for newline edge case - PR
  • Formatted code

README file from

Github

Checkbox Sorter 🔄

Automatically moves completed checkboxes to the bottom of their list group when toggled. Preserves nested list structure while sorting.

Basic Example ▶️

Click any checkbox to toggle it and watch it sink to the bottom of its peer group:

- [ ] Buy milk  <-- Click this checkbox
- [ ] Get gas
- [x] Bread     (already completed)

Becomes after clicking:

- [ ] Get gas    ← Unticked stays on top
- [x] Buy milk   ← Newly completed moves here
- [x] Bread      ← Existing completed items

Features ✨

  • Three-level configuration (global/file/list-marker)
  • Nested list support - child items stay with parents
  • Smart grouping - only affects peers at same indentation
  • Multi-list handling - works with multiple lists in one file

Installation ⬇️

  1. Open Obsidian → Settings → Community plugins
  2. Click "Browse" and search "Obsidian Checkbox Sort"
  3. Install and enable plugin
  4. (Optional) Configure default behavior in plugin settings

Usage 🛠️

Configuration Hierarchy (Lowest to Highest):

  1. Global Setting
  2. File Frontmatter (checkbox-sort: [true|false])
  3. List Marker (%%checkbox-sort: [true|false]%%)
Global Setting (enabled by default):
- [ ] Buy milk   <-- Click toggles and sorts
- [ ] Get gas
File Frontmatter (add to YAML frontmatter):
---
checkbox-sort: false  # Disable for this file
---
List Marker Override:
%%checkbox-sort: false%%  <-- Disables sorting for next list
- [ ] Task 1
- [ ] Task 2

%%checkbox-sort: true%%  <-- Enables sorting for this list
- [ ] Task A
- [ ] Task B

Nested List Example:

- [ ] Parent 1
  - [ ] Child 1
  - [ ] Child 2  <-- Click this checkbox
  - [ ] Child 3
- [ ] Parent 2

Becomes after clicking:

- [ ] Parent 1
  - [ ] Child 1
  - [ ] Child 3
  - [x] Child 2  <-- Completed moves here
- [ ] Parent 2

How It Works 🔧

  1. Clicking a checkbox:
    • Toggles task state
    • Finds all peer items at same indentation level
    • Groups unticked items first (sorted as-is), then ticked items
    • Preserves nested list structure under each item

Troubleshooting ⚠️

Sorting not working?
→ Verify no conflicting list markers exist above
→ Check frontmatter isn't overriding global settings
→ Ensure marker comments are directly above list

New file issues?
→ Save file first for frontmatter settings to take effect

Similar Plugins

info
• Similar plugins are suggested based on the common tags between the plugins.