Skip to content

moooon

Motir

Vibe your whole project. Bring an idea — Motir's three AI layers plan it, track it, and ship it, end to end. You're looking at Motir, built in Motir.

  • Vibe Project
  • Open Source
  • AI Agent
  • AI Loop
1
requests
0
upvotes
145
planned
1,361
shipped

Motir · Work items

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 :213 via validateName); a complete sprint is frozen (:210), active/planned editable.
  • PATCH /api/sprints/[id] accepts name (app/api/sprints/[id]/route.ts:31-108) + MCP update_sprint (lib/mcp/tools/updateSprint.ts:23).
  • The gap: no UI calls PATCH /api/sprints/[id] for a rename. The only name-setting UI is StartSprintDialog (StartSprintDialog.tsx:104,170), which posts to /api/sprints/[id]/start and 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 via PATCH and re-renders the new name; complete sprint's name is not editable (frozen).

Context refs

  • Service lib/services/sprintsService.ts:202,213; route app/api/sprints/[id]/route.ts:31; the start-only path StartSprintDialog.tsx:104; disabled menu SprintContainer.tsx:198.