Load mobile update conversations without blocking core detail #761

Closed
opened 2026-08-13 18:20:03 +00:00 by timmy · 0 comments
Owner

Problem

Opening a supported unread update blocks on conversation history. notification_detail() gathers subject, latest comment, subscription, and the newest conversation page as one all-or-nothing operation, so a slow or failed comments endpoint makes the entire mobile update unusable even when its core subject and actions are available.

Vertical slice

  • Return core update detail without waiting for conversation history.
  • Hydrate the newest conversation page independently after the sheet is usable.
  • Preserve subject and actions when conversation loading fails, with an inline retry that does not reopen the update.
  • Prevent stale conversation responses from rendering after the operator moves to another update.

Acceptance tests

  • Core detail succeeds without requesting conversation pages.
  • The sheet renders core detail before a deliberately stalled conversation request resolves.
  • Conversation failure retains core detail and exposes retry; retry hydrates comments in place.
  • Moving to another update ignores an older conversation response.
  • Existing prefetch, newest-activity positioning, offline detail, and triage tests remain green.

Evidence / non-duplication

Current origin/main (7c86f28) performs the blocking gather in src/gitea_proxy.py:951-958 and waits for it in frontend/my-work.js:430-448. No open/closed issue title or recent commit combines progressive detail hydration with conversation-failure isolation; related #747-#759 work covers triage resume, discovery, prefetch, and read positioning instead.

## Problem Opening a supported unread update blocks on conversation history. `notification_detail()` gathers subject, latest comment, subscription, and the newest conversation page as one all-or-nothing operation, so a slow or failed comments endpoint makes the entire mobile update unusable even when its core subject and actions are available. ## Vertical slice - Return core update detail without waiting for conversation history. - Hydrate the newest conversation page independently after the sheet is usable. - Preserve subject and actions when conversation loading fails, with an inline retry that does not reopen the update. - Prevent stale conversation responses from rendering after the operator moves to another update. ## Acceptance tests - Core detail succeeds without requesting conversation pages. - The sheet renders core detail before a deliberately stalled conversation request resolves. - Conversation failure retains core detail and exposes retry; retry hydrates comments in place. - Moving to another update ignores an older conversation response. - Existing prefetch, newest-activity positioning, offline detail, and triage tests remain green. ## Evidence / non-duplication Current `origin/main` (`7c86f28`) performs the blocking gather in `src/gitea_proxy.py:951-958` and waits for it in `frontend/my-work.js:430-448`. No open/closed issue title or recent commit combines progressive detail hydration with conversation-failure isolation; related #747-#759 work covers triage resume, discovery, prefetch, and read positioning instead.
timmy self-assigned this 2026-08-13 18:20:03 +00:00
timmy closed this issue 2026-08-13 18:27:42 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
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: stackchain/stackchain-dashboard#761
No description provided.