Atlas cards now use the Signal tab StatCard tiles, shared Card, badges,
action buttons, IATA chips and search bar. Polling moves to TanStack Query
with the app retry policy, pauses while rate-limited, and recovers a pin
whose server ID changed by its full public key. Search results show a key
prefix and explain short or non-hex input; heard-by states which packet it
counts. Sparkline component removed in favour of the stats one.
Bugs: clear compare params on tab change, recover channel live messages after a 429,
observer copy link keeps only region params, route table no longer navigates on region
change with nothing selected, map borders memo on data identity, live overview can't
resurrect a failed query, French relative times, no language write on first visit,
0/0 node locations hidden outside the map, path/signal stats use the shared retry rule.
i18n: node/packet/mesh/observer strings that were still hardcoded after #62.
Cleanup: formatUtc, ACTION_BUTTON_CLASS, observer-stats, useWindowedStats, observer-id;
observer pages use StatCard/Card/Field/Segmented/SearchBar/SelectDropdown; one details
chrome on the stats tabs; comment and translations-guide trims; localStorage stub for
Node 26 in the test setup.
Lands the stacked web PRs #75, #79, #80, #81, #83, #85, #87, #89, #92, #95 and #99 in one squash. Server counterparts #166-#176 are merged. Remaining review items follow in a fix PR.