Skip to content

Fix Issues in edit_task.go — Double Date Formatting and Redundant Annotation Block Execution #464

@inderjeet20

Description

@inderjeet20

Description:

The edit_task.go file in the Taskwarrior (tw) layer contains two critical issues that need to be addressed:

  1. Double Date Formatting Produces Invalid Datetimes
    The file appends T00:00:00 to all date strings, even when the controller has already converted ISO dates to Taskwarrior format. This results in invalid datetime strings like "2026-01-28T14:30:00T00:00:00", which Taskwarrior rejects.

  2. Redundant Annotation Block Execution
    The condition len(annotations) >= 0 is always true, causing the annotation regeneration block to execute unnecessarily, even when no annotations are provided. This leads to redundant operations, such as deleting and re-adding all existing annotations.


Steps to Reproduce:

  1. For Double Date Formatting:

    • Submit a request to edit a task with a wait or due field containing a full ISO datetime (e.g., "2026-01-28T14:30:00").
    • Observe that the resulting Taskwarrior command includes an invalid datetime string.
  2. For Redundant Annotation Block Execution:

    • Submit a request to edit a task without any annotations.
    • Observe that the annotation regeneration block is executed, deleting and re-adding all existing annotations.

Expected Behavior:

  1. Double Date Formatting:

    • The edit_task.go file should only append T00:00:00 to date-only strings (e.g., "2026-01-28") and leave full datetime strings unchanged.
  2. Annotation Block Execution:

    • The annotation regeneration block should only execute when len(annotations) > 0.

Actual Behavior:

  1. Double Date Formatting:

    • The edit_task.go file appends T00:00:00 to all date strings, resulting in invalid datetime strings.
  2. Annotation Block Execution:

    • The annotation regeneration block executes regardless of whether annotations are provided, due to the len(annotations) >= 0 condition.

Suggested Fix:

  1. Double Date Formatting:

    • Add a check in edit_task.go to determine whether the input string is a date-only string or a full datetime string before appending T00:00:00.
  2. Annotation Block Execution:

    • Update the condition to len(annotations) > 0 to ensure the block only executes when annotations are provided.

File:

  • backend/utils/tw/edit_task.go

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions