The Network tab already previews rough compatibility for peers you
haven't connected with yet (approximate_aspects, sun-sign only, since
that's all you know before consent exchange). Once actually connected
you have their exact birth data, but the only way to see how you two
read together was opening their page and reading the full Synastry
tab aspect-by-aspect — no glanceable summary existed for people you're
already talking to.
core: `SynastryTone` (Harmonious/Balanced/Challenging) classifies a
synastry aspect list by a simple weighted tally (trine/sextile +1,
square/opposition -1, minor aspects neutral), with a generous ±2
middle band so a handful of aspects doesn't tip to an extreme on a
thin margin. Explicitly documented as a rough glance-value signal, not
a real reading — real synastry weighs which specific bodies and houses
are involved far more than a raw count ever could. Six tests written
against the tally logic before wiring anything up, including a
boundary test (score 2 vs 3) to pin the exact cutoff.
app: connected peers' sidebar rows now show a small glyph (✨/•/⚡)
after their name, tooltip spelling out the label, computed from their
already-known exact birth data + the local user's own chart.