Canvas to Tasks

by Ryan
5
4
3
2
1
Score: 50/100

Description

Synchronize tasks in Obsidian Canvas text nodes with the Tasks plugin.

Reviews

No reviews yet.

Stats

1
stars
1
downloads
0
forks
1
days
1
days
1
days
0
total PRs
0
open PRs
0
closed PRs
0
merged PRs
0
total issues
0
open issues
0
closed issues
6
commits

README file from

Github

Canvas to Tasks

Canvas to Tasks is an Obsidian companion plugin that mirrors Markdown tasks in Canvas text nodes to generated Markdown index files. The Tasks plugin can then query and edit those tasks, while this plugin synchronizes changes back to the source Canvas.

Requirements

  • Obsidian 1.6.6 or later.
  • The community Tasks plugin must be installed and enabled to query the generated tasks and apply its status, recurrence, completion-date, and on-completion rules.

Canvas to Tasks still generates indexes when Tasks is unavailable, but the Tasks-specific behavior is disabled until Tasks is enabled and Obsidian is reloaded.

How it works

  • Canvas text nodes remain the user-facing source.
  • A generated Markdown file is created for each Canvas under _Canvas Tasks Index/ by default.
  • Moving or renaming a Canvas moves its generated index to the matching path. Moving, renaming, or deleting a folder that contains Canvas files triggers a debounced structure reconciliation and removes empty generated directories.
  • Tasks queries discover the generated Markdown tasks normally.
  • Changes made to generated task lines are written back to the exact Canvas text node and line.
  • Checkbox changes made directly in Canvas are passed through the Tasks API, preserving status rules, completion dates, recurrence, and on-completion actions.
  • Generated task lines contain an HTML comment immediately after the checkbox. Do not remove or edit this comment; it is the stable bridge to the Canvas node. The comment is not added to Canvas text.

The generated index folder is managed by this plugin. Avoid manually adding unrelated notes to it. A non-generated file is never overwritten.

Installation

From Obsidian Community plugins

After the plugin is accepted into the community directory:

  1. Open Settings → Community plugins in Obsidian.
  2. Select Browse and search for Canvas to Tasks.
  3. Install and enable both Canvas to Tasks and Tasks.
  4. Reload Obsidian after updating either plugin.

Manual installation

  1. Download main.js, manifest.json, and styles.css from the latest GitHub release.
  2. Create <Vault>/.obsidian/plugins/canvas-to-tasks/.
  3. Put the three downloaded files directly in that folder.
  4. Reload Obsidian, then enable the plugin under Settings → Community plugins.

Commands

  • Canvas to Tasks: Synchronize all Canvas tasks
  • Canvas to Tasks: Open task index for current Canvas

The setting Use Tasks logic for Canvas checkboxes controls whether Canvas checkbox transitions are normalized through the Tasks API. It is enabled by default. If the task description changes at the same time as its checkbox, the plugin preserves the user's text and skips API normalization rather than overwriting a concurrent edit.

Mobile support

The runtime bundle uses Obsidian's Vault API and is marked as mobile-compatible. Sync manifest.json, main.js, and styles.css to the mobile vault, enable both Tasks and Canvas to Tasks on that device, and restart Obsidian after plugin updates.

Privacy and network access

Canvas to Tasks works entirely inside the local Obsidian vault. It does not make network requests, collect analytics or telemetry, show advertisements, or send vault data to external services. It reads Canvas files and manages only the generated Markdown indexes required for synchronization.

Current safety behavior

  • Writes are serialized and debounced to prevent feedback loops.
  • A source line is updated only if it is still a Markdown task.
  • Invalid Canvas JSON and missing nodes stop the write and show an error notice.
  • Deleting a generated task line deletes its mapped Canvas task line when reverse sync is enabled.
  • Deleting or renaming a Canvas trashes its generated index and creates the new index when applicable.
  • Generated indexes mirror the current Canvas folder structure. Structural events are handled on demand; the plugin does not poll or continuously scan the vault.

Uninstalling

  1. Disable Canvas to Tasks in Obsidian.
  2. Delete the generated index folder (_Canvas Tasks Index/ by default) if you no longer need it. The Canvas source files remain unchanged.
  3. Uninstall the plugin from Settings → Community plugins.

Development

npm.cmd install
npm.cmd run dev

After the build creates main.js, enable Canvas to Tasks in Obsidian's community plugin settings. Source changes rebuild automatically; reload the plugin in Obsidian to execute the new bundle.

Verification

npm.cmd run typecheck
npm.cmd test
npm.cmd run build
npm.cmd run validate-release

Releasing

Keep the version in package.json, manifest.json, and versions.json in sync. After committing and pushing the release changes, push a version tag that exactly matches the manifest version and does not include a v prefix:

git tag 0.2.5
git push origin 0.2.5

The release workflow validates the version, runs the checks above, builds a minified main.js, and creates a GitHub release containing only main.js, manifest.json, and styles.css.

License

MIT