Complexity: L
Scope
Rebuild the sync-status view as a SvelteKit route (Svelte 5 runes, Skeleton UI v4) in apps/stacker, consuming the #310 API and the shared packages/design-system/ tokens (consistent with the grader view living in stacker).
- Render the animal x channel table with
in_sync / stale / missing states (color-banded).
- Show current-vs-live version per row.
- Drill-in per animal showing the normalized text diff.
- Security: the live listing content is untrusted. HTML/attribute-escape all interpolated content, and validate http(s) scheme on any URL before it becomes an
href.
Dependencies
Acceptance criteria
ADR: docs/adr/0033-listing-sync-verification.md. Epic: #302.
Complexity: L
Scope
Rebuild the sync-status view as a SvelteKit route (Svelte 5 runes, Skeleton UI v4) in
apps/stacker, consuming the #310 API and the sharedpackages/design-system/tokens (consistent with the grader view living in stacker).in_sync/stale/missingstates (color-banded).href.Dependencies
Acceptance criteria
stalerow exposes a drill-in that renders the text diff (test).javascript:/<script>payload is neutralized (test).ADR:
docs/adr/0033-listing-sync-verification.md. Epic: #302.