77284e8e7b
- dashboard full re-render now reconciles sections (only replaces changed ones) instead of wholesale .dashboard-dynamic innerHTML swap -> editing an entity no longer jumps the whole dashboard - Recent Activity widget live DOM + perf strip preserved across re-renders; widget skips re-fetch when already populated (no flash) - sweep stray non-section nodes so empty->populated doesn't leave an orphan 'no targets' banner (review-caught regression) - Activity list rows use a CSS grid (fixed badge/actor columns) so message column aligns consistently across rows