obsidian: logseq-compatible tasks
• 253 words • 2 min
Problem statement: preserve Logseq’s task syntax while opening the same markdown files in Obsidian.
My migration script originally converted every task into Obsidian’s checkbox syntax:
- TODO buy milk -> - [ ] buy milk
- DOING ... -> - [/] ...
- DONE ... -> - [x] ...Obsidian itself does not recognize the left-hand side as tasks. The TODOseq community plug-in does:
- TODO buy milk
- DOING ...
- DONE ...It keeps the file unchanged, adds clickable task states and a task list to Obsidian, and remains compatible with Logseq.
Before granting a community plug-in write access to my vault, I inspected the current release with the LLM™:
% git clone --depth=1 https://github.com/scross01/obsidian-todoseq.git /tmp/obsidian-todoseq-audit
Cloning into '/tmp/obsidian-todoseq-audit'...
% cd /tmp/obsidian-todoseq-audit
% git rev-parse --short HEAD
4ba5e81
% jq '{id, version, minAppVersion, description}' manifest.json
{
"id": "todoseq",
"version": "0.18.1",
"minAppVersion": "1.11.0",
"description": "Lightweight keyword-based task tracker using Logseq style keywords."
}A source scan found no network requests, telemetry, process execution, or dynamic code evaluation1.
It does read and modify notes through Obsidian’s vault API, as expected:
% rg -n 'vault\.(read|modify)' src/services/editor-controller.ts | head -4
1130: const currentContent = await this.plugin.app.vault.read(todayNote);
1135: await this.plugin.app.vault.modify(todayNote, newContent);
1283: const todayContent = await this.plugin.app.vault.read(todayNote);
1286: await this.plugin.app.vault.modify(todayNote, newTodayContent);Low risk, and no task-format conversion needed.
This should make it easier for me to adapt my LogSeq muscle memory to Obsidian, even if at the cost of enabling community plug-ins.
🤖 Drafted with /bloggify.
-
Hope is not a strategy. ↩︎