github.com/jpillora/overseer
v1.5.0
#671 most downloaded on Go modules
jpillora/overseer
What this package is like to depend on
Last release 2 months ago
12 Jun 2026
Ships unpredictably
gaps range from 9 days to 5.8 years
Some releases are documented
notes for 6 of 17 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
40 releases · first in 2016
15 releases in the last 12 months
see the full history below
Release timeline
40 releases · Sep 2016 to Jun 2026Releases
latest 40-
v1.5.012 Jun 2026 -
v1.4.116 May 2026Release notes
Open source →A worker subprocess that inherits the worker's fd 2 (the pipe write-end
when cmd.Stderr is a non-*os.File like our MultiWriter for panic
detection) and outlives the worker keeps the pipe open after the worker
exits. cmd.Wait then blocks forever in its internal I/O drain loop, the
fork() select never fires on cmdwait, and the master never spawns the
next worker — a real 10-minute outage observed on rais-main where a
vscode-server grandchild had inherited the pipe.The new Config.WaitDelay (default = TerminateTimeout) is wired straight
into cmd.WaitDelay. After the worker exits, Go's exec force-closes
parentIOPipes once WaitDelay elapses, the I/O goroutine sees EOF, and
cmd.Wait returns so the master can proceed.Also harden the exit-code extraction: prefer cmd.ProcessState (always
set after process exit) and use errors.As so a WaitDelay-wrapped exit
error still reports the true code instead of falling back to 1.Integration test reproduces the bug with a real binary that spawns a
long-running grandchild via cmd.Stderr = os.Stderr and verifies cmd.Wait
hangs without WaitDelay and returns within budget with it.Co-Authored-By: Claude Opus 4.7 (1M context) [email protected]
-
v1.4.012 May 2026Nothing published for this version
-
v1.3.406 May 2026Nothing published for this version
-
v1.3.305 May 2026 -
v1.3.3-0.20260429215739-8912f991155e29 Apr 2026 pre-releaseNothing published for this version
-
v1.3.224 Apr 2026Release notes
Open source →A signal arriving between
mp.workerCmd = cmdandcmd.Start()
returning was silently dropped (Process still nil), so a SIGTERM racing
a fresh fork never reached the new worker and systemd had to wait out
TerminateTimeout before sending SIGKILL. handleSignal now queues under
a new workerMux; fork drains the queue once Start succeeds.Co-Authored-By: Claude Opus 4.7 (1M context) [email protected]
-
v1.3.121 Apr 2026Release notes
Open source →Filter SIGURG (Go 1.14+ runtime preemption) in handleSignal and stop
exiting from sendSignal when the worker is already gone, so panicking
workers reach the cmdwait branch where OnPanic fires and the real exit
code propagates.Co-Authored-By: Claude Opus 4.7 (1M context) [email protected]
-
v1.3.021 Apr 2026Nothing published for this version
-
v1.2.020 Apr 2026Release notes
Open source →OnPanic: when set, slave stderr is tailed through a fixed-size ring
buffer and scanned by panicparse on exit; matching snapshots are
delivered to the user callback in a goroutine so a slow consumer can't
stall the fork loop.ShouldRestart: gates auto-restarts after a fetch. When it returns false
the restart is recorded as pending and re-evaluated on each fetch-loop
iteration. Manual Restart()/RestartSignal bypass the gate.Restart orchestration now claims restarting/pendingRestart under
restartMux so the fetch loop, signal handler and fork goroutine don't
race on shared state.Panic detection lives in its own opanic subpackage and re-exports the
panicparse snapshot types so consumers only import opanic.Co-Authored-By: Claude Opus 4.7 (1M context) [email protected]
-
v1.1.614 Jul 2020Nothing published for this version
-
v1.1.6-0.20200714210323-94fc750bf4dc14 Jul 2020 pre-releaseNothing published for this version
-
v1.1.510 Jul 2020Nothing published for this version
-
v1.1.5-0.20200710081528-fcf3e6b7d6c010 Jul 2020 pre-releaseNothing published for this version
-
v1.1.5-0.20200617120251-7279a36d9d3f17 Jun 2020 pre-releaseNothing published for this version
-
v1.1.407 Apr 2020Nothing published for this version
-
v1.1.4-0.20200406151523-a916ad79aa4206 Apr 2020 pre-releaseNothing published for this version
-
v1.1.330 Mar 2020Nothing published for this version
-
v1.1.3-0.20200330044506-a25b962f19c830 Mar 2020 pre-releaseNothing published for this version
-
v1.1.229 Mar 2020Nothing published for this version
-
v1.1.129 Mar 2020Nothing published for this version
-
v1.1.028 Mar 2020Nothing published for this version
-
v1.0.028 Mar 2020Nothing published for this version
-
v0.0.0-20260612073204-8c9d32d0c0ed12 Jun 2026 pre-releaseNothing published for this version
-
v0.0.0-20260516083939-4ee4c4e23bc216 May 2026 pre-releaseNothing published for this version
-
v0.0.0-20260512052908-8406aace075612 May 2026 pre-releaseNothing published for this version
-
v0.0.0-20260506123230-aca1caf1e20406 May 2026 pre-releaseNothing published for this version
-
v0.0.0-20260429215739-8912f991155e29 Apr 2026 pre-releaseNothing published for this version
-
v0.0.0-20200714210323-94fc750bf4dc14 Jul 2020 pre-releaseNothing published for this version
-
v0.0.0-20200329031230-6da47e6b7f6129 Mar 2020 pre-releaseNothing published for this version
-
v0.0.0-20200329021842-6707b1ca9c7c29 Mar 2020 pre-releaseNothing published for this version
-
v0.0.0-20200328160001-6877a7e73f6a28 Mar 2020 pre-releaseNothing published for this version
-
v0.0.0-20200328150200-3a1ea3ab0fc928 Mar 2020 pre-releaseNothing published for this version
-
v0.0.0-20200328143757-3efe3e18892428 Mar 2020 pre-releaseNothing published for this version
-
v0.0.0-20191216115108-e26c3c66567f16 Dec 2019 pre-releaseNothing published for this version
-
v0.0.0-20190427034852-ce905584661627 Apr 2019 pre-releaseNothing published for this version
-
v0.0.0-20180519165803-9891188db5a519 May 2018 pre-releaseNothing published for this version
-
v0.0.0-20180518013020-bc46621374e618 May 2018 pre-releaseNothing published for this version
-
v0.0.0-20170824103605-7516f444813c24 Aug 2017 pre-releaseNothing published for this version
-
v0.0.0-20160914130436-cfea0d49979914 Sep 2016 pre-releaseNothing published for this version