Kanban integration with tasks

I found the reason why it works on the edge version but not on the stable version.
It’s because of the newly added attribute in the query result: range, which I used in the AST integration of the Kanban Board.

Here are the object attributes of a simple task query:

Stable:

Edge:

Of course, I could calculate the range in Lua to make it backwards compatible. But the question is: is it worth it? Maybe the edge release will be integrated into the stable release within the next few days, and then we would end up with unwanted clutter in the code just to maintain backwards compatibility with the current stable release.

@zef do you have any information on when the edge version will be integrated into the stable release, especially regarding the new range attribute for task queries? Do you have a planned timeframe (next week, next month, or not within the next couple of months?) so I can decide whether it’s worth integrating backwards compatibility into the Kanban code or if I should simply wait for the stable release integration?

It may still be a few weeks. Again, my bad. My intention was to stay backwards compatible, which is why I decided to keep pos as is and add range. But I somehow missed that I had already removed toPos, so actually let me add that back on edge. It'd be deprecated, but that way stuff keeps working.

1 Like

Ok, will be back soon: Revert removal of item's toPos · silverbulletmd/silverbullet@ab9965a · GitHub

(of course needs a Space: Reindex to reindex everything with toPos)

2 Likes

thx !!!
but it wasn´t that urgent :stuck_out_tongue:

1 Like

Note: since the Edge version of 06/02 (2.4.1-047f532477f4bf9f7953c879f6c75dd4aa1fa227-2026-02-06T15-24-08)

system.getVersion() incorporates the date of version.
issue: Add date of build with system.getVersion() · Issue #1817 · silverbulletmd/silverbullet · GitHub

you can test it with:

local version = system.getVersion()
local date = string.match(version, "(%d%d%d%d%-%d%d%-%d%d)")

This also clutters the code but can be useful in certain circumstances (eg: when the class of the attribute name has been modified [sb-atom->sb-attribute-name] since 2026-02-04).

[FIXED]

After testing it on stable. I can confirm that on Stable it doesn't work, you need to run the edge version for this to work. Will add it to the known issues later.

[Update]

Just pushed the fix to support backwards compatibility with pos & toPos from the stable-release.
@malys you can test it out also on SB stable-release (2.4.1-0-g3e1f03b) now, it should work.

1 Like

[UPDATE]

I fixed two of the known issues:

  • :white_check_mark: FIXED - No support when you have a [[WikiLink]] in your tasks
  • :white_check_mark: FIXED - #hashtags can be added to the task name, but they cannot be edited in the editor

PS: If you use any other Task-Synthaxes which are not covered above or are not supported please leave a feadback so i can implement/fix them.

  • 📅2026-04-02 attributes are not and will not be supported (sorry)
1 Like

Thanks. I will to test it.

[UPDATE] - New Features

  • :sparkles: LiveFiltering & Sorting Order for your tasks in the Kanban Board (similar to the MediaGallery)

  • :sparkles: Current TaskCount in the header

  • :sparkles: Custom Color (#FFFF00, rgba, oklch, color name, etc.) for the cards when they are in the different columns/stages

  • :sparkles: the possibility to hide certain keys/labels to be hidden in the card. this can be usefull if you have a longer text or a title as attribute

  • to config the new features use the example in the documentation or here is also the overview of all the current config options:

${KanbanBoard(
  query[[from index.tag "task"]], 
  {
    {"Column", "status"},
    {"Columns", {
      {"todo", "📝 To Do","blue"},
      {"doing", "⏳ In Progress","red"},
      {"review", "👀 Needs Review","yellow"},
      {"done", "✅ Done","green"}
    }},
    {"SortDefault", "priority"},
    {"Fields", {"title","priority", "completed"}},
    {"HideKeys", {"title"}}
  }
)}


@JmiXIII - some of these features(filter & hideKey) are dedicated for you, so you can manage larger task lists, and longer titles :wink:

1 Like

[Update]

  • :white_check_mark: FIXED - if the task completed in the modal window or in the markdown [x] it wont update the status attribute if you manually update the task in the markdown make sure to reload the widget for the changes to take effect
  • :white_check_mark: FIXED - if the status is edited to “done” it won’t complete the task, it only moves the task to the done column
  • :white_check_mark: FIXED - Improved Desktop&Mobile Responsivness

Promiss will have a look and give feedback. Many thanks for the attention !

[UPDATE]

:clipboard: Kanban Board - Released

Hey everyone! :waving_hand:

I've been working on a Kanban Board widget for SilverBullet over the past week, and after ironing out the last few known bugs I'm happy to move it from Beta Preview into a proper stable release. Here's what it can do and what to keep in mind.


:sparkles: Features

  • Customisable columns — define your own workflow stages with labels, emoji, and optional accent colours per column
  • Drag & drop — move cards between columns; status attribute and checkbox state update automatically in the source markdown
  • Bidirectional markdown sync — tick [x] directly in the markdown and the card moves to the done column on the next widget load; uncheck it and it moves back
  • Quick Edit modal — edit task name, any attribute, and completion state without leaving the board
  • Custom card fields — choose which task attributes are shown on each card
  • HideKeys — display an attribute value without showing its label (handy for IDs or long text)
  • Filter & sort controls — live filter across all columns, sort by any attribute ascending or descending
  • WikiLink & hashtag support — both are parsed correctly in card titles and are preserved when you edit through the modal
  • Mobile-friendly — columns hold their minimum width and the board scrolls horizontally on narrow screens instead of squishing

:prohibited: Known Limitations

  • Emoji-style date attributes (e.g. 📅 2026-04-02) are not supported and are not planned
  • After System: Reload, if a Kanban Board widget is on the page, also reload the page itself (Client: Reload UI, Ctrl+R, or F5)
  • Manual markdown edits to a task require a widget refresh to appear on the board
  • Attribute values are always wrapped in double quotes - this is intentional, not a bug

:hammer_and_wrench: Quick Setup

Install the Library or use my Repo in the Library Manager and then drop the widget code into any of your page :

${KanbanBoard(
  query[[from index.tag "task" where page == _CTX.currentPage.name]], 
  {
    {"Column", "status"},
    {"Columns", {
      {"todo",   "📝 To Do",     "purple"},
      {"doing",  "⏳ In Progress","blue"},
      {"review", "👀 Needs Review","yellow"},
      {"done",   "✅ Done",       "green"}
    }},
    {"SortDefault", "priority"},
    {"Fields",   {"priority", "due", "status"}},
    {"HideKeys", {"tags"}}
  }
)}

Full documentation, all options, and the source code are on the library page.


Feedback, bug reports are welcome — happy building! :rocket:

5 Likes

This is pretty neat @Mr.Red! The features make it like Notion! Using it now.

One question:

    - [ ] [priority: A] Buy shampoo [status: "doing"] [due: 2026-02-15]

In the Kanban board, it shows up as Priority: A instead of "Buy shampoo" because [priority: A] is up front., even though this is valid SB syntax. Would it help if I filed a bug report about this?

Thank you again for making and sharing this!

Pretty cool ! Nice job.

Note : Filter should be kept when udpating the status ..., help keeping concentrating on filtered data

Kanban filter update

No, it wouldn't help much^, because i have my own ToDo(bug monitoring) lists in silverbullet.
i didn't consider that synthax (Why would you even use that synthax????).
But I noted it now in my ToDos. Although in silverbullet it seems a valid synthax but in because every synthax needs to be considered separately, i considered only synthaxes where Task Name follows the * [ ] like:

* [ ] Task Name [attributes1] [attributes2]
[more_attributes]
[even_more_attributes]

I will see what i can do to cover this too, but it would be pretty hard to cover all possibilities. It would be much easier if you change your tasks, and use it as is :stuck_out_tongue:

 - [ ] Buy shampoo [priority: A] [status: "doing"] [due: 2026-02-15]

It's already on my todo list.

i got it working somehow to correctly parse attributes even if they are in front of the task-description and extract the description correctly for the Modal and Card.

Need to do some more testing and if everything goes well, it'll be added in the next release later today or tomorrow.

PS: I hope you are not considering also putting attributes in the description text itself like this:

    - [ ] [priority: A] Buy  [due: 2026-02-15] shampoo [status: "doing"]
    
   -- this synthax won't be ever supported

because i can already tell you, that wont be supported, EVER! :stuck_out_tongue:

2 Likes

It's so the priorities appear at the beginning and are aligned nicely, like so:

If you have a way to have it render this way even if the priority is at the end of task, do let me know, and I'd be happy to consider switching to it.

I don't currently have a solution that'd let me switch to putting the priority attribute at the end, so this is very cool!

I can’t think of a clear use case for that, and I’m also not confident it would be supported by SB syntax now or in the future, so my answer would be no.

More broadly, though, in a system like SilverBuller where user code and libraries are such a central part of the experience, it’s easy for the ecosystem to drift into a state where individual libraries unintentionally account for only a subset of valid user syntax. Over time, this can create friction: users often need multiple libraries to accomplish what they want, only to discover edge cases, incompatibilities with base syntax, conflicts with other libraries, or assumptions about fixed attribute names, as a few examples. The result can be a fragmented, frustrating experience where limitations are learned only through trial and error.

I want to be clear that I’m not pointing to your libraries as an example of this. Quite the opposite. Your work demonstrates how far AI-assisted development can enable genuinely useful features and be amazingly helpful in short order! That said, the recent issue brought this broader ecosystem concern to mind, and I wanted to share the thought with the wider SB community.

You mean something like this?
Sorry but I don’t have your template so I don’t know how you did your colored letter emojis.

But using Select and a Template you can achieve the same thing.

I'm wanting them to render this way at the source line, and not just via a query. I use this CSS. This is why I'm putting priority: up front: so it renders there on the source line:

/* priority: hide raw value */
.sb-attribute[data-priority] > .sb-list.sb-frontmatter {
  font-size: 0;
}

/* priority: base pill */
.sb-attribute[data-priority]::before {
  padding: 0 7px;   /* spacing without white gap */
}


/* priority values */
.sb-attribute[data-priority="A"]::before {
  content: "A";
  background: var(--sb-warning-color, #ff6b6b);
  color: #000;
}

.sb-attribute[data-priority="B"]::before {
  content: "B";
  background: var(--sb-highlight-color, #ffd43b);
  color: #000;
}

.sb-attribute[data-priority="C"]::before {
  content: "C";
  background: var(--sb-success-color, #69db7c);
  color: #fff;
}

/* priority: hide attribute plumbing */
.sb-attribute[data-priority] > .sb-list.sb-frontmatter.sb-atom,
.sb-attribute[data-priority] > .sb-list.sb-frontmatter.sb-meta {
  display: none;
}

ok nvm then, forget what i said. I thought you wanted a query or some sort of thing.
so it's more like a visual preference and an aesthetic choice and nothing functional. i'll test the parsing and then i will push the update with the fix for supporting attributes in front of the description.

1 Like