Description
The Kanban board currently shows a snapshot of work items at the moment the page was loaded. If another user (or a webhook) changes a work item's state, assignee, or title, the board does not reflect the change until the user manually refreshes.
Add a "Live update" capability so the board stays in sync without a full page reload.
Expected Behavior
- New tickets/work items added to the project appear on the board.
- State transitions (e.g. New → Active → Closed) move cards to the correct column without a manual refresh.
- Assignee, title, priority, and remaining-effort changes update on the existing card.
- Removed/deleted items disappear.
Notes / Implementation Options
- Polling — easiest first cut: refetch the standup data every N seconds (e.g. 30s) while the tab is visible. There is already module-level caching in `src/app/kanban/page.tsx` (`STANDUP_CACHE_TTL_MS`); a similar tick can drive a refetch and merge.
- Visibility-aware — only poll when `document.visibilityState === 'visible'` to avoid wasted API calls.
- Diff merge — to avoid flicker / scroll jumps during drag, merge new data into the existing board rather than replacing wholesale; preserve any pending drag state.
- Future: replace polling with a server-sent events / websocket channel fed by DevOps service hooks once the email channel work has settled.
Environment
- Version: 0.9.0
- Page: `/kanban`
Description
The Kanban board currently shows a snapshot of work items at the moment the page was loaded. If another user (or a webhook) changes a work item's state, assignee, or title, the board does not reflect the change until the user manually refreshes.
Add a "Live update" capability so the board stays in sync without a full page reload.
Expected Behavior
Notes / Implementation Options
Environment