Stacked Tasks

by Sam Gibb
5
4
3
2
1
Score: 50/100
New Plugin

Description

Move tasks and subtasks between daily notes in Obsidian, rebuilding their parent context in the destination.

Reviews

No reviews yet.

Stats

0
stars
downloads
0
forks
0
days
0
days
0
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
2
commits

Latest Version

15 hours ago

Changelog

First release.

Move tasks and subtasks between daily notes. Moving a subtask rebuilds its parent headings in the destination, so the context travels with the task instead of arriving orphaned.

Commands

  • Move task to a date…
  • Move task to tomorrow
  • Move task forward one week
  • Move task to next Monday
  • Move all incomplete tasks in this note to today

Install manually: download main.js, manifest.json and styles.css into <vault>/.obsidian/plugins/stacked-tasks/, then enable in Community plugins.

Stacked Tasks is a successor to Slated by Tony Grosinger, published with his permission under a new plugin ID and name. It is GPL-3.0 for the same reason Slated was.

README file from

Github

Stacked Tasks

Move tasks between daily notes in Obsidian — and, unlike every other plugin that does this, move a subtask on its own without stranding it.

Say today's note looks like this:

## Tasks

- [ ] Writing
  - [ ] First AI article
  - [ ] Second AI article

You want to tackle the first article today and push the second one to next week. Put the cursor on it, run Move task forward one week, and next week's note gets:

## Tasks

- [ ] Writing
  - [ ] Second AI article [[2026-08-14|← from]]

The parent comes with it. Move a third subtask to the same day later and it nests under the existing Writing rather than adding a second copy.

Sequential vs independent subtasks

Some subtask lists have an order and some don't. Stacked Tasks reads that from the list marker you already use:

List style Meaning Moving one item
- [ ] bullets Independent Moves that item alone
1. [ ] numbers Sequential Also carries the steps after it

You cannot reconcile the accounts before gathering the receipts, so moving step 2 of a numbered list takes step 3 with it. Completed steps stay behind as a record of the day they were finished, and both notes are renumbered so the lists still read 1, 2, 3.

Commands

Command What it does
Move task to a date… Opens a picker with quick options
Move task to tomorrow
Move task forward one week
Move task to next Monday
Move all incomplete tasks in this note to today Bulk rollover

None ship with a default hotkey — bind whichever you use in Settings → Hotkeys.

Settings

  • Tasks heading — where tasks are filed in the destination, created if missing. Leave empty to append to the end of the note.
  • Rebuild parent tasks — recreate the enclosing tasks around a moved subtask.
  • Merge with existing parents — nest under a matching parent instead of duplicating it. Matching sees through checkbox state, block IDs, origin links and Tasks-plugin metadata.
  • Remove parents left empty — delete a container whose last child moved out.
  • Treat as sequential — numbered lists only (default), all lists, or never.
  • Link back to the original note — aliased, plain, or off.
  • Keep moved tasks in place — mark the original [>] instead of deleting it.

Compatibility

Works with the core Daily notes plugin and with Periodic Notes (which takes precedence when enabled). Origin links and Tasks-plugin metadata such as 📅 2026-08-20 are preserved through a move.

Development

npm install
npm test                                    # 26 unit tests, no vault needed
npm run dev                                 # watch build
npm run build                               # typecheck + production bundle
npm run install-local -- /path/to/vault     # copy into a vault to try it

The move engine in src/move.ts is a pure function over string[] — it takes the lines of two notes and returns the lines they should become. That is why the test suite needs no Obsidian mock, and it is the main structural difference from the plugin that inspired this one.

Credit

Stacked Tasks owes its existence to Slated by Tony Grosinger, which pioneered this workflow and was archived in 2021. The cross-note origin links Slated shipped up to 0.2.2 — and dropped in 0.3.0 — are restored here as an explicit setting, because knowing how long a task has been rolling over is half the value of rolling it over at all.

This is a fresh implementation rather than a fork, but it is unmistakably a descendant, and it is GPL-3.0 for the same reason Slated was.

I wrote to Tony before publishing rather than after. He gave his permission and asked for two things: a new plugin ID, so that lingering Slated installations could not pick up my builds, and a new name, so that it was clear this is a separate plugin. Both were done before the first release — the ID is stacked-tasks and the name is "Stacked Tasks". He also pointed me toward TaskNotes, which is where he has since moved his own task list; it takes a file-per-task approach and is worth a look if the plain-markdown model here is not what you are after.

Licence

GPL-3.0. See LICENSE.