Use localStorage instead of cookies for collapse-state since the cookie section grew too big for lws to handle on the server-side (and wasn't even needed there, so cookies were the wrong storage choice to begin with)
Split messages if they get “long” (more than 512 bytes) at the first-coming message boundary.
BUG: Check if id is actually being subscribed to by client before unsubscribing.
BUG: Prevent creation of nodes with id's already in the tree.
Add error server command and use it wherever applicable.
Add password hash checks using Argon2 as sub-module.
Depend on libwebsockets 1.7 instead of 2.0 and make cli compile with both versions.
BUG: On remove as consequence of move, also remove children recursively?
Don't send empty responses to clients. (see munia_proto.cc:163)
Add tests for each of the commands:
login
logout
subscribe
unsubscribe
create
delete
update
move
Windows support.
Web Client
Add intra-node drag'n'drop for reordering.
Add node title edit with double-click.
Add attribute name/value URL-encoding of (in particular) double-quotes.
Add collapse buttons and store the states on cookies.
Add different background colors to better distinguish between group nodes and leaf nodes.
Consider storing users in a special parent node, with usernames, passwords hashes, etc as attributes.
ACL on http requests to protect attachments, avatars, etc…
Refactor entire code-base to modern C++.
Add depth to subscribe command so for example subscribe 0 2 will subscribe to the root node with depth 2 showing only the root node itself and its immediate children (could be projects list).
Add attribute filter to subscriptions, so only changes matching the filter is being published (for example assignee or tags)
Add ubsubscribe all command option.
From TODO file (maybe still relevant?):
Client subscriber lists to set instead of lists.
Handling of invalid values in incoming messages (default values?)
Web Client
Add “initial command string”, stored in cookie.
Use “bounce move” for mouse drags.
Make animation when a node changes/moves to make it easier to see in the UI for other users.
Make animation for other UI components such as expand/collapse.