Efficiency Rules
These are the non-negotiable rules every change to Breeze has to follow. They're the reason the app stays small and the battery lasts.
Zero-allocation hot path
- No heap allocation in any code that runs at polling frequency.
- Pooled / reusable buffers for system calls; ring buffers instead of growable arrays for history.
- No allocating iterator chains in hot paths — plain loops with early returns.
Adaptive resource usage
- Poll less when idle; background tabs stop their monitor entirely.
- UI updates are event-driven, never on a clock.
- Never run a timer when nothing needs it.
Stay out of the kernel's way
- Process info comes from a direct per-OS backend (
libprocon macOS) — never by shelling out topsortop. - Validate a PID's process name before sending it any signal.
What never ships
- No GPU rendering.
- No animations, transitions, or visual effects.
- No telemetry, analytics, or ads — the only network call is an update check on launch you can decline.
- Great defaults out of the box; configuration is opt-in — parsed once at launch, so it adds zero idle cost.
A feature that can't justify its CPU cost with a measurable user benefit doesn't belong in Breeze.