/Craftist

Todoist integration for Craft

Primary LanguageTypeScriptMIT LicenseMIT

Craftist

Welcome to the repository of my Todoist eXtension for Craft. Please read through the instructions, especially the installation and login chapter. Also make sure to check out the latest changes in the changelog which will contain the latest feature updates

If you want to follow me for updates or get in touch you can follow me on Mastodon or choose anything else to contact on my website. Feel free to create issues in the repository for bugs you notice or features you'd like to see.

If this eXtension is valuable for and you like to thank me you can support me on

Buy Me A Coffee

Become A patreon

If you want to have a look to other things I'm working, check out my website at flohgro.com.


IMPORTANT NOTE: Due to the stopped development of the Craft API (no updates since more than a year) and my personal switch away from Craft I will not bring new features to this eXtension. I develop this stuff in my free time and also for my personal use. If you have major problems and issues I will have a look and check if I can fix them, but new features won't come to the eXtension in the future. If you want to add features by yourself - you can do that by creating a PR so I can test them. I'm happy to add and mention you as contributor if you do so.


Demo Videos

Here are some demo videos of Craftist from myself or other creators:

Features

The following features are currently supported by Craftist:

Create / Link Tasks

  • create Tasks from Selection
    • this will create tasks from the current selected blocks
    • if the blocks are not already a todo item in craft they will be converted to todo blocks

Craftist: Create Tasks from Selection - Watch Video

  • crosslink open tasks
    • this will create crosslinked tasks between every (unchecked) todo item in the current document and Todoist
    • the tasks in Todoist will directly link back to the todo item in Craft
    • cancelled or done todo items in the craft document will be ignored

Craftist: Crosslink Open Tasks - Watch Video

Sync Task States

  • sync task states
    • this will sync the states of linked Tasks with Todoist
    • the states will be changed with the following scheme:
      • if the task is completed anywhere (Todoist or craft) complete it on the other platform
      • if the task is cancelled in craft and open in todoist, close it in todoist
    • this will work for every todo item which was linked to a Todoist Task by this eXtension
    • syncing tasks is disabled if no task links are enablded since they are necessary to retrieve the tasks information
    • if the due dates are imported as metadata the sync will work for repeating tasks, too since the due date will be updated. If you disabled due date import, repeating tasks will not be synced.
    • if a task couldn't be retrieved it will be marked as done in Craft since it is was probably deleted
  • sync task content (and metadata)
    • syncing the tasks will also sync the content and (enabled) metadata
    • content and metadata will just be synced one-way, from Todoist to Craft and not vice-verca
    • this means if you make changes to the task in Todoist - the changes will be synced (e.g. the new content will be visible after the sync) but if you make changes to the block of the Task in Craft they will not be synced to Todoist (this would make the handling too complicated right now)

Craftist: Sync Task States - Watch Video

Why is my task not synced by Craftist?

why is my task not synced?

Import Tasks / Project List

  • import todays tasks
    • this will import the tasks due today from your todoist account
    • the tasks will be imported as todo items and contain links to the tasks in todoist
  • import all tasks
    • this will import all tasks from your todoist account (which could be a lot)
    • it's planned to improve this action (e.g. grouping by project) if you'd like to have this feature please comment on the related issue.
  • import tasks from linked project
    • this will import all tasks from the project linked in this document / page
  • import tasks with label
    • this will import all tasks with the selected label
  • the imported tasks will be nested by project, section and parent task if available
  • import project list
    • this will import the list of your Todoist projects
    • the name of the project will be a direct link to the project in the app (as mentioned this does currently not work on macOS)
    • after the project name you will see a link to the Webview of the project

Craftist: Import Tasks / Projects - Watch Video

Settings

  • the settings menu lets you configure the Craftist to your preferences.
  • following settings are possible:
    • task links: the link type(s) which should be created for each task (attention: if you disable both, syncing task states is no longer possible)
    • task metadata import: select the metadata which should be imported with your tasks
    • task grouping: select how tasks should be grouped on import (by project, by section or both); available for all import features
    • import location: you can decide if you want to import tasks below the current selected block or always at the end of a document
    • due dates from daily notes: you can choose if created / crosslinked tasks shall receive the due date of the current open daily note (this will not add due dates if you create tasks from other documents)
    • import personal tasks only: choose if only tasks assigned to you (or unassigned) shall be imported
    • (beta) enable continuous task sync

Login

When you installed the Craftist eXtension (also when you update the eXtension) you hav to "login" into your Todoist account by providing your API-Token. Therefore you need to get the token of your Todoist account. To retrieve the token, open Todoist and go to the settings. Navigate into the integrations tab and scroll to the bottom. There you'll see a textfield titled "API-Token". Copy the API-Token with the button below or just be selecting and copying the text. Open the Craftist eXtension again and click on the "Login/Logout" button. Paste the copied API-Token into the text field and press the green "Set Token" button. The eXtension will then reload and you can close the UI to set the token by pressing the "x" in the upper right corner The Token will be stored in Craft so you'll only have to do this once.

If you ever want to logout from your todoist account - use the "Login/Logout" button and press "Delete Token" which will reset the stored API-Token.

Installation

  1. Enable Craft eXtensions.
    • Mac: At the top left of the app, click your avatar, select Preferences, click 'Advanced'. Under Craft eXtensions, click the dropdown, and select 'Enabled'.
    • Web: At the top left of the web app, click your avatar, select Craft eXtensions, toggle 'Craft eXtensions' on.
  2. Download the .craftx file from the latest release
  3. Install the extension.
    • At the bottom of the right side bar, the eXtensions logo is now visible. Click the '+' sign, select the file you downloaded from the previous step, then click open.
  4. Done - you can now use the eXtension

If you want to built the eXtension by yourself (and e.g. make some custom modifications) use the instructions given by the people at Craft:

Simply run npm install and than npm run build to generate the .craftX file which can be installed.

To learn more about Craft eXtensions visit the Craft X developer portal.

Thanks

Thanks to @thomaszdxsn for the inspiration in his integration for Todoist.

Thanks to @DharamKapila for the inspiration and support for the UI of the info panel

Thanks to every user who provides valuable feedback for the further development and the gratefulness i received.

Changelog

v0.9

fixed: Support for new Todoist API version

v0.8.1

fixed: Imported tasks were taking up more space

v0.8

  • new: tab layout to divide into Features / Settings and Info
  • new: version check in the Info Tab (thanks to @DharamKapila for the support and inspiration)
  • new: import tasks with label feature - this allows the user to import all tasks with the selected label
  • new: setting to exclude importing tasks that are assigned to other people in Todoist (enabled by default)
  • improved: recurring tasks now include the "due string" to show more information about the recurring frequency
  • improved: removed seconds from due time string
  • improved: no completed tasks are imported anymore when importing tasks from a linked project
  • changed: emojis to indicate mobile (App) 📱 and web 🌐 links to tasks - this reduces the needed space for the links
  • fixed: prevent sync task states when the due date in Craft is older than in Todoist for recurring tasks

v0.7.1

  • fixed: settings for continuous sync and due dates in daily notes were not read properly
  • improved: notification for unsynced tasks (recurring tasks are not synced when due dates are disabled)

v0.7

  • improved: sync task improvements - switched to update Blocks - blocks will not get recreated in every sync
  • new: priorities sync - priorities can be synced as metadata which will colorize the task content similar to Todoists colors
  • new: recurring tasks will be unlinked when when they are completed in a daily note which will prevent repeated sync of the task / keep it checked in the daily note
  • new: (beta) continuous sync of tasks can be enabled in the settings - this will perform a sync every 30 seconds - it will be enabled / disabled with the Sync Tasks Button
    • this is a beta feature so please be patient and expect bugs; report them in the repository with as much details as possible
    • to report issues or thoughts on the beta you can add comments in the discussion

v0.6

  • new/improved: sync task improvements - recurring tasks are now enabled if due dates are included as metadata
  • new: metadata import - imported and synced tasks will now contain metadata from todoist (due dates, labels and descriptions) which you can enable / disable as you like
  • change: added warning for disabled task links since syncing states is not possible without links
  • new/improved: completely revamped settings window for easier usability
  • fixed: creating tasks features now respect link settings
  • new: option to import tasks after the current selected block (enabled by default)
  • new: option to set due dates for exported tasks to date of the daily notes (enabled by default)
  • change: craftdocs://open[..] urls (resulting from cross-linking) will be stripped from task contents since they don't work and just produce clutter.

v0.5

  • new/fixed: Craftist is now working in the web version of Craft
  • change: slightly changed the login behavior - no separate login form anymore - now included in the "Login/Logout" button
  • fixed: cleanup of notification behavior when execution of operations succeeds / fails

v0.4

  • new: TASK GROUPING - now all imported tasks are grouped by their parent task / project / section
    • if you import tasks from a linked project the tasks will just be grouped in their sections (this can be changed later with settings)
  • new: imported Tasks will contain the due date of the task which is linked to the correct daily note
  • new: Settings Menu to change some basic settings:
    • Enable / Disable Mobile Url (for tasks and projects)
    • Enable / Disable Webview Url (for tasks and projects)
    • Enable / Disable Due Dates for imported tasks
    • note: these settings are stored locally but must be set again after you reinstalled the eXtension (at least from my testing results)
  • change: „import project List“ now uses correct order of projects
  • fixed: „import todays tasks“ button now also imports overdue tasks
  • fixed: tasks won't get imported twice when they are already present in the document

v0.3

  • new: "Link Note to Project" Button / Feature which will prepend a link to an existing project in Todoist to the current document
  • new: "Import Tasks from linked Project" Button / Feature which will import all Tasks from the linked Project and add them as Blocks to the end of the document
  • change: Creating / Crosslinking tasks will now create tasks in the linked project (if the note is linked) - if the note is linked to multiple projects in todoist the tasks will be created in the inbox
  • change: Created / Linked Tasks will now contain a Link in the Task Description to the Craft Document itself