jiajiunwu103 downloadsRead one markdown note as a table of task cards. Inspired by the kanban table way of working, but dates, assignees, pins, comments and repeats all stay as plain text inside the note.
A task-first card table. Inspired by the Kanban plugin's table mode view. Every task is a card, and these cards form a table. Features include unique time-filtering functions, multi-user collaboration, and one card layout that looks the same on desktop and phone.
[!IMPORTANT] Reminder: This plugin is still under active development and will change frequently over the next few months. Please back up your data/environment before using it. Bug reports and feedback are highly appreciated!
Notice: This project is entirely built by AI agents using Claude. The project developer has limited experience with programming languages.
From 1.6.1 cards are written with the same [key:: value] fields as the Tasks and Dataview plugins, so their queries see your cards' dates and repeats too.
If Card Table saves you time, you can buy me a coffee on Ko-fi.
[!WARNING] 1.6.1 is a big update that changes the note format. Sorry for the trouble. Cards are now written with Tasks / Dataview
[key:: value]fields instead of emoji.
- Your old notes still work: the old syntax is still read, and a card switches to the new syntax only when it is changed.
- To switch everything at once: Settings → Note format → Convert everything to the new format (one click; each note is backed up in its own folder first).
- Update every device to 1.6.1: Card Table 1.6.0 and older cannot read the new syntax.
- The full old-vs-new table is in The text format.
If anything goes wrong with the conversion or the plugin, please email me at [email protected], or open a GitHub issue.
Not listed yet? Download main.js, manifest.json and styles.css from the
latest release into <your vault>/.obsidian/plugins/card-table/,
then reload Obsidian and enable Card Table - Dated Tasks.
⋯ menu.
The note remembers the mode you last used and opens that way next time.
For a note that has never been opened as a board, the ribbon icon asks first: open this note as a Card Table, or create a new one.## 1 … ## 5). Sections are shown as colours.Shift + Enter.
The card lands on the day, week or month the filter bar is showing.[repeat:: every 2 weeks], archive before delete.⋯.[due:: …], [start:: …], [repeat:: …]; older notes keep working.Formatting keys are your own: editing a card uses whatever you have bound in Settings → Hotkeys, exactly like any other note — the card editor is Obsidian's editor, with Live Preview, undo and [[ suggestions.
| Obsidian command | Inserts |
|---|---|
| Toggle bold | **text** |
| Toggle italic | *text* |
| Toggle highlight | ==text== |
| Toggle code | `text` |
| Toggle strikethrough | ~~text~~ |
| Add internal link | [[text]] |
| Insert Markdown link | [text]() |
Submitting works the same in the new card, the card editor and comments:
| Key | Default | With "Enter to submit" |
|---|---|---|
Enter |
New line | Submit |
Shift + Enter |
Submit | New line |
Ctrl + Enter / ⌘ + Enter |
Submit | Submit |
Esc |
Close the editor | Close the editor |
Grouped the same way as in the plugin; What's new at the top lists what every version added.
| Group | What you can set |
|---|---|
| General | Language, who uses this device, solo mode |
| Time filters | Range on open, how weeks are counted, an All tile |
| Cards | Board width, how done cards look, section names, last edited time, comments and where they go |
| Adding and editing | Submit key (see Keyboard), cursor and card position when editing, unpin when done |
| Jump after an action | Whether each action scrolls to the card |
| Note format | Convert every old card to the new format (backs up first) |
That is the whole storage format — everything the table shows comes from lines like these:
## 1
- [ ] [pin:: on] [Orders] [start:: 2026-09-11] [due:: 2026-09-14] #Alex
Two boxes each, needs to arrive before Friday
- [ ] Call the supplier
[cm:: 2026-09-11 14:20|Alex] Quote came back, 8% up on last time
[ed:: 2026-09-11 14:20]
- [x] [Field] [due:: 2026-09-08] [repeat:: every 2 weeks]
Check the greening suspect tree again
[done:: 2026-08-25]
[ed:: 2026-09-08 08:30]
The first line is the card: pin, title, dates, repeat, assignee. Below it come the content (written exactly as you type it — no automatic bullets), repeat records, comments, and last of all the edit time. The lines the plugin writes itself have no bullet either.
| Meaning | From 1.6.1 | 1.6.0 and older (still read) | Where |
|---|---|---|---|
| One card, not done / done | - [ ] / - [x] |
Same | Start of the first line |
| Pinned | [pin:: on] |
📌 |
First line, before the title |
| Title | [Title] |
Same | First line |
| One day | [due:: 2026-09-11] |
@{2026-09-11} |
First line, after the title |
| A range | [start:: 2026-09-11] [due:: 2026-09-14] |
@{2026-09-11 ~ 2026-09-14} |
First line |
| Repeat | [repeat:: every 2 weeks] (every 3 days, every month…) |
🔁 every 2 weeks, 🔁 每2週 |
First line, after the dates |
| Assignee | #Alex (must be on the people list) |
Same | End of the first line |
| Content | From the second line, as you type it | Could also follow the title on the first line | Second line on |
| Content bullets | Only if you type them: - , * , 1. |
. (optional) |
Start of a content line |
| To-do inside a card | - [ ] something (-[ ] and [] are tidied to this) |
— | Content line |
| Repeat record | [done:: 2026-08-25] (repeating cards only) |
— | After the content |
| Comment | [cm:: 2026-09-11 14:20|Alex] text |
.💬{2026-09-11 14:20|Alex} text |
After the content |
| Last edited (written by the plugin) | [ed:: 2026-09-11 14:20] |
✎{2026-09-11 14:20} (on the first line) |
Always the card's last line |
| Archive | ## Archive |
Same | Section heading |
| Long-term | — | #long-term (no special meaning since 1.5; kept as a plain tag) |
— |
[done::], [cm::], [ed::]) have no - ; times always use a four-digit year and minutes.[completion:: …] or [priority:: …] written by Tasks) are kept as they are.They keep working and change only when touched. A card switches to the new syntax only when you edit it, tick it or change its date; nothing else in the note is touched.
One-click conversion. Settings → Note format → Convert everything to the new format converts every note you have opened as a Card Table in one go.
Each note's original text is first saved in the same folder (name backup-20260916-1420.md). Edit times are kept, lines outside cards are left alone, and running it a second time changes nothing.
Card Table 1.6.0 and older cannot read the new syntax, so update every device that opens these notes. If something looks wrong after converting, or you have any question, please email [email protected].
Tasks and Dataview. Card Table writes due, start and repeat the way the Tasks plugin reads them in its Dataview format, and every [key:: value] field is visible to Dataview queries. Repeats are handled by Card Table itself (mark this time done), so let Card Table tick repeating cards.
Kanban. Card Table was inspired by the table view of the Kanban plugin — the same markdown lists, read as rows instead of lanes. It grew from there into a board built around dates and comments.
| Kanban | Card Table | |
|---|---|---|
| Built around | Stages — which lane is this card in? | Time — what is due today, this week, this month? |
| Moving a card | Drag it to another lane | Change its date, tick it, archive it |
| Everyday view | The whole board | Today (or any day, week, month) in one tap |
| Conversation | — | Signed, timestamped comments on each card |
| Several people | — | Designed for it: per-device identity, atomic writes |
| Phone | — | The same cards as on desktop |
Can I use both? Yes. Card Table only takes over notes you open with it (it remembers each note), and it never switches a Kanban board over on its own; it also unloads cleanly when Kanban intercepts the same Obsidian method.
Both read ## headings and - [ ] cards, so a Card Table note opens in Kanban too, but Kanban only understands its own @{date} dates — Card Table's [due:: …] fields show as plain text there.
Vault.process, so a concurrent write (sync, another tab, the previous action) is never overwritten with a stale copy.MIT