State B (actieve sprint geselecteerd, geen draft) hangt nu aan dezelfde vinkje-UI als state A′, maar muteert de transient pending-buffer in plaats van de draft. - PbiList: nieuwe prop activeSprintId. selectionMode = hasDraft || stateBMode. togglePbiInDraft routeert naar upsertPbiIntent (A′) of bulk- toggleStorySprintMembership over eligible child-stories (B, skip blocked). - StoryPanel: idem prop activeSprintId. StoryBlockWithCherrypick muteert draft via upsertStoryOverride in A′ of pending buffer via toggleStorySprintMembership in B (cross-sprint blocked = disabled). - SaveSprintButton (nieuw): client component in page header, alleen zichtbaar als er een actieve sprint is. Disabled bij clean buffer, enabled met teller bij dirty. Klikken calls commitSprintMembershipAction → applyMembershipCommitResult gericht in store + toast bij conflicts. - page.tsx: activeSprintItem.id wordt doorgegeven aan PbiList, StoryPanel en SaveSprintButton. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| backlog-card.tsx | ||
| backlog-hydration-wrapper.tsx | ||
| backlog-split-pane.tsx | ||
| empty-panel.tsx | ||
| new-sprint-metadata-dialog.tsx | ||
| new-sprint-trigger.tsx | ||
| pbi-dialog.tsx | ||
| pbi-list.tsx | ||
| save-sprint-button.tsx | ||
| sprint-definition-banner.tsx | ||
| sprint-draft-banner.tsx | ||
| story-dialog.tsx | ||
| story-panel.tsx | ||
| task-panel.tsx | ||
| url-task-sync.tsx | ||