Problem
Two small typography polish gaps app-wide:
1. Tabular numbers (miifb #9) — only MemoryDetail.svelte (2 rules) uses font-variant-numeric: tabular-nums. Dynamically changing numbers elsewhere use proportional digits → horizontal layout shift on every update:
Dashboard.svelte stats values
LifecycleView.svelte status card values (active/deprecated counts refresh after actions)
ConsolidatePanel.svelte similarity badge + threshold slider readout (changes per drag tick)
NamespaceFilter.svelte count
2. Text wrapping (miifb #10) — zero usage of text-wrap in the app:
- Headings (h1/h2/h3, section headers) →
text-wrap: balance
- Multi-line body/description text →
text-wrap: pretty (avoids orphan words at ~900px content width)
Fix
- Add to
app.css (systemic, one place):
h1, h2, h3, h4 { text-wrap: balance; }
p, .section-desc, .subtitle { text-wrap: pretty; }
.card-value, .similarity-badge, .threshold-control strong, .count { font-variant-numeric: tabular-nums; }
(or per-component where scoped styles require)
- Verify badge/count elements don't rely on proportional-digit widths for centering
Source
Full-app UI audit (miifb #9 tabular numbers, #10 text wrapping).
Problem
Two small typography polish gaps app-wide:
1. Tabular numbers (miifb #9) — only
MemoryDetail.svelte(2 rules) usesfont-variant-numeric: tabular-nums. Dynamically changing numbers elsewhere use proportional digits → horizontal layout shift on every update:Dashboard.sveltestats valuesLifecycleView.sveltestatus card values (active/deprecated counts refresh after actions)ConsolidatePanel.sveltesimilarity badge + threshold slider readout (changes per drag tick)NamespaceFilter.sveltecount2. Text wrapping (miifb #10) — zero usage of
text-wrapin the app:text-wrap: balancetext-wrap: pretty(avoids orphan words at ~900px content width)Fix
app.css(systemic, one place):Source
Full-app UI audit (miifb #9 tabular numbers, #10 text wrapping).