Changes on tasks should propagate automatically to open pages/views

We’re currently thinking about moving our whole scheduling/task tracking off Trello and so far I really like Vikunja’s possibilities as well as easy of use.

However, one big showstopper right now seems to be how task changes are synced (or more specifically: not synced). Maybe this is a bug, maybe I’m missing some configuration option (running Docker self-hosted), but at least in the browser’s dev tools I only see continuous queries for notifications, but no update task for tasks.

As a specific example:

  • Multiple team members each have the same project/kanban view open.
  • They make changes.
  • None of the changes will show up for the other team members, unless they switch views or reload the page.

Refreshing the page or switching views kind of works as a workaround, but this is far from intuitive and kind of defeats the purpose of having such a tool directly hosted through the web instead of like using local files or similar.

1 Like

This is planned. It’s not a small feature which requires some architecture changes and other things, but we’ll get there eventually. I’ll try to make this happen in 2024 but can’t promise anything.

Totally possible I’m missing some obvious issue here, but I could see a minor (at least temporary) mitigation to this that maybe wouldn’t necessarily require too many changes:

  • As far as I can tell, data sets already have a “last update” timestamp.
  • On any project view, the frontend saves the latest task’s timestamp it received.
  • Once a minute (paused/debounced upon user activity) query the server for all tasks in the current project that were updated after said timestamp.
  • If a new set is received, the timestamp is updated and the datasets are added to the local/cached collection.

This would obviously still fail to account for things like deleted entries (think I’ve read non-destructive deletion is still WIP, too), but at least it would avoid views getting stale.

(I’d totally be up for implementing this myself, but I haven’t really looked too much into the actual project structure.)

That’s a possible way to do it, yes. Locking is not as easy, and we’re currently not saving everything locally in a way that would make updating this easy. Of course, we could just reload everything all the time, but that’s a rather dirty way to do it and would require a few tweaks to make sure the UX does not get worse.

Ideally, I’d like to use a websocket to distribute changes (and only the changed entries to make it efficient). That will allow us to do other things like locking or presence indicators later as well. And hopefully offline sync at some far point in the future.

Yep, makes sense.:+1: [20 characters]