Any signed-in user — owner or client_manager — can now edit dates directly on the Gantt. Three interaction shapes: - Drag the bar body to move it (both start and target shift by the same number of days, snapped to whole UTC days). - Drag the right edge to resize (target only). - Double-click any card or subtask bar to open a modal with Start + End date inputs, ESC to close, Enter to save. Both card and subtask rows ship the same affordances. Cards go through the existing rescheduleCardAction so the activity-log row keeps recording who moved the date; subtasks go through a new setSubtaskDatesAction (no audit row — matches the existing subtask-toggle pattern). Components touched: - GanttBar gains canEdit / onMove / onResize / onEditRequest. - GanttDateEditor is the inline two-input modal. - ProjectSection forwards four callbacks (card move/resize, subtask move/resize) plus onEditRequest. - GanttPlanView holds the editor's open state and computes one shared timeline range across sections. - GanttClient wraps the view and bridges to the actions. - /plan/page.tsx renders GanttClient. Spec §6 amended to move drag from out-of-scope into the delivered surface. 482/482 unit tests pass (was 471, +11 from bar-math). Integration plan-gantt tests still pass. Build clean. |
||
|---|---|---|
| .. | ||
| plans | ||
| specs | ||