So excited! It is so cool to see the first version. Congrats on juggling all of this with your exams!
As for the drag and drop itself, had a random idea – can you duplicate the card in the meantime, so the user is dragging a static version temporarily and the ones in the columns are the current state? Seems tricky to get the logic right, not sure it helps.
I got the drag&drop working! What I had to do in the end was to duplicate the two columns involved and move the note on the cloned columns. Not as nice and simple as I had imagined but it works!
This week I've been making incremental improvements to the plugin in order to release a test version along with the progress report. So without further ado, here it is, the first test (super-early, super-buggy) release of the kanban plugin : com.mablin7.test.kanban.jpl (1.6 MB)
(Please read further for notes for testers)
Most significant of the changes I've made this week, is that I finally gave up trying to use the Joplin search to sort notes into columns. I thought it's clever, but it created more problems than it solved, so I ended up writing my own sorting algorithm. It fetches all viable notes, then matches them against the rules defined in the config. This gives way more control over how the rules can work and also solves the 2 roadblocks mentioned in the Week 2 report:
Both of these are now solvable, though the completedTag and completedNotebook rules are not yet implemented.
I've also improved the UI, bringing it closer to my mockup, but not quite there yet. The board opening should also work more reliably now, and some basic error messages are also shown, if the config is invalid.
Achieved
Refactored the sorting logic (again), squished multiple bugs
Improved visuals
Basic error messages
Improved board opening
Planned for next week
From now on, I'm hoping to release a new version every week!
Better error messages
Automatic reloading
completedTag and completedNotebook rules
More forgiving YAML parsing
Notes for testers
First of all, thank you if you're willing to give this plugin a try, user testing truly helps a lot in development.
Though the plugin doesn't touch the contents of your notes, it does reorganize them, and if there are unexpected bugs it can certainly mess up your collection. Make sure to have a backup of your notes before trying out the plugin!
You're going to need a board config. To start, try out this one, I've been using for testing, but please do not be afraid to experiment with it, since that's the point of user testing:
The config parsing is currently quite fragile, for example tabs are not allowed for indentation. If you're getting a YAML parse error, try this online validator, it should give you more details than the plugin. I am working on more informative error messages and making the parser more forgiving.
The board currently only gets updated if you reopen it. This means that if you changed the config, or added/edited the notes on the board, you need to open an unrelated note to close the board, the open it again to reload. The next release will surely include a better solution.
If you find any bugs, or have any suggestions, post on the main thread please.
Thanks for that. I try to do a quick test but the tasks do not appear (I took exactly your test configuration). In the "nested test" folder you insert tasks with a "ready" tag for example? And that's all. Is this right?
Fun to play with! The drag and drop feels nice and responsive. I know you are not done, so my apologies if some of my "bugs" are just TBD!
I tested this on Mac, Joplin 2.2.1 (prod, darwin).
Some things I noticed with the Tag-based Example:
the board wouldn't load notes if the name of the notebook has a space in it (e.g. notebook Testing Kanban)
the first time i moved a note to the "working" column it went back to the backlog without "sticking". This seems to be because I didn't have the WIP tag created yet. once i moved it again, it worked properly adding and removing the tag
have to switch to a new notebook (not just a new note) to get the board to re-render (because clicking notes in the same notebook keeps the board on the screen I think)
sometimes moving a note caused another note to move. for example, in this case I move the note called "test" to the working column and the note "test note" moved too. This doesnt seem to happen every time, and as you can see "test note" is still marked as done. They are only semi-linked and don't always do the same thing when I move them, maybe a bug because they are named similarly?
moving a note (not a todo) to done moves it visually, but no tag is added, so it doesnt "stick" when you reload
errors i see in the console (could be from other issues)
Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function.
in NoteEditor (created by Connect(NoteEditor))
in Connect(NoteEditor) (created by ResizableLayout)
in div (created by styled.div)
in styled.div (created by ResizableLayout)
in div (created by Resizable)
in Resizable (created by ResizableLayout)
UserWebviewIndex.html:1 Uncaught (in promise) Error: Not Found
at Object.<anonymous> (/Applications/Joplin.app/Contents/Resources/app.asar/node_modules/@joplin/lib/services/rest/routes/tags.js:25)
at Generator.next (<anonymous>)
at fulfilled (/Applications/Joplin.app/Contents/Resources/app.asar/node_modules/@joplin/lib/services/rest/routes/tags.js:5)
Testing the notebook path example didn't seem to work for me. Only the backlog notes loaded, and moving notes into a different column just disappeared them from the board (although it did move them to the correct folder.)
For the tag based example, the notes with the tag "WIP" needed to be in the same folder as the board note to appear, notes with that tag in different folders were ignored.
FYI, I only see the dev console when I run in debug, not sure where to see the separate window.
You need to use dev version of the plugin, i.e. check out the sources, run npm i from there, and point Joplin to that dir. And if you have previously installed the plugin from .jpl, you'll need to remove it first.
Yeah these seem like serious bugs, I'll look into them ASAP.
Yes, notes in the same notebook should keep the board open, but I'm working on the auto reload.
This will be solved when I add support for the completedTag rule, so very soon.
I guess it's related to the WIP tag not existing. For some reason I thought tags are created automatically by Joplin if they don't exist yet, but it seems that's not the case. I'll add the check for that.
That's the intended behavior, unless they're in sub-notebooks of the board notebook, in which case it's a bug.
I figured most people would have one notebook for the board, and would want to leave all other notes out. But I could surely add an option to include all notebooks. What do you think?
I fixed all the bugs you discovered except this one, because I couldn't reproduce it. Did you notice maybe, when this happens, do both notes move smoothly, or does one jump there a split second later?
Yea, I like the idea of having a board that is generated purely from tags and doesn't care what notebook it is in. That allows me to keep project notes in their notebooks, but see all my "work" across a bunch of projects. In that case I probably would want my backlog to be all notes in a general Inbox notebook, but I am less concerned with that.
I could not reproduce the issue that @uxamanda mentioned, but at some point I grabbed a task and started dragging it back and forth and after a few seconds my whole system froze.
However, I think this is not something specific to your plugin and more of a general stability issue on Linux.
@uxamanda could you give the latest version a try and see if this still happens? I made multiple small improvements in stability, it should be a lot smoother now. com.mablin7.test.kanban.jpl (1.6 MB)
Hm I'm afraid that could be the new polling system. I didn't run into it on my setup, but I can imagine that there's a memory leak somewhere in there. I'll do some more testing, but I might have to come up with another way for updating the board.
See installation and usage instructions in my previous post:
Progress
This week I've been making smaller, incremental improvements, fixing bugs and improving stability. Multiple unexpected problems came up, so I haven't managed to make as much progress as I had hoped, but in general the plugin should be a lot more usable now.
Most notably, the auto-reloading is finally working. This mean that you can
change the board config,
change the board title,
change the content, title or tags of any of the notes/tasks
and see the board update live! This should help greatly with experimenting, but it's not really stable yet, so please report any weirdness that happens while reloading.
Behind the scenes, the auto-reload uses long polling. This mean that the webview, which displays the board, sends a message to the main plugin immediately after opening, but the plugin only replies when there's an update. After processing the update, the webview again sends a long-poll message and the cycle repeats.
This is nice, because it allows quick updates, without sending messages very frequently and seems to work fine most of the time, but I'm suspecting it introduced a memory leak somewhere. I'm currently investigating this.
Achieved
Fixed multiple smaller issues
Added auto-reload
Added new tests for the sorting logic
Planned for next week
Investigate performance issue
Add more detailed error messages for the config parsing
Create mockups for the config UI
Thank you for all, who's giving the plugin a try and providing feedback!
Looks like the notes following each other around bugs are fixed!
I was playing around with something else and broke things (sorry ):
changed the done tag from done to is-done. This mostly worked as expected, it moved the note tagged "done" back into inbox. Moving the same note to the done column added the new tag.
Then I changed the wip to wip2 and it didn't do anything at all. Switching notebooks and back the plugin now has an error stating The tag "wip2" already exists. Please choose a different name. I tried changing it to a new tag that I pre-checked doesnt exist wip4 and what seems to happen is that the new tag is created as soon as the board note loads, but it now shows The tag "wip4" already exists. Please choose a different name. If I put the tag back to wip, it then says The tag "is-done" already exists. Please choose a different name.. I can't seem to get out of this state, even by uninstalling and reinstalling the plugin. There are no errors in the normal dev console.
Even deleting that note completely (so that I didn't have any kanban notes anywhere) still shows the old error, so I think this might be a caching issue of some sort.