fix: task date tools expose only start + due (drop the UI-invisible end_date) - EXO-88465 - #627
Merged
bmestrallet merged 1 commit intoJul 22, 2026
Conversation
… that the UI doesn't show) - EXO-88465 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Follow-up to #620 addressing @jihed_chabbeh's report on EXO-88465: "setting start + end date on the same prompt sets only the start date; afterwards the end date can't be set by AI."
Root cause
A task has three persisted date columns (
START_DATE/END_DATE/DUE_DATE), but the eXo Task UI only shows "Start Date" + "Due date", and that "Due date" binds todueDate(TaskFormDatePickers.vuev-model="dueDate"→TaskDrawer.vueupdateTaskDueDatesetstask.dueDate). The UI never reads or writesendDate— it is vestigial.The MCP tools, however, exposed a separate
end_datethat writesendDate. So when a user asked EVA to set the "end date", the agent wrote the field the UI doesn't display → the visible "Due date" stayed empty ("only start was set / end can't be set"). Reproduced live:set_task_dates(start, end)sets both fields server-side, but the UI shows only Start because it readsdueDate(which was never set); workload = due − start, confirmingdueDateis the canonical end-of-window.Fix
Align the AI tools to the UI — expose only
start_date+due_date:end_dateparameter +setEndDate(...)fromset_task_dates,create_task_in_project,create_personal_task(Javadoc updated;endDateleft untouched elsewhere for legacy code).end_datefrom those three tools inai-tool-definitions.json; corrected theset_task_datesdescription from "omit a date to clear it" → "omitting a date leaves it unchanged" (the patch semantics from fix: set_task_dates wipes other dates (patch semantics) - EXO-88465 #620).Now "set the end/due date" via EVA writes
dueDate— the field the UI shows.Tests
TaskMcpToolTestupdated to the new signatures; kept the start-only patch regression and added a due-only one (updates due, never touches start/end).mvn test -pl services -Dtest=TaskMcpToolTest→ 55 run, 0 failures. Verified the UI→dueDatebinding in the Vue components before removing anything.🤖 Generated with Claude Code