A small cloud-upload glyph appears next to any row whose id has a
queued offline write (offline-created temp ids and pending edits both
count). Tooltip reads "Pending sync — will save when online". Renders
nothing during normal online operation so the list stays clean.
- DB: `watchPendingIds(domain)` streams the union of target_id and
temp_id across the queue, scoped per domain.
- Per-domain Riverpod stream providers for notes / tasks / projects.
- New `PendingSyncBadge` widget — used by KnowledgeItemCard (both
list and grid variants), `_ProjectCard`, and `_TaskRow` in the
project workspace.
flutter analyze clean; 21 tests pass. Closes#147 — all four phases
of Tier 2 offline mode are in place.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>