e7f67bada9f63c30cd55b8cdcc31744f7aecda55
QA-flagged gap: the web surface could only ADD a ticket to a sprint, never change or clear it, despite the backend already exposing both ticket_assign_sprint and ticket_unassign_sprint. - useTicketDetail: new setSprint(sprintId | null) method (additive, also available to the desktop TicketDetail — unused there today, no behaviour change), routing through the existing TicketGateway.setTicketSprint. - WebTicketDetail: Sprint selector in "Statut et priorité", immediate save like status/priority; empty value clears back to "Sans sprint". - WebSprintsView: each sprint card now shows its tickets (compact list, resolved client-side like the desktop SprintManager) with a "Retirer du sprint" action per ticket, calling assignSprint(ref, null) — symmetric with "Ajouter tickets". Extracted the card into a SprintCard subcomponent to keep the growing card readable. - Tests: WebTicketsSprints.test.tsx now has 16 tests (was 10) — added sprint change/clear, sprint removal from the Sprints tab, agent assign/unassign, ticket link/unlink, carnet save, and free-text search filtering. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
The file is empty.
Description
Languages
Rust
80.5%
TypeScript
19.4%