KanMug - A Forked Project of the Original Kanban Plugin

Hello,

I want to share a new project here: KanMug, a fork of the original Kanban plugin. The original Kanban plugin has been archived and is no longer maintained. It is suggested to migrate to the new YesYouKan plugin. However, the use case scenarios are different, making it difficult for existing users to migrate to the new plugin.

Therefore, I have forked the old kanban plugin into a new project with bug fixes and new features. It is KanMug and released.

The storage format remains unchanged. Therefore, you can install the new plugin and disable the original plugin to try it, and vice versa.

However, I have refactored the code significantly. If you find any features broken, please feel free to let me know.

You may search KanMug from the Joplin plugin setting for installation.

The project link: GitHub - benlau/joplin-plugin-kanmug

Here are the changes of the first release version (1.2.2):

Release 1.2.2

New Features

  • Drag notes from the Joplin's Note list to add them to the kanban board.
  • Clicking on the kanban title now opens the kanban configuration note.
  • Added a refresh button for quick updates to the kanban board.

Improvement

  • Improved board note switching to prevent unnecessary open/close operations.

Bug Fix

  • Create a new note via the add button in the column may not set the tag correctly.

Code Changes

  • Renamed the plugin from Kanban to KanMug.
  • Updated package dependencies for security and compatibility.
  • Overhauled the refresh UI flow for better performance and reliability.
  • Added a Debouncer utility for improved UI refresh handling.
  • Added GitHub Actions workflow for automated testing and building.
  • Introduced an AsyncQueue utility to ensure sequential processing of events.
9 Likes

Version 1.2.3 released

Release 1.2.3

New Feature

  • New Note Title Property: Added support for newNoteTitle in column configurations, allowing automatic note title generation based on templates. You may customize the title using today() with delta and different formats.

Remarks: If you used this feature, your kanban will not be compatible with the original kanban plugin.

Improvements

  • Prevented Double Note Creation: Add new note via the column menu may create double note if you clicked too fast.
  • Fixed Markdown Table Rendering Issue: Escaped | characters in note titles to prevent rendering issues in markdown tables.

Bug Fixes

  • Drag a note from note view may freeze the column.

New Note Title Property: newNoteTitle with today()

With the introduction of newNoteTitle, users can now define dynamic note titles using EJS templates in their kanban board configurations. This feature enables automatic title generation based on date formatting, making it easier to maintain structured and consistent note titles.

How today() Works

The today() function provides the current date and supports additional methods to manipulate and format the date.

Basic Usage

The simplest way to use today() in newNoteTitle is:

newNoteTitle: "New Task <%= today() %>"

This will render the title as:

New Task 2025-01-31

(assuming the current date is January 31, 2025)

Adding or Subtracting Days

You can modify the date using .add():

newNoteTitle: "New Task <%= today().add('1d') %>"

This will generate:

New Task 2025-02-01

Adding -1d moves it to the previous day:

newNoteTitle: "New Task <%= today().add('-1d') %>"

Result:

New Task 2025-01-30

Changing the Start Time of Day

If you work late at night and want the title to reflect the "previous" day, you can adjust the time:

newNoteTitle: "New Task <%= today().add('-4h') %>"

This ensures that notes created after midnight still reflect the previous day. (Using 04:00 as the start time of the day , instead of "00:00")

Custom Date Formatting

You can format the date using .format(). For example:

newNoteTitle: "Task for <%= today().format('MM/dd') %>"

Will output:

Task for 01/31

Combining Multiple Operations

You can chain .add() and .format() together:

newNoteTitle: "Due <%= today().add('2d').format('MM/dd') %>"

This will produce:

Due 02/02

Use Case Example

If you want a kanban column for "Upcoming Tasks" where each new note should have the title "Task for tomorrow," you can define:

columns:
  - name: "Upcoming Tasks"
    newNoteTitle: "Task for <%= today().add('1d').format('MM/dd') %>"

This will create new notes with titles like:

Task for 02/01

if today is January 31.

Finally

I want to ask a question. Anyone would like to have a feature to create new note with issue number automatically assigned? e.g The first note is 0001 , and then 0002 , ....

1 Like

Hi all,

I have a good news for you. A new kanMug released and it fixed the slow response issue! Now it is significantly faster!!!

Here is the change log:

Release 1.2.4

Critical Changes

Performance improvements have significantly reduced processing time.

New Features

  • Remove Note from Kanban: A new option allows users to remove notes from the kanban board via the context menu. Simply right-click on a card to trigger the menu. This action ensures that notes are properly removed from columns and associated rules are unset.
  • Confirmation for Column Deletion: Deleting a column now prompts for confirmation to prevent accidental deletions.

Bug Fixes

  • Fix Column Configuration via GUI Breaking EJS Templates: Ensures < and > characters are correctly escaped in the GUI configuration editor to prevent rendering issues.
  • Fix Note Ordering: New notes are now correctly placed at the top of the column.
  • Fix New Note Content Initialization: The default content of newly created notes now matches their title to prevent unintended title overrides.

New Feature: Remove Notes from Kanban

This release introduces the ability to remove notes from the kanban board using a right-click context menu. Selecting "Remove from Kanban" will detach the note from the board while keeping its content intact in Joplin.

How to Use

  1. Right-click on a note in the kanban board.
  2. Select "Remove from Kanban."
  3. A confirmation dialog will appear to confirm the action.

User Survey

By the way, I have a few questions about the upcoming features:

  • Would anyone like a feature that automatically assigns an issue number when creating a new note? For example, the first note would be 0001, followed by 0002, and so on.
  • Dynamic Card Sorting – Would you like the ability to press a button and choose the order?
3 Likes

Thanks for making this plugin! It fits my workflow/usecase much better than the YesYouKan plugin since the cards are separate notes.

This would be nice to have :+1:

1 Like

Release 1.2.5

New Features

  • Recent Kanban List: Added a "Recent Kanban" button to show recent used kanban. It will open the kanban without loading the kanban config note in the markdown editor.
  • Drag Card to Markdown Editor: Users can now drag a card from the kanban board to the markdown editor, where it will be converted into a link to the card.
  • Open Card in New Window: Users can now open a kanban card in a new window by pressing on the card with right click.

Minor Enhancements

  • Show Toast Message After Refresh: A toast message is now displayed after the kanban board is refreshed to provide better user feedback.

  • Fix: Unable to Open Note on “/“ : Resolves an issue where certain notes could not be opened if it is put on “/“

Code Changes

  • Improved caching mechanism to ensure notes removed from the kanban board are also removed from the cache.

Screenshots

User may drag a card from note list to kanban, and drag to markdown editor

Recent Kanbans

2 Likes

What happened to completed: true to match todo notes. It isn't working, right?

OK, I see it is workin only as a board filter, but isn't working as a column rule.

Thanks a lot for picking up this project benlau!

Could I make a suggestion please?

I'd like to fit more columns on screen, so the following abilities would be useful:

  • Edit padding within card
  • Edit padding within column, outside of card
  • Edit text size

I also still find that marking a task as complete in the Note List doesn't apply the tag "Completed" and so tasks marked complete in this way remain in their previous column on the board.

Could refreshing the board please scan all Tasks on the board for iscompleted:1 and set the "Completed" tag in these before moving on to the existing refresh routine?

Spanner in the works: I also have a "Cancelled" column, where tasks are also marked as complete, so ideally this edit would only actually add a "Completed" tag for iscompleted:1 -tag:Cancelled

(...and have settings to edit this, in case others use a different column name or multiple columns for cancelled and similar tasks)

Thanks again, your work is appreciated!

1 Like

It should be working as a column rule to filter out todo notes. Could you share your kanban config?

Could I make a suggestion please?

Sure

Edit padding within card
Edit padding within column, outside of card
Edit text size

What do you want is a global option or a kanban specific option?

I also still find that marking a task as complete in the Note List doesn't apply the tag "Completed" and so tasks marked complete in this way remain in their previous column on the board.

should be ok

Could refreshing the board please scan all Tasks on the board for iscompleted:1 and set the "Completed" tag in these before moving on to the existing refresh routine?
Spanner in the works: I also have a "Cancelled" column, where tasks are also marked as complete, so ideally this edit would only actually add a "Completed" tag for iscompleted:1 -tag:Cancelled
(...and have settings to edit this, in case others use a different column name or multiple columns for cancelled and similar tasks)

Not quite understand what do you want. Could you share an example...?

KanMug 1.2.6 Released!

New Features

  • Clickable Column Title Links: Column titles in the kanban board can now be regular links. Clicking them will open the associated link (including external URLs).
columns:
  - name: Resources
    tag: my_project/resources
    link: joplin://x-callback-url/openNote?id=740b762b425e4abb91f01aff11fc34b0
  • Open a kanban by card: If you click a card which is a kanban note, it will open the kanban directly without opening the note.

  • Prevent Moving a Note Out of Any Folder: Moving a card from a column with a notebook path to another column without a notebook would move the notebook to the root folder, which caused a few bugs with other extensions. Now the behavior is forbidden. It will show a warning message.

When moving card to new column, it changes notebooks · Issue #4 · benlau/joplin-plugin-kanmug

Bug Fixes

  • Show Only "Loading" on Restart: Fixed a bug where it would just show "Loading..." on restart. Now it will show a message asking to open a kanban. Users may use the recent kanban list to open a recent kanban.

Show only "Loading..." instead of Kanban board · Issue #2 · benlau/joplin-plugin-kanmug

  • Unexpected Dropping Behavior: Corrected a bug where moving a card between kanbans may suddenly jump to the top.

Code Changes

  • Upgraded React to v18
  • Refactoring the code to allow multiple kanban instances: WIP
1 Like

Release 1.2.7

Bug Fixes

  • Operation timeout caused board to revert to Loading state: Fixed an issue where an operation timeout would cause the board to fall back to the Loading state.

Critical Enhancements

  • Optimize reordering logic when moving a note

Previously, when a note was moved to a new column and inserted into a non-first/non-last position, the system updated the order of all subsequent notes to maintain list consistency. While this behavior worked fine in single-device scenarios, it introduced performance issues on synchronized devices—especially mobile—by triggering a large number of minor updates.

The reordering algorithm has been updated to minimize these changes. However, if the column's note order was previously generated using the older algorithm, the entire list may still be updated once during the transition.