Checklist Flow

by oisngodr
5
4
3
2
1
Score: 50/100

Description

An Obsidian plugin that auto-sinks completed checklist items and lets you drag tasks to reorder them.

Reviews

No reviews yet.

Stats

1
stars
49
downloads
0
forks
35
days
8
days
8
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
8
commits

Latest Version

9 days ago

Changelog

Obsidian Community directory release

  • Sink completed checklist tasks below unfinished siblings.
  • Drag task checkboxes or ordinary numbered-list numbers to reorder same-level items.
  • Preserve ordered-list numbering during sorting and drag-reordering.
  • Show a highlighted dragged row and drop insertion line.
  • Use a closed-hand cursor during drag operations and prevent accidental text selection.

The release assets are built by GitHub Actions and include build provenance attestations.

README file from

Github

Checklist Flow

A calmer way to organize tasks and ordered lists in Obsidian.

Release Obsidian TypeScript Tests License

Install · Usage · Settings · Privacy · Contributing

Completed tasks move out of the way. Numbered lists stay numbered.

Why Checklist Flow?

Obsidian lists are excellent for thinking, but long checklists can become noisy as work changes. Checklist Flow keeps the editor calm: completed tasks sink below unfinished work, and same-level items can be rearranged with a direct press-and-drag gesture.

Everything stays in ordinary Markdown. There is no special syntax, no database, and no metadata hidden in your notes.

Highlights

Capability What you get
✅ Auto-sink completed tasks Finished work moves below unfinished siblings in the same contiguous list.
🖐️ Drag task checkboxes Reorder same-level tasks while child notes and sublists stay attached.
🔢 Drag ordinary list numbers Reorder numbered lists by pressing the number, not just checkboxes.
🔢 Stable numbering A list starting at 5. remains anchored to 5. after sorting or dragging.
🧱 Markdown-native Works with regular - [ ], - [x], 1., and nested Markdown blocks.
🔒 Local and private No account, telemetry, network request, or note-content collection.

Quick start

Requirements

  • Obsidian 1.5.0 or later
  • A desktop or mobile Obsidian vault

Install from a release

  1. Open the latest release.

  2. Download main.js, manifest.json, and styles.css.

  3. Create this folder in your vault:

    <vault>/.obsidian/plugins/checklist-flow/
    
  4. Copy the three downloaded files into that folder.

  5. In Obsidian, open Settings → Community plugins, refresh the list, and enable Checklist Flow.

Install with BRAT

If you already use BRAT, add this repository:

hemashishi12/obsidian-checklist-flow

Usage

Complete and auto-sink tasks

Use ordinary Markdown tasks:

- [ ] Read the paper
- [x] Send the reply
- [ ] Write the summary

With auto-sink enabled, checking Send the reply becomes:

- [ ] Read the paper
- [ ] Write the summary
- [x] Send the reply

Only sibling items in the same contiguous list are reordered. Nested notes and child lists remain attached to their parent.

Drag to reorder

Press and hold a task checkbox:

- [ ] First
- [ ] Second
- [ ] Third

Or press and hold an ordinary ordered-list number:

1. First
2. Second
3. Third

While dragging:

  • an insertion line shows the drop position;
  • the dragged line remains highlighted;
  • the cursor changes to a closed hand;
  • text selection is suppressed until the gesture ends.

A quick click still toggles a checkbox. List numbers have no hover effect and remain visually unchanged until a press-and-drag gesture starts.

Supported scope

Works Not covered
Regular Markdown task lines Reading-view rendered checklists
Ordinary numbered-list lines Tasks plugin query results
Same-level sibling items Kanban cards, tables, and canvas cards
Nested blocks attached to a parent task/list Content inside fenced code blocks

Checklist Flow intentionally edits only the affected contiguous list block. That keeps behavior predictable in notes that mix outlines, quotes, code, and tasks.

Settings

Open Settings → Community plugins → Checklist Flow.

Setting Default Description
Auto-sink completed tasks On Move completed tasks below unfinished siblings.
Drag from checkbox or number On Enable press-and-drag reordering.
Done status characters xX Checkbox values treated as completed.

Privacy

Checklist Flow runs locally inside Obsidian. It does not:

  • collect note contents or usage analytics;
  • make network requests;
  • require an account or external service;
  • add telemetry, tracking identifiers, or metadata to notes.

Development

Setup

npm install --no-audit --no-fund

Commands

npm test
npx tsc --noEmit
npm run build
npm run dev

npm run build generates these files in the repository root:

main.js
manifest.json
styles.css

Copy them into a folder named checklist-flow inside your vault’s .obsidian/plugins/ directory to test a local build.

Project layout

src/
├── checklist.ts          # Pure Markdown parsing, sorting, and reordering
├── editor-extension.ts   # CodeMirror drag and auto-sink integration
├── main.ts               # Plugin lifecycle, commands, and settings
└── settings.ts           # Shared setting types and defaults
tests/
└── checklist.test.ts     # Markdown transformation behavior tests
docs/
└── assets/
    └── hero.svg          # Generic documentation illustration

Releasing

  1. Update version in manifest.json, package.json, and package-lock.json.
  2. Run tests, type checking, and a production build.
  3. Push a tag whose name exactly matches the manifest version (for example, 0.2.0, without a v prefix).
  4. GitHub Actions builds and creates a draft release with main.js, manifest.json, and styles.css.
  5. Review the draft, add release notes, and publish it. The workflow also creates build provenance attestations.

Contributing

Issues and pull requests are welcome. For behavior changes, please include tests covering Markdown edge cases such as indentation, nested blocks, blank-line boundaries, ordered numbering, and CRLF line endings.

  1. Fork the repository.
  2. Create a focused branch.
  3. Add tests for new behavior.
  4. Run npm test and npx tsc --noEmit.
  5. Open a pull request with a short before/after description.

License

MIT