cpulse v0.4.0
v0.4.0
cpulse is now a startup debugger, not just a state viewer. It names the root cause, runs health probes inside containers, draws a scaled startup timeline, and presents everything in a lazydocker-style shell.
Added
cpulse doctor— headless diagnosis that prints root cause + findings and exits1on any critical finding. Filter with--project NAME.- Doctor engine — twelve rules covering blocked-by-unhealthy, failed/unhealthy services, init failures, missing healthchecks, restart loops, OOM kills, slow startup, and common healthcheck/network misconfigurations.
- Root-cause analysis — walks unsatisfied
depends_onchains to the broken endpoint and surfaces the critical path plus a useful log line per culprit. - Health probes — Health tab (
4) inspects the compose healthcheck;Enterruns it inside the container (binary check, one-shot run, port listening, URL host analysis). - Startup timeline — project Timeline tab (
2/t) with a scaled Gantt of display-state transitions (staggered bars, labeled axis). - Graph tab — roomy pstree with edge conditions (
needs postgres:healthy ✕). - CPU/MEM stats — live columns in the service list and sparklines on the Stats tab (2s ticker; 500ms Docker poll unchanged).
degradedstate —⚠when a running container has restarted 3+ times.- Waiting-since hints — blocked services show how long they've been waiting (≥5s).
Changed
- Lazydocker-style UI — left column (project + nested dependency tree), right main panel with context-sensitive tabs:
- Service: Logs · Stats · Deps · Health (
1–4) - Project: Doctor · Timeline · Graph (
1–3)
- Service: Logs · Stats · Deps · Health (
- Actions menu moved from
atox(restart, stop, start, rebuild, cascade, probe, exec). ffilter now cycles all → failed → waiting;bretired.d/tjump to Doctor / Timeline;Enterzooms (or jumps / runs probe);Escalways goes back and never quits.- Deps tab now includes impact: direct dependents, transitive dependents, and suggested restart order.
- README updated for the doctor CLI and new keybindings.
Fixed
- GoReleaser Homebrew formula path pointed at the tap's
Formula/directory.
Breaking / keybinding changes from v0.3.0
a→xfor the actions menub(blocked-only filter) removed; usefto cycle into waiting- Inspector Overview tab replaced by Stats / Health / project Doctor tabs