Changelog
Source:NEWS.md
rtodoist 0.4.0
Breaking changes
- API functions now use
req_error()from httr2 for proper HTTP error handling -
unarchive_project()no longer accepts unusedproject_nameparameter - Removed unused
httrdependency (fully migrated to httr2)
New features
Labels module (new)
-
add_label(): Create a new label -
get_label(): Get a single label by ID -
get_all_labels(): Get all labels -
get_label_id(): Get label ID by name -
update_label(): Update an existing label -
delete_label(): Delete a label -
get_shared_labels(): Get all shared labels -
rename_shared_label(): Rename a shared label -
remove_shared_label(): Remove a shared label
Comments module (new)
-
add_comment(): Add a comment to a task or project -
get_comment(): Get a single comment by ID -
get_comments(): Get all comments for a task or project -
update_comment(): Update an existing comment -
delete_comment(): Delete a comment
Filters module (new)
-
add_filter(): Create a new filter -
get_filter(): Get a single filter by ID -
get_all_filters(): Get all filters -
get_filter_id(): Get filter ID by name -
update_filter(): Update an existing filter -
delete_filter(): Delete a filter
Reminders module (new)
-
add_reminder(): Add a reminder to a task -
get_all_reminders(): Get all reminders -
update_reminder(): Update an existing reminder -
delete_reminder(): Delete a reminder
Workspaces module (new)
-
get_all_workspaces(): Get all workspaces -
get_workspace_users(): Get users in a workspace -
update_workspace(): Update workspace settings -
invite_to_workspace(): Invite a user to a workspace -
leave_workspace(): Leave a workspace
Activity and stats (new)
-
get_activity_logs(): Get activity logs -
get_productivity_stats(): Get user productivity statistics -
get_user_info(): Get current user information
Backups module (new)
-
get_backups(): List available backups -
download_backup(): Download a backup file
Templates module (new)
-
export_template(): Export a project as template -
import_template(): Import a template into a project
Uploads module (new)
-
upload_file(): Upload a file attachment -
delete_upload(): Delete an uploaded file
Projects enhancements
-
get_project(): Get a single project by ID -
update_project(): Update project name, color, favorite status, or view style -
delete_project(): Delete a project -
archive_project(): Archive a project -
unarchive_project(): Unarchive a project -
get_archived_projects(): Get all archived projects
Sections enhancements
-
get_section(): Get a single section by ID -
get_all_sections(): Get all sections across projects -
update_section(): Rename a section -
delete_section(): Delete a section -
move_section(): Move a section to another project -
archive_section(): Archive a section -
unarchive_section(): Unarchive a section
Tasks enhancements
-
get_task(): Get a single task by ID -
update_task(): Update task content, due date, priority, labels, or description -
delete_task(): Delete a task -
close_task(): Mark a task as complete -
reopen_task(): Reopen a completed task -
move_task(): Move a task to another project, section, or parent -
get_completed_tasks(): Get completed tasks with date filtering -
get_tasks_by_filter(): Get tasks using a filter query -
quick_add_task(): Quick add a task with natural language parsing
Collaboration enhancements
-
delete_collaborator(): Remove a collaborator from a project -
accept_invitation(): Accept a project invitation -
reject_invitation(): Reject a project invitation -
delete_invitation(): Delete a pending invitation
Improvements
- Added
escape_json()to all Sync API commands for proper JSON escaping - Added token validation in
call_api()andcall_api_rest()with clear error messages - API base URLs now defined as package constants (
TODOIST_SYNC_URL,TODOIST_REST_URL) - Empty data.frames now return consistent column structure with non-empty results
- Standardized error handling with
req_error()across all REST endpoints - Replaced
print()withmessage()for user-facing output (CRAN compliance) - Updated GitHub Actions workflow to use modern action versions (v2/v4)
- Removed debug message from
call_api()function - Added comprehensive test coverage for all new modules
- Added
skip_if_test_project_missing()helper for more robust integration tests
Bug fixes
- Fixed
move_task()to properly escape IDs preventing JSON injection - Fixed templates export/import functions failing due to glue object type issue
- Fixed
get_comments()empty result missingtask_idandproject_idcolumns - Fixed
get_all_reminders()empty result missingdue_dateandminute_offsetcolumns - Fixed
get_activity_logs()empty result missinginitiator_id,parent_project_id,parent_item_idcolumns - Fixed
get_tasks_by_filter()empty result missingdue_datecolumn - Fixed
get_archived_projects()empty result missingcolorandis_favoritecolumns - Fixed
get_all_sections()empty result missingordercolumn - Fixed
get_all_workspaces()empty result missingis_defaultcolumn - Fixed
get_workspace_users()empty result missingrolecolumn - Fixed
quick_add_task()using hardcoded URL instead ofTODOIST_REST_URL - Added missing
req_error()toquick_add_task()andupload_file()