Integrations
Due to its offline nature and no cloud dependency, there are no direct third-party integrations available.
Markdown
The app copies and pastes in Markdown (to-do block only). This means you can copy/paste tasks to and from other apps that support Markdown (Nothin, Things 3, …).
Notion
Compatibility: Copy/paste of tasks (Notion To-do blocks) to and from Notion is supported.
Tip: If something looks off after pasting, make sure you’re using To-do blocks rather than other block types.
Things 3
Compatibility: Copy/paste of tasks to and from Things 3 is supported.
Nesting: Things 3 does not support nested tasks on paste; all items are flattened to a single level.
Copy behavior from Things 3:
- Copying multiple tasks copies only the tasks (checklists are not included).
- Copying a single task that has a checklist will copy only the checklist.
File Format
Task files (.tpf) use a simple JSON format containing an array of task objects.
This makes it straightforward for developers to inject data directly or manipulate files via scripts.
⚠️ Important: Always close the app before editing JSON files directly to avoid concurrent access issues or potential file corruption.
Task Object Properties:
id(String, CUID2) - Unique identifier for the taskparent_id(String) - Parent task ID, or"root"for top-level tasks, or"trash"for deleted tasksposition(String) - Fractional index for sorting tasks within the same parent. Uses fractional-indexing for efficient reordering without reindexingtext(String) - Task content/descriptionfinished(Boolean) - Whether the task is completedfinishedAt(String ISO 8601 / null) - Timestamp when the task was completed, ornullif not finishedtrashed(Boolean) - Whether the task is in the trashtrashedAt(String ISO 8601 / null) - Timestamp when the task was deleted, ornullif not trashedcreatedAt(String ISO 8601 / null) - Timestamp when the task was createdupdatedAt(String ISO 8601 / null) - Timestamp of the last modification
Key Concepts:
- Hierarchy: Tasks are organized in a tree structure using
parent_id. A task with"parent_id": "root"is a top-level task, while a task referencing another task’sidis a child/subtask. - Ordering: The
positionfield uses fractional-indexing, which allows inserting tasks between any two existing tasks without reindexing (e.g., positions like"a1","a0V","a2"). - Trash: Deleted tasks have
"parent_id": "trash"and"trashed": true. - Timestamps: All dates follow ISO 8601 format (
YYYY-MM-DDTHH:mm:ss.sssZ).