Miller Columns (Horizontal Tree)

by Marcos Horno García
5
4
3
2
1
Score: 50/100

Description

Convert nested markdown lists into interactive, horizontal column views for focused task management

Reviews

No reviews yet.

Stats

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

Latest Version

a day ago

Changelog

Add a three-column plugin icon so the community listing mark reads as Miller columns at small sizes.

README file from

Github

Miller Columns (Horizontal Tree)

Turns a nested markdown list into Finder-style Miller columns: one column per depth, so you can walk a tree without scrolling a long outline.

Miller columns demo

Use

Add #miller-view anywhere in a - list (task items, plain bullets, or both). In reading view or live preview, that list becomes columns.

- Project #miller-view
    - Design
        - Wireframes
        - Tokens
    - Build
        - Parser
        - Renderer

Click a row to open its children in the next column. The last column grows and wraps as a reading pane; parent columns stay compact. Nodes with children show a chevron.

Checkboxes write back to the note. There is no in-place rename yet — edit the line in source.

Settings → Miller Columns (Horizontal Tree) has two options: vim hjkl (on by default; arrows always work) and show chevrons on items with children.

Keyboard

Hover the panel, click it, or Tab into it. Keys do nothing until the panel is active. Escape or a click outside releases it.

Key Action
/ k j Previous / next sibling
/ h l Parent / first child
Space Toggle the focused checkbox
Enter Insert a sibling after the focused item
Shift+Enter Insert a child (creates a new column on a leaf)
Alt+Enter or Ctrl+Enter Flip task ↔ plain bullet
x, Delete, or Ctrl/Cmd+Backspace Delete the focused item and its subtree
Escape Leave the panel

New items match the focused row’s kind (task or plain) and its indent (spaces or tabs).

Limits

  • Only - lists. * bullets and numbered lists stay as normal markdown.
  • Rename in the source note. Insert, delete, toggle, and kind flip work in the columns.
  • In edit/source mode, insert rewrites the file as one editor change; undo after insert is coarser than after a checkbox toggle or delete.
  • Works in reading view and live preview. Source view is the underlying list.

Install

Until it is in the community plugin directory, copy these three files into:

Vault/.obsidian/plugins/miller-columns/

  • main.js
  • manifest.json
  • styles.css

Enable Miller Columns (Horizontal Tree) under Settings → Community plugins. After a manual copy or a BRAT install, reload the app if the plugin does not appear in that list (Command palette → Reload app without saving). Then reopen the note or switch to reading view so #miller-view is processed.

Develop

npm install
npm run dev      # watch build
npm run build    # type-check + production bundle
npm run test     # Vitest
npm run lint

npm run deploy:vault builds, then copies the three release files into the configured Syncthing vault plugin folder.

License

MIT — Copyright (c) 2026 marc-hg