Kanban, timeline and weekly-log views for tasks stored in your notes, powered by Bases.
A lightweight task‑management plugin for Obsidian Bases. It only renders — your task data lives in your own markdown frontmatter / note body, and all grouping and filtering is done by Bases. The plugin owns no data model and hard‑codes no field names. Everything uses the tm- prefix.
Requires Obsidian 1.10.2+ (the Bases view API). Desktop only.
| View | Type | What it does |
|---|---|---|
| tm-kanban | Bases view | Columns from a Bases group‑by (or predefined columns), drag cards to change status, right‑click to move/archive. |
| tm-timeline | Bases view | Gantt‑style bars / milestones from start‑end date properties, drag to reschedule, grouped or flat lanes. |
| tm-calendar | Leaf view | Weekly time grid that renders daily‑note log blocks; drag to create, right‑click to delete. |
The plugin is a thin renderer: change frontmatter / Bases config / drag → Bases re‑queries → the view re‑renders. It never keeps a long‑lived reference to the query result.
tm-kanban)todo|#6b7280, doing|blue, … Values match the Bases group‑by keys; unmatched/empty groups fall into a collapsed Uncategorized column.doneStatuses marks which column values count as done; that column gets an Archive‑all button to archive every card in one click.note.* properties). Click opens the note in a reused right split; mod‑click opens a new tab. Dragging never triggers a click‑open.- yyyy-MM-dd old->new list item under a configurable body section (Changelog section heading, default Changelog), creating the section if absent — so each note keeps a history of its status changes. Unchanged moves write nothing.
tm-timeline)scale = day / week / month / quarter / year (coarser scales keep multi‑year plans on screen).default (unchanged), moderate (one whole scale unit each side), or fit (trim to whole scale units around the items). Partial first/last cells are widened just enough for their header label to fit.note.*). With Snap to grid (a plugin setting) on, drag/resize snaps to the current scale's unit — drag only; existing dates are never changed otherwise.property|value|output (matches when the note's property equals the value; case‑insensitive, list membership) or a bare property (the note's own value of that property is the output). Rules are read top→bottom and the first match wins per list. Colour/text‑colour output is a colour name, hex, or rgb(...) (or none for the default); text output is any of strike underline bold italic, space‑separated (or none for plain). Example — bars for closed tasks grey and struck through: status|closed|gray in colours, status|closed|strike in text.
tm-calendar)Log) whose list items are time blocks:## Log
- 14:00-15:00 (Dev) [[Some task]] notes
- 16:00-16:30
Format: HH:MM-HH:MM → optional (Category) → optional [[wikilink]] → optional note.[[task]] link + category. Right‑click a block to delete it. Click opens that day's journal at the log line.name|color (a colour name, hex, or rgb(...)), or put the colour inline in the line — (Dev|blue) — exactly like the kanban value|color scheme.00:00–24:00, but narrow it (e.g. 09:00–18:00) to focus on working hours — the grid then splits the visible hours to fill the height, so blocks render larger.
main.js, manifest.json, styles.css from a release (or build them, below).<Vault>/.obsidian/plugins/task-manager-bases-view/.npm install
npm run dev # watch build → main.js
npm run build # svelte-check + production bundle
Outputs main.js (+ manifest.json, styles.css) in the project root.
.base file over your task notes.status); optionally enable Use predefined columns and fill the column values / colours / done statuses / archive value.Toggling a view on/off in settings takes effect only after you disable and re‑enable the plugin (or restart Obsidian) — Bases has no per‑view unregister API.
Each view can be turned off independently, and the calendar's settings appear only while its view is enabled, keeping the page tidy:

| View | Option | Meaning |
|---|---|---|
| kanban | usePredefinedColumns |
Use ordered, coloured predefined columns instead of raw Bases groups. |
| kanban | predefinedValues |
value or value|color lines; match the group‑by keys. |
| kanban | doneStatuses |
Column values treated as “done” (gets the archive‑all action). |
| kanban | archiveValue |
Value written by right‑click → Archive / Archive‑all. |
| timeline | startProp / endProp |
Date properties for the bar ends. |
| timeline | includeUndated |
Show otherwise-hidden undated items as draggable milestones at the range start. |
| timeline | scale |
Header tick granularity: day / week / month / quarter / year. |
| timeline | rangePadding |
Empty time around the items: default / moderate / fit. |
| timeline | autoZoom |
Derive density from the pane width so the whole range fits (hides the zoom slider). |
| timeline | zoom |
Density as a percentage of the scale's default (10 – 200, 100 = default). |
| timeline | ignoreMaxUnits |
Draw the whole range regardless of the Max cells plugin setting, at the render cost. |
| timeline | colorRules / textColorRules / textRules |
First-match rules for bar fill, label colour and label style. |
A separate, ready‑to‑open demo vault lives in its own repo — obsidian-task-manager-example-vault — with a multi‑project dataset and several .base files (group‑by board, predefined‑colour pipeline, per‑project boards via filters, flat/grouped timeline, archive workflow) plus journals for the calendar.
src/main.ts → root main.js (CJS, single file).src/shared/ is the three‑view kernel (entry access, frontmatter write, value render, section parser, open‑detail, palette, i18n).Found a bug, hit a rough edge, or have an idea? Please open an issue — bug reports, feature requests, and questions are all very welcome. A screenshot and your Obsidian version help a lot. See the changelog for what's new.
MIT © vastea