- New foundations/external-objects story renders the §6 state matrix,
pill examples, inline markdown decoration, severity-sorted related-work
panel, and the projects sidebar rollup
- Make storybook bundle by aliasing node:crypto to a browser-safe stub so
shared/external-objects.ts (server-only canonicalizer) can be statically
imported without breaking Vite
- Inline a browser-safe mention-source label helper in
useIssueExternalObjects so the UI does not pull node:crypto at runtime
- externalObjectDominantCount now returns 0 when the highest severity is
muted, matching the rollup-hide rule
- Backfill inbox-test fixtures for the new externalObjectStatuses field
- Add vitest coverage for external-objects helpers, the inline markdown
decorator (known/unknown URL, code exclusion, casing tolerance, liveness
copy), and the pill / status summary components
Co-Authored-By: Paperclip <noreply@paperclip.ing>
- Extend status-colors with category, badge, liveness, and severity tokens
shared by every external-object surface
- Bump .paperclip-mention-chip min-height to 24px on touch viewports for
WCAG 2.5.5 target size and add an external-object data-mention-kind hook
- Introduce host-owned helpers (label, icon, severity ranking, tone fallback)
and a usePrefersReducedMotion hook so the running spinner respects motion
preferences
- New presentational primitives: ExternalObjectStatusIcon (with stale clock
overlay), ExternalObjectPill, and ExternalObjectStatusSummary
Co-Authored-By: Paperclip <noreply@paperclip.ing>