feat(client): add Gantt/timeline scheduling to youtrack-client #77
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/YTCLI-25-gantt-timeline-scheduling"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Add a Gantt-equivalent capability built from issue primitives, since YouTrack exposes no public Gantt REST resource (the dev-portal Gantt entity is the in-server workflow-scripting API, not REST). The model is reconstructed client-side per the JetBrains configure-gantt-chart reference.
youtrack-client (api.rs / models.rs):
yt CLI parity:
Tests cover timeline computation (end-from-estimation, stored-due-date precedence, dependency/aggregation resolution), link create/delete/list over wiremock, set_date_field, and a compile-time Send assertion on every new function.
#YTCLI-25
Co-Authored-By: Claude Opus 4.8 (1M context) noreply@anthropic.com
Add a Gantt-equivalent capability built from issue primitives, since YouTrack exposes no public Gantt REST resource (the dev-portal Gantt entity is the in-server workflow-scripting API, not REST). The model is reconstructed client-side per the JetBrains configure-gantt-chart reference. youtrack-client (api.rs / models.rs): - build_timeline + TimelineSelector + TimelineConfig: compute a serializable Timeline from each issue's start-date field, estimation/duration, dependency links, and aggregation links. Config defaults match the JetBrains Gantt defaults (Start date, Estimation, depends on, parent for) and every name is overridable. End date is the stored due date when present, else start + ceil(estimation / minutes_per_day) calendar days. - create_link / delete_link / list_issue_links: REST-backed via /api/issues/{id}/links, resolving the link slot by its inward/outward verb or type name. IssueLink gains id + direction; IssueLinkSummary is the focused list result distinct from inspect_issue. - set_date_field: set a date custom field by name in yyyy-MM-dd form (midnight-UTC ms), with an inlined discover-on-400 retry. - Every new free function returns a Send future (the discover-on-400 retry is inlined rather than routed through the &dyn Fn body builder that makes update_state / update_enum_field / update_estimation non-Send), so the MCP can wrap them. - format_ymd_utc helper in output.rs. yt CLI parity: - issue timeline (alias gantt): read the computed timeline for ids or --query, table or --json. - issue schedule: set start / due date fields. Link add/remove already exist as issue link / unlink. Tests cover timeline computation (end-from-estimation, stored-due-date precedence, dependency/aggregation resolution), link create/delete/list over wiremock, set_date_field, and a compile-time Send assertion on every new function. #YTCLI-25 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>