We would like to inform you that we have fixed a serious problem with Cut&Paste in the dark theme in version 6.0.0. We identified the r...

[RESOLVED] The cut&paste bug in MLO6 fixed. Please update

We would like to inform you that we have fixed a serious problem with Cut&Paste in the dark theme in version 6.0.0. We identified the root cause and developed an understanding on a possible fix on Friday, and on the weekend it was fixed and tested. A release with a fix was released on Monday. 


It is very important for everyone to update to the new 6.0.1 version. 


It is also important for us to be open, therefore we would like to explain what happened in more detail below.

What was the problem and who is affected

The error appeared ONLY in the dark theme:

  •  if the dark theme is enabled and you cut/paste the task, instead of transferring it, a full duplicate of it is created
  • during synchronization, only one of these duplicate tasks is transferred to the second device
  • if you delete one of the duplicates, and *synchronize*, then all tasks (the original one and all its duplicates) are deleted

Note. If you did not cut the task (Cut/Paste) while in the *dark theme*, this error does not concern you. But it is still necessary to update to 6.0.1 with the fix as soon as possible.

What to do if you cut tasks in dark theme and synched

  • If you did not delete duplicate tasks, the new version 6.0.1 will automatically correct the situation. After that, the remaining duplicate tasks can be safely deleted, leaving only one.
  • If in version 6.0.0 you deleted duplicate tasks and *synchronized*, then the lost tasks must be restored from the backup (see below).


Users who have been with us for a long time know that we always try to communicate publicly about any serious problems we notice and analyze them to get better. Fortunately, thanks to our well-established processes, these things don't happen very often.

Why it is important to back up data

Security of user data is our highest priority. That is why for the desktop version we have created an advanced system of backups of your local files, which the application recommends to set up. Please do not ignore this recommendation.


If set up correctly, the following backup copies are created:

  • the most recent 5 copies
  • one backup file at the beginning of each day
  • one backup file at the beginning of each week and month


Thus, in case of accidental deletion or error, you can find the lost task in the backup for the desired date and transfer it back to the main file.

How to restore a lost task from a backup

1. Find the backup file (extension *.bak) for the required date in the folder configured for storing backups (check it in menu Tools -> Options -> Backup)

2. Make a copy of the backup file, just in case.

3. Open this backup copy in MLO

4. If you use Cloud synchronization, the application will ask if you want to synchronize this backup file with the cloud.
Answer NO so that the synchronization does not delete the tasks in the backup file

5. Find the required tasks and copy them to your main file.

Tip: To open two data files enable this option: menu Tools -> Options -> Behavior -> Allow Multiple instances)


More details about the bug

If you are interested, here are some technical details from Andriy Tkachuk about the nature of the bug and why it was difficult to detect:

  • When you start the application, the main window is created, the descriptor of which never changes under normal conditions (i.e. the main window as an object is not destroyed while the application is running)
  • However, in my implementation of the dark theme I missed the point that the library used in its depths completely recreates the main app window, and as a result its descriptor changes
  • Since the first versions of the application, this descriptor has been saved by several objects during initialization for subsequent sending of messages to the window (updating counters, deleting tasks after cutting, handling global hotkeys)
  • As a result, when switching to the dark theme, these messages continued to be sent to the old handle, which no longer existed. No error occurred, but no one processed the message either.
  • When cutting a task, a message was sent to delete the cut task in the old place after creating a full copy in the new one. But the message was not processed. A complete copy of the task with the same ID appeared.


During several months of testing, neither we nor the beta testers noticed this problem. We apologize for this situation.
Thanks to everyone who provided details and allowed us to analyze bit by bit, quickly fix the problem and draw conclusions!

1 comment: