Sprints island round 1: parallel list + ConfirmDialog + SDK #29 workaround #103

Closed
opened 2026-04-21 13:27:51 +00:00 by zaelgohary · 0 comments
Member

Mirrors the round-1 drill applied to Tasks (#97), Stories (#98), Projects.

Bugs:

  • milestone_service.rs::list() fetches milestones with a sequential for sid in sids { get(&sid).await } loop — N+1 latency.
  • milestone_detail_view.rs::handle_delete fires the delete immediately on click with no ConfirmDialog; accidental clicks are irreversible.
  • milestone_service.rs::delete() surfaces Deserialization error: invalid type: boolean to the UI (SDK returns bool but generated client expects String — hero_osis #29). Tasks/Stories already tolerate it; Sprints doesn't.

Out of scope for this round (tracked separately):

  • milestone_form.rs missing date fields — already #62.
  • SprintsView::Timeline currently routes to ListView as a placeholder — needs a real timeline view.
Mirrors the round-1 drill applied to Tasks (#97), Stories (#98), Projects. **Bugs**: - `milestone_service.rs::list()` fetches milestones with a sequential `for sid in sids { get(&sid).await }` loop — N+1 latency. - `milestone_detail_view.rs::handle_delete` fires the delete immediately on click with no ConfirmDialog; accidental clicks are irreversible. - `milestone_service.rs::delete()` surfaces `Deserialization error: invalid type: boolean` to the UI (SDK returns bool but generated client expects String — hero_osis #29). Tasks/Stories already tolerate it; Sprints doesn't. **Out of scope for this round (tracked separately)**: - `milestone_form.rs` missing date fields — already #62. - `SprintsView::Timeline` currently routes to `ListView` as a placeholder — needs a real timeline view.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
lhumina_code/hero_archipelagos#103
No description provided.