Skip to content

thesamim/TickTickSync

Repository files navigation

TickTickSync

The TickTickSync plugin automatically creates tasks in ticktick and synchronizes task state between Obsidian and ticktick.

** TickTickSync is now Mobile Compatible! [1] **

The plugin works best when the Tasks plugin is installed.

[1] I have tested reasonably well on Android. I only have limited access to IPhone, please proceed with caution.

Features

  • Any task created in Obsidian and tagged with #ticktick will be synchronized with TickTick
  • Any task created in TickTick will be synchronized to Obisidian, unless synchronization is limited. details here.
  • Updates are bi-directional
  • Tasks added or updated from Obsidian are synched to TickTick immediately.
  • Tasks added or updated from TickTick are synched on a configurable time interval.
  • Moving Tasks between Projects is now supported. Please see Task movement documentation.
  • Moving Tasks between Parents is now supported.
  • Due dates accommodate times, times are no longer stripped in Obsidian.
  • Mobile Compatible.

🚩

Very Important

If you share a vault between Desktop and Mobile, it is critical that you use the same vault structure and TickTickSync settings everywhere you use your TickTick account. Differences (eg: different folders, different default files, different default projects, etc) will cause unpredictable results.

If you share your files between Desktop and Mobile using an application that creates duplicate files when it encounters a conflict (eg: Syncthing), it is possible to trigger the duplication issue (see below.) Strongly recommend handling those conflicts ASAP.

🚩

⚠️

CAUTION!

Logging in: Because of the changes for Mobile, the login method has changed. You will now be required to enter your UserId and Password. The credentials are NOT saved, they are only used to get a login token. You will only be asked to login again if the token expires.

The previous method of handling task status was in competition with the Tasks plugin status handling. For now: task status handling is deferred to the Tasks plugin. Which means updates to task status are handled on update, or during Synchronization rather than immediately.

Please see the New Date Handling caution in documentation.

It is possible to create duplicate projects/lists in TickTick. TickTickSync will show a warning and ask you to rename/move one of the duplicates because duplicate lists mess up synchronization. All synchronization will stop until the issue is handled.

I believe I have taken care of the bugs that have been causing duplicate tasks, or unwanted task moves between files. Because of the tremendous data loss this was causing, TickTickSync will now warn you if duplicate tasks are found and will prevent further Syncing until the issue is resolved. If you keep seeing duplicate warning PLEASE open an issue with as much detail as possible.

⚠️

Notes

  1. TickTickSyn back ups are now CSV files that are compatible with TickTick's "Import Backups."
  2. All Task Deletion operations must be confirmed. In the fullness of time, when we get out of Beta, this might be a preference item. For now it's compulsory.
  3. TickTick lists are referred to as Projects in the plugin, and throughout documentation.
  4. TickTick only has four priorities (High, Medium, Low, None). Please see Priority in Task Format for Task mapping of priority
  5. Warning: TickTickSync automatically creates .md files corresponding with the lists/projects created in TickTick and downloads all tasks to them.
    If the files are deleted in Obsidian while the TickTickSync plugin is active, those tasks will be deleted. If you accidentally confirm that deletion: To recover those tasks, go to the "Trash" menu item on the TickTick interface and recover deleted tasks from there.
  6. TickTickSync now supports Task Items and will NOT delete Task Content. However, as of now, it will not allow management of Task Content.
  7. A link to the containing file in Obsidian is added to the Task Title in TickTick, but the content field is not mangled. In the fullness of time content will be manageable in TickTickSync. Please watch this issue for progress.
  8. Relatively confident that Time Zone difference issues are resolved. If not: Please open an issue with details.
  9. It is now possible control synchronization. Please see details here.
  10. TickTick has changed sign in procedures. You will have to login manually from settings.
  11. Tag handling now conforms to Obsidian tag handling.

Known Issues

  1. The plugin only works with the Tasks emoji formats. It will not work with the Dataview format. In the fullness of time, this plugin will be refactored to use Tasks functionality to support both.
  2. Because Tags can't have spaces, at this time it is not possible to add a task to a project with name that contains spaces. In the fullness of time, will implement some kind of workaround (eg: #folder_with_a_space will be converted to folder with a space)
  3. If a file has a default project association (see settings), it is possible to create a task with a project tag other than the default project. The Task will be correctly synched to TickTick in the correct project. However, if the Task is then updated with subtasks, from TickTick, the subtasks will be synched to the project's default file rather than the file where the original parent task was created. Additionally, the subtask will become the child of the last Task in that file.
  4. TickTickSync has been updated to check for duplicate task creation. However, there are still scenarios where duplicate tasks can exist. If this is a significant enough problem, please open an issue

Installation

From within Obsidian

From Obsidian v1.3.5+, you can activate this plugin within Obsidian by doing the following:

  1. Open Obsidian's Settings window
  2. Select the Community plugins tab on the left
  3. Make sure Restricted mode is off
  4. Click Browse next to Community Plugins
  5. Search for and click on TickTickSync
  6. Click Install
  7. Once installed, close the Community Plugins window
  8. Under Installed Plugins, activate the TickTickSync plugin

You can update the plugin following the same procedure, clicking Update instead of Install

BRAT

  1. Install from Community Plugins Obsidian42 - BRAT (latest)
  2. Follow the instructions to add the plugin from: https://github.com/thesamim/TickTickSync

Manually

If you would rather install the plugin manually, you can do the following:

  1. Download the latest release of the plugin from the Releases page.
  2. Extract the downloaded zip file and copy the entire folder to your Obsidian plugins directory.
  3. Enable the plugin in the Obsidian settings.

Documentation

Please see Documentation in the Wiki.

Acknowledgements

This plugin is based on Ultimate Todoist Sync for Obsidian.
There have been significant changes due to the difference between TickTick and ToDoist task handling. I am grateful for the work that HeroBlackInk put it in to the original plugin.

The TickTick api wrapper used here is forked from https://github.com/lucasvtiradentes/ticktick-api-lvt. Thanks to Lucas for his support.

Thanks to quanru for his work in enabling Dida support in TickTick api wrapper and for helping with Dida testing.

Thanks to anschein for helping with Dida testing.

Thanks to Yusuf for help debugging timezone issues.

Thanks to LemurTech and zarb1n for continuous support and help with debugging API moving target!

Disclaimer

This plugin was built with the author's specific use cases in mind. Additional use cases can and will be considered.

The author makes no representations or warranties of any kind, express or implied, about the accuracy, completeness, or usefulness of this plugin and shall not be liable for any losses or damages resulting from the use of this plugin.

The author shall not be responsible for any loss or damage, including but not limited to data loss, system crashes, computer damage, or any other form of loss arising from software problems or errors. Users assume all risks and are solely responsible for any consequences resulting from the use of this product.

By using this plugin, you agree to be bound by all the terms of this disclaimer. If you have any questions, please contact the author.

Contributing

Contributions are welcome! If you'd like to contribute to the plugin, please feel free to submit a pull request.

License

This plugin is released under the GNU GPLv3 License.