Surfaces SSE board/milestone changes as Gitea toasts (showInfoToast /
showWarningToast) in addition to the silent DOM patch:
- project board: card moved/linked/unlinked, column renamed/removed,
project deleted (warning + delayed redirect so the reason is visible)
- milestone: progress change (title · closed/total · pct), milestone
deleted (warning + delayed redirect on single view)
Own-tab echoes are suppressed via the existing session_tag guard;
toast.ts preventDuplicates (default) coalesces bursts. column.reordered
and project.updated intentionally do not toast (noise). Frontend only;
no backend/event changes. tsc + vite build clean.