MOTIR-1493Done
Add Rename to the sprint ⋯ menu — wire the existing PATCH /api/sprints/[id] name (UI gap)
Verified against shipped motir-core. Backend COMPLETE — the gap is UI only (same disabled ⋯ menu as MOTIR-1492).
Reality
sprintsService.updateSprint()handles the name (lib/services/sprintsService.ts:202, name at:213viavalidateName); a complete sprint is frozen (:210), active/planned editable.PATCH /api/sprints/[id]acceptsname(app/api/sprints/[id]/route.ts:31-108) + MCPupdate_sprint(lib/mcp/tools/updateSprint.ts:23).- The gap: no UI calls
PATCH /api/sprints/[id]for a rename. The only name-setting UI isStartSprintDialog(StartSprintDialog.tsx:104,170), which posts to/api/sprints/[id]/startand forces planned→active — i.e. you can't rename a sprint without STARTING it. The general⋯menu is disabled.
Fix (UI only, motir-core)
Add Rename to the sprint ⋯ menu (inline edit or a small dialog, reuse FormField) → PATCH /api/sprints/[id] with { name }; validation per validateName; re-render the name across surfaces (page-state-after-mutation contract). blocked_by MOTIR-1492 (which enables the menu).
Acceptance criteria
- Renaming a planned/active sprint from the
⋯menu persists viaPATCHand re-renders the new name; complete sprint's name is not editable (frozen).
Context refs
- Service
lib/services/sprintsService.ts:202,213; routeapp/api/sprints/[id]/route.ts:31; the start-only pathStartSprintDialog.tsx:104; disabled menuSprintContainer.tsx:198.