Date Trees

by Ankur Sethi
5
4
3
2
1
Score: 50/100

Description

An Obsidian plugin for organizing chronological notes into a tree of folders that's easier to navigate than a flat list of files

Reviews

No reviews yet.

Stats

3
stars
47
downloads
0
forks
17
days
6
days
6
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
60
commits

Latest Version

6 days ago

Changelog

  • Improve UI copy.
  • Improve command IDs.
  • Add documentation for navigation features.

README file from

Github

Date Trees

An Obsidian plugin for organizing chronological notes into a tree of folders that's easier to navigate than a flat list of files.

What is a date tree?

A date tree is a hierarchical structure inspired by the way org-mode organizes chronological outlines. From the org-mode documentation:

A date tree is an outline structure with years on the highest level, months or ISO weeks as sublevels and then dates on the lowest level.

When applied to a folder structure, it looks something like this:

- Journal/
  - 2026/
    - 2026-05 May/
      - 2026-05-01 Friday.md
      - 2026-05-02 Saturday.md
      - 2026-05-03 Sunday.md

In this structure, each year is a folder, each month is a folder named YYYY-MM Month, and each day is a file named YYYY-MM-DD Weekday.md.

This structure automatically sorts in chronological order when you select "Sort by name" in any file manager, text editor, or notes app. It's easier to navigate than the flat structure Obsidian's Daily notes plugin uses by default, especially when the number of notes grows into the hundreds.

Basic usage

  • Mark an existing folder as a date tree by right-clicking it in the file explorer and selecting Mark as date tree…, or use Mark folder as date tree… in the command palette to pick a folder. The plugin will then ask you to choose a Markdown file from your vault as the tree's template. You can also select No template to create blank files. To change the template later, mark the same folder as a date tree again.
  • Use Open today's note… in the command palette to create and open today's note. If you have more than one date tree, the plugin will ask you which one to use. If a note for today already exists in the tree you selected, the plugin opens it without changing its contents.
  • You can also right-click a folder that has already been marked as a date tree and choose Open today's note in "Folder Name". In fact, you can click any file or folder inside a date tree folder to access that menu.
  • If you're editing a day note, use Go to older note or Go to newer note in the command palette or the ribbon to open the nearest existing day note in that direction. Navigation stays within the current date tree and does not create new notes.
  • To unmark a tree, right-click its root folder and select Unmark as date tree, or use Unmark folder as date tree… in the command palette. Unmarking a date tree does not delete or change any existing notes.

Locale settings

In the plugin settings, Locale controls the language used for month and weekday names: English (the default) uses US English, and System uses the system locale. Regardless of which locale you pick, numeric date prefixes will always use the Gregorian calendar and Latin digits.

Changing the locale does not rename existing files or folders, so choose a locale and stick with it. Otherwise, you might end up with inconsistent month and weekday names across your vault.

Reorganizing your vault

In most cases, this plugin automatically tracks renamed, moved, or deleted date tree folders and templates. If you reorganize your vault, your date trees will usually continue to work as before.

However, automatic updates can fail (for example, if you reorganize your vault using a different app when Obsidian is not running). In these cases, the plugin will show an error in the settings pane. To fix the problem, it should be enough to remove the date tree entry from the settings and add it again.

LLM use

Almost all of the code in this repository was written by an LLM. I've reviewed every line of LLM generated code using my own squishy human brain.

That said, I'm not an expert at building Obsidian plugins. I'm certain I've allowed some (many?) mistakes to slip through. If you notice something wrong with the codebase, I would appreciate a PR, bug report, or email.

Code contributions to this plugin are welcome from both humans and LLMs. However, please make sure you write your PR descriptions and bug reports entirely by hand. If a PR description or bug report appears to be written by an LLM, I will close it without explanation, appeal, or consideration.