The map only ever gained density: hubs were sized by lifetime-cumulative
bytes (so they never shrank) and were never removed. Now each hub has a
decaying activity level — quiet districts visibly shrink toward a dormant
dot — and after a configurable idle timeout (~40s, NC_REAP_TICKS) the hub
is demolished: faded out, removed with its road, and its per-org state
pruned in the controller.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The latency reposition moved hubs to their RTT radius without checking
label collisions, so a gliding district could land on top of a neighbour.
Make both placement paths overlap-aware via the existing LayoutSolver:
keep distance = latency (the meaningful axis) but rotate the arbitrary
angle to clear other labels. Track each hub's target position so
same-tick moves avoid where others are heading, not just where they are.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
A native macOS network monitor that renders live traffic as a top-down
neon city: your Mac is downtown, remote orgs are glowing districts, and
traffic is cars of light driving the roads.
Architecture:
- NetworkCityCore: swappable data layer behind a ConnectionSource protocol
(nettop-backed today), plus pure/tested logic — traffic diffing, org
classification (reverse-DNS + CIDR), traffic classes, hub-and-spoke
expansion policy, label anti-overlap, and latency→distance layout.
- NetworkCityApp: SwiftUI + SpriteKit city — auto-expanding districts,
protocol-coloured cars, click-to-inspect panel, and latency-as-distance
(districts glide to their measured RTT).
- nettop-probe: CLI proof of the data layer.
44 tests passing.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>