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).file.*, note.* and formula properties — replaces the filename in both the sticky label column and timeline bar. Empty or invalid values stay visible as warnings; use a Bases filter to exclude them when appropriate. Label width adjusts the sticky column per view.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 | usePropertyDisplay / labelWidth |
Use exactly one Bases-visible property for labels and set the sticky label-column width. |
| 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