/TickTickSync

Primary LanguageTypeScriptGNU General Public License v3.0GPL-3.0

TickTickSync

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

The plugin works best when the Tasks plugin is installed.

Features

  • Any task created in Obsidian and taged with #ticktick will be synchronized with TickTick
  • Any task created in TickTick will be synchronized to Obisidian.
  • 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.

Notes

  1. 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.
  2. TickTick lists are referred to as Projects in the plugin, and throughout documentation.
  3. TickTick only has four priorities (High, Medium, Low, None). Please see Priority in Task Format for Task mapping of priority
  4. 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.
  5. TickTickSync now supports Task Items and will NOT delete Task Content. However, as of now, it will not allow management of Task Content.
  6. 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.
  7. Relatively confident that Time Zone difference issues are resolved. If not: Please open an issue with details.

Known Issues

  1. Apparently TickTick has changed sign in procedures. TickTick sometimes requires the user login with a captcha. A temporary work-around: You will have to login manually from settings. Theoretically, this take takes care of the issue.
  2. Currently, ALL TickTick tasks are synched. This issue tracks the resolution: If tagged with #obisidian a task will be synched. If not, it will be ignored.
  3. 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.
  4. Due Date:
    1. On the Obsidian side: if no time is provided, the start time will default to 08:00
    2. On the TickTick side: if not time is provided, the start time will be 00:00
    3. The Tasks plugin queries will not find TickTickSync Tasks because the dates are not positioned per Tasks Format
  5. Parent/Child tasks are supported bi-directionally. However, changes to the parent/child relationship are not handled. Yet.
  6. Moving tasks between Projects/Lists is NOT supported at this time.
  7. 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)
  8. If a file has a default project association (see settings), it is possible to create a task with project tag other than the default project. The Task will be correctly synched to TickTick in the correct folder. 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.

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.

Configuration

  1. Open Obsidian's Settings window
  2. Select the Community plugins tab on the left
  3. Under Installed plugins, click the gear icon next to the TickTickSync plugin
  4. Enter your TickTick user ID and Password.

Settings

  1. Automatic synchronization interval time
    The time interval for automatic synchronization is set to 300 seconds by default, which means it runs every 5 minutes. You can modify it yourself.
  2. Default project
    New tasks will be added to the default project, and you can change the default project in the settings.
  3. Full vault sync
    By enabling this option, the plugin will automatically add #ticktick to all tasks, which will modify all files in the vault.

Usage

Task format

Please see Task Examples

Syntax Description Example
#ticktick Tasks marked with #ticktick will be synced to TickTick. Tasks without the #ticktick tag, but are one line below a #ticktick task and indented will be treated as Task Items (See Example Below). If you have enabled Full vault sync in the settings, #ticktick will be added automatically to ALL Tasks. UnTagged Tasks are ignored. Please see Task Examples - [ ] task #ticktick
📅YYYY-MM-DD The date format is 📅YYYY-MM-DD, indicating the due date of a task. - [ ] task content 📅2025-02-05 #ticktick
Supports the following calendar emojis.📅📆🗓🗓️
#projectTag New tasks will be added to the default project(For example, inbox .), and you can change the default project in the settings or use a tag with the same name to specify a particular project. - [ ] taskA #ticktick will be added to inbox.
- [ ] taskB #tag #testProject #ticktick will be added to testProject.
#tag Note that all tags without a project of the same name are treated as normal tags - [ ] task #tagA #tagB #tagC #ticktick
Priority

TickTick only has three priority levels. They are mapped as follows.

TickTickObsidian
0null
0'⏬'
1'🔽'
3'🔼'
5'⏫'
5'🔺'
- [ ] task ⏫ #ticktick

Task examples

Task with Sub Tasks Task with Items Task ignored
  • Task with Sub Tasks #ticktick
    • Sub Task 1 #ticktick
    • Sub Task 2 #ticktick
  • Task with Items #ticktick
    • Item 1
    • Item 2
  • This task will be ignored. It does not have a ticktick tag.

Set a default project for each file separately

The default project in the setting applies to all files. You can set a separate default project for each file using command.

You can see the current file's default project in the status bar at the bottom right corner.

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.

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.