Notes List

approvedunreviewed

by Alessandro Melandri

Show notes from a folder as a chronological list with an activity heatmap, tag browser, pinning, and date filters.

↓ 110 downloadsUpdated 12d agoMIT

Notes List

Notes List turns a vault folder into a browsable timeline: a chronological list of its notes on one side, and a GitHub-style activity heatmap and tag browser on the other. It's a good fit for a daily journal, a work log, or any "one note per entry" habit, where seeing when things happened matters as much as the notes themselves.

Official Plugin Page - Changelog

screenshot

Features

Open the view from the ribbon icon ("Open notes list") or the Notes List: Open command.

  • Chronological list — every note in a folder you choose (optionally including its subfolders), newest first. Each entry shows its date and time, an optional file name, and its content — full or a preview, your choice. A cut note ends with a "Continue reading" link that opens it. A preview never cuts a code block or a table in half: it extends to the end of that block instead. To choose exactly where a note's preview ends, put <!-- more --> at that point (see Preview break).
  • Note tags — each note's tags are shown as a row of pills below its content, gathered from both its tags frontmatter property and the #tags written in its text. Inline tags are taken out of the displayed text, so they appear once, in that row (tags inside code are left alone, as Obsidian doesn't treat them as tags). Click a tag to filter the list by it.
  • Date from frontmatter — a note's date and time come from its own property named timestamp (set it via Obsidian's own "Date & time" property type in the Properties panel), falling back to the file's last-modified time if it isn't set. Click the date, or double-click the note's file name or content, to open the note.
  • Pin notes — click the bookmark icon on a note to keep it pinned to the top of the list, ahead of everything else matching the current filter. The pin is stored as a pinned property in the note's own frontmatter, so it's visible in the note itself and travels with it across a rename or move.
  • Date group headers (optional) — "Today" / "Yesterday" / "This week" / "Older" labels above the list, so it's obvious at a glance when notes were written.
  • Activity heatmap — a GitHub-contributions-style grid of the last 6 months, shaded by how many notes were created each day. Click a day or a month label to filter the list down to it. A month that only covers the first (or last) week column is labeled with just its initial, like "S.", so labels never overlap; hover any label for the full month name.
  • Tag browser — a collapsible tree of every tag found in the notes in scope, each with a count of matching notes. Click a tag to filter the list to it (including its nested sub-tags, e.g. #area/work under #area). An Untagged entry, always at the end of the list, shows the notes that have no tags at all.
  • Tasks — a Tasks section under the tag browser filters the list to notes with any task, with at least one open task, or with at least one completed task, each with its note count. Tasks are the - [ ] / - [x] checkboxes Obsidian already recognizes: x counts as completed, - as cancelled (it only counts towards Any), and any other status, like / for in progress, as open. Notes with tasks also show a small "completed/total" counter, e.g. "2/5", next to the bookmark. Tasks can be checked and unchecked right in the list, and the change is saved to the note.
  • Full-text search — a search box at the top of the sidebar finds notes containing every word you type (anywhere in the note's text or file name, case-insensitive). The search runs when you click Search or press Enter, not while you type, and is near-instant even in folders with thousands of notes: note text is indexed in the background as soon as the view opens. Press / or Cmd+F (Ctrl+F on Windows/Linux) while the view is focused to jump to the search box, or use the Search notes command (assign it your own shortcut from Settings → Hotkeys) to open the view straight into it.
  • Combine filters — the search, tag, task, day and month filters can all be active together, each with its own pill (and x) below the heatmap to clear just that one.
  • Pagination — long lists are split into pages, so browsing stays fast no matter how many notes are in the folder. Besides the page numbers and the previous/next arrows, two buttons jump straight to the first and the last page.
  • New note button — the "+ New note" button above the list (a "+" next to the search box in the single-column layout) creates a new, uniquely-named note directly in the watched folder in one click, with today's date already set. No other plugin required; optionally starts from a template note of your choice (see Settings below). Also available as the Create new note command, so you can assign it your own keyboard shortcut from Settings → Hotkeys — it works even when the Notes List view isn't open.
  • Works on mobile — on a phone, or in any pane narrower than 720 px, the view stacks into a single column: search, heatmap, a collapsible Tags section, then the notes. The search button shows just a magnifier icon, with the New Note button right next to it.
  • Languages — available in English and Italian, following Obsidian's own language setting (Settings → General → Language); other languages show English. Dates, month names and the first day of the week follow that language too. The settings and labels in this README are the English ones.
  • Respects Obsidian's own "Readable line length" setting, and refreshes automatically as notes in the folder are created, edited, deleted, renamed, or have their frontmatter changed.

Installation

Notes List is available in the official Obsidian Community Plugins directory: community.obsidian.md/plugins/notes-list.

To install it from Obsidian:

  1. Open Settings → Community plugins and turn off Restricted mode if it's on.
  2. Click Browse, search for "Notes List", then click Install and Enable.

Building from source

To build it yourself instead:

npm install
npm run build

Then copy manifest.json, main.js and styles.css into <your-vault>/.obsidian/plugins/notes-list/, and enable the plugin from Settings → Community plugins.

For local development, npm run deploy builds and runs copy-to-vault.mjs, which copies those three files into your vault's .obsidian/plugins/notes-list/ folder. That script is local and not part of the repository, since it holds your own vault path: create it next to package.json, reading the vault path from wherever suits you (for example process.env.OBSIDIAN_VAULT_PATH).

Settings

Requires Obsidian 1.13.0 or later. The settings tab groups related controls under a shared heading, and every setting can be found through Obsidian's settings search:

GroupSettingDescription
Folder and filesFolderVault folder to watch, empty = entire vault.
Folder and filesSubfoldersAlso show notes from subfolders of the chosen folder.
Folder and filesTemplateOptional note to start new notes from (empty = a blank note); the template must have a property named timestamp in its frontmatter.
Folder and filesUnique note name formatmoment.js format for the New Note button's auto-generated file name (default YYYYMMDDHHmmss); also what "When different from unique note name" compares against.
Notes listShow note nameNever / Always / When different from unique note name (default; see Features above).
Notes listContent displayFull / Preview (default); a note can override this with its own content-display frontmatter property.
Notes listPreview lengthMax characters shown when Content display (or a note's own override) is Preview (default 300); the field stays enabled either way.
Notes listShow date group headersShow "Today" / "Yesterday" / "This week" / "Older" headers above the list (default off).
Notes listNotes per pageNumber of notes shown per page in the list (default 10).
SidebarTag tree expansionHow far the tag tree is expanded by default: Fully collapsed / Expand to level 2 / Expand to level 3 / Fully expanded (default). You can still expand or collapse any tag by hand; changing this setting resets those manual changes.

Desktop and mobile. The Notes list and Sidebar settings have two independent values: one for the desktop app and one for the Obsidian mobile app (phone and tablet). The settings tab shows each setting once, and changing it only affects the kind of device you're on, as a note at the top of the Notes list group reminds you. So to change the mobile values, open the settings from your phone or tablet. Both sets are saved in the plugin's settings file and synced with your vault, so changing one never overwrites the other. When upgrading from a version without this split, your existing values are copied to both sets.

Preview break

Write <!-- more --> in a note (on its own line, or in the middle of one) to make the list show only what comes before it. It's an HTML comment, so it stays invisible when you read the note in Obsidian. Only the first one counts, and one inside a code block is ignored.

How it combines with the other options, from strongest to weakest:

  1. The note's own content-display property: full shows the whole note, marker or not; preview cuts at the marker, or at Preview length if there's none.
  2. The <!-- more --> marker: the note is cut there even when Content display is set to Full, and Preview length doesn't apply.
  3. The Content display and Preview length settings.

Customizing font sizes

The size of the notes' text can be changed with a CSS snippet, separately for the regular layout and for the single-column (mobile) one:

VariableAffectsDefaultDefault in single column
--notes-list-content-font-sizeNote contentInherited from Obsidian1.1rem
--notes-list-content-line-heightLine height of the note content's paragraphs1.4rem1.4rem
--notes-list-title-font-sizeNote file nameInherited from Obsidian1.1 × inherited (1.1em)
--notes-list-date-font-sizeDate and time linkObsidian's small UI font sizeObsidian's small UI font size
--notes-list-panel-title-font-sizeSection titles ("Notes", "Activity", "Tags")Obsidian's level-4 heading size1.1rem

Each one has a --notes-list-mobile-… counterpart (for example --notes-list-mobile-content-font-size) that applies only in the single-column layout. In that layout the mobile variable wins if set, then the regular one, then the single-column default above.

body {
	--notes-list-content-font-size: 15px;
	--notes-list-mobile-content-font-size: 17px;
	--notes-list-mobile-content-line-height: 1.6;
	--notes-list-mobile-date-font-size: 14px;
}

Changelog

See CHANGELOG.md.

Development

See CLAUDE.md for build commands and an architecture overview.

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.