DidaSync

by CYZice
5
4
3
2
1
Score: 47/100

Description

Didasync/Tickticksync is a TickTick synchronization plugin that syncs TickTick tasks into Obsidian, or edits native Obsidian tasks to sync them back to TickTick, enabling two-way sync management. It supports task creation, editing, deletion, completion status syncing, and other features.

Reviews

No reviews yet.

Stats

44
stars
3,432
downloads
6
forks
80
days
13
days
13
days
7
total PRs
1
open PRs
1
closed PRs
5
merged PRs
26
total issues
6
open issues
20
closed issues
220
commits

Latest Version

13 days ago

Changelog

完善双向同步流程

重点完善了任务与笔记的双向同步流程,让本地修改、云端变更和异常恢复都更可靠、更清晰。

更可靠的同步

  • 统一任务与笔记的同步入口,手动同步和自动同步使用同一套流程。
  • 本地新建、编辑、完成和删除等变更会被可靠记录;网络暂时不可用时可在后续同步中继续重试。
  • 改进远端任务删除与完成状态的识别,减少任务被误判或遗漏更新的情况。
  • 优化已完成任务的查询时间范围,提升跨时间段同步的准确性。

更安全的删除与冲突处理

  • 检测到本地任务行或关联笔记被删除时,会先让你选择删除云端内容或仅解除关联,避免误删云端任务。
  • 同步时会根据修改时间处理本地与云端的变更,无法可靠判断时不会强行覆盖内容。

更清晰的同步反馈

  • 同步过程现在会显示明确阶段和结果,避免同步图标长时间停留在“同步中”。
  • 同步失败会保留待处理操作,并能提示部分同步失败的原因。

感谢使用 DidaSync。

README file from

Github

A task sync plugin for Obsidian that brings your Dida365 or TickTick tasks into your notes, with timeline, time block, Pomodoro, and sidebar management views.

English | 简体中文

Why DidaSync

  • Faster sync: keep tasks synchronized between Obsidian and Dida365 / TickTick.
  • More native visualization: manage work with sidebar, time block, timeline, and Pomodoro views.
  • Smarter task workflows: use native task sync, task-to-note export, Markdown backlinks, and optional MCP integration.

Product Overview

Time Block View List View
Time Block View Timeline View
Schedule and drag tasks by day. Review progress and deadlines quickly.

Core Capabilities

Capability Description
🔄 Two-way Sync And Native Task Flow Sync task status, content, and details between Obsidian and Dida365 / TickTick, and create or update tasks from native - [ ] syntax.
🗓️ Multi-view Task Management Use sidebar, time block, timeline, and Pomodoro views for planning, execution, and review.
🌲 Task Structure Management Organize tasks with nested subtasks, drag reordering, drag-to-parent nesting, and cross-project moves.
Completed Task Review View completed tasks by time range to support reviews, reporting, and summaries.
📝 Note Integration Drag tasks into Markdown, sync tasks into notes, and jump back from note links to the related task.
🤖 MCP / AI Integration Optionally expose a local MCP service so AI tools can read, create, update, and schedule tasks.

Quick Start

  1. Install and enable the plugin.
  2. Open plugin settings and click Authorize to connect your Dida365 or TickTick account through official OAuth 2.0.
  3. Open the sidebar or use the ribbon icon to start syncing tasks.
  4. On mobile, if the browser cannot return to the local callback page automatically, finish authorization by copying the returned code back into the plugin.

Common Workflows

1. Use Native Obsidian Task Syntax - [ ]

  1. Enable Settings -> DidaSync -> Sync Settings -> Enable Native Task Sync.
  2. Type native Obsidian task syntax such as - [ ] in a Markdown document.
  3. DidaSync opens an action menu for creating, linking, or enriching the task with dates and details.
  4. After sync, the line gets a Dida link appended, and later checking - [x] can also update the remote task status.

2. Organize Nested Subtasks And Drag Structure

  1. Expand a parent task in the sidebar task list.
  2. Drag a task above or below another task to reorder it.
  3. Drag a task under a parent task to turn it into a nested subtask.
  4. Drag a task onto another project header or container to move it across projects.

Organize complex task structures more naturally inside Obsidian and sync the result back to Dida365 or TickTick.

3. Sync Tasks To Notes

  1. Open Settings -> DidaSync -> Sync Settings -> Task Note Sync Settings.
  2. Set the target block, note folder, week start day, and whether to query remote tasks before writing.
  3. Open the command palette and run Sync tasks to note.
  4. Choose a day, week, month, year, or custom date range.
  5. DidaSync writes the matching tasks into the range note, or creates a fresh note when "Always create a new note" is enabled.
Month Calendar Year Calendar
Month Calendar Year Calendar
Review tasks in a monthly calendar layout. See long-range completion patterns across the full year.

The calendar views make it easier to browse workload by month or year while keeping note-based sync configuration inside DidaSync.

You can also define a block-based sync view inside any working note. The default block header can be > [!didasync], or the custom header configured in sync settings:

> [!didasync] {"range":"2026-01-01~2026-12-31","projects":["project1","id:abc123"]}
> [!todo] {"range":"2026-01-01~2026-12-31","projects":["project1"]}

When you open the Sync tasks to note modal, it automatically switches to "sync current file block" mode if the current file already contains a didasync block. In that mode, you can insert a new sync block or update an existing one with the date picker and project selector instead of editing JSON manually. The file block remains the source of truth during execution. The current version supports range and projects; range accepts YYYY-MM-DD or YYYY-MM-DD~YYYY-MM-DD, and projects accepts either a project name or id:<projectId>. Tag and title matching are not supported yet.

Drag Tasks Into Markdown Documents

You can drag tasks from the sidebar task list directly into any Obsidian editor:

  1. Find the target task in the sidebar.
  2. Drag it into a Markdown document.
  3. DidaSync inserts a native Obsidian task line with a Dida link, for example:
- [ ] Digital logic notes [🔗Dida](obsidian://dida-task?didaId=xxxx) 📅 2026-05-25

This lets you check the task inside the note and jump back to the linked Dida task.

4. View Completed Tasks

  1. Open the filter menu in the search box at the top of the sidebar task list.
  2. Click Completed tasks.
  3. Select the start date and end date.
  4. Click Query to fetch completed tasks in that range.

OAuth Troubleshooting

OAuth authorization is supported out of the box. If authorization fails, check these items first:

  1. Make sure your network connection is working, and try switching proxy or VPN state if the Dida authorization page is unstable.
  2. On mobile, if the browser cannot return to the callback page automatically, use the manual code flow instead.
  3. Check whether local port 8080 is already in use.
  4. If you changed the OAuth callback port in plugin settings, update the redirect URL in the Dida developer console as well.
  5. By default, keep using http://localhost:<port>/callback so existing app registrations continue to work.
  6. If Windows redirects back to a blank or unresponsive callback page, switch the plugin's callback mode to 127.0.0.1, then update the Dida developer console to http://127.0.0.1:<port>/callback.

If port 8080 is occupied, the local OAuth callback server usually cannot start. In that case, change Settings -> DidaSync -> OAuth Settings -> Server Port to another available port, keep the redirect URL in sync with the mode shown in plugin settings, and retry authorization.

MCP / AI Plugin Usage

Enable Settings -> DidaSync -> Advanced/Reset -> MCP Service, then add this configuration to an MCP-compatible AI plugin:

{
  "transport": "http",
  "url": "http://127.0.0.1:35829/mcp",
  "headers": {
    "Authorization": "Bearer <DIDASYNC_MCP_TOKEN>"
  }
}

The MCP service mainly covers three groups of operations:

  • Read: list tasks, get tasks, search tasks, list projects, list completed tasks
  • Write: create, update, schedule, complete, delete, and move tasks
  • Sync: trigger a manual sync

If you use DidaSync mainly as a personal plugin, you can ignore MCP at first and only enable it when you want AI tools to operate on your tasks directly.

Installation

Official Community Plugins Installation

  1. Open Settings -> Community plugins in Obsidian.
  2. Turn off Restricted mode if needed, then click Browse.
  3. Search for DidaSync.
  4. Click Install, then enable the plugin.

Community Plugin Market

Manual Installation

  1. Download the latest main.js, manifest.json, and styles.css from Releases.
  2. Create the folder <vault>/.obsidian/plugins/didasync/.
  3. Copy the files into that folder and enable the plugin in Obsidian settings.

Release And Privacy Notes

  • DidaSync connects via official OAuth 2.0 — no username or password is ever required or stored by the plugin.
  • The plugin makes network requests to official Dida365 or TickTick APIs to read, create, update, complete, delete, move, and sync tasks.
  • The plugin does not upload telemetry or include ads.
  • When MCP service is enabled, the plugin starts a local HTTP server bound to 127.0.0.1 and protects it with your configured token.
  • OAuth tokens, MCP tokens, and plugin settings are stored locally using Obsidian's plugin data storage.

Support

If DidaSync is helpful, consider starring the repository or opening an issue to help improve it.

License

MIT License