Skip to content

Wigo 1.0.1 - #41

Merged
carsso merged 6 commits into
masterfrom
v1.0.1
Aug 30, 2026
Merged

Wigo 1.0.1#41
carsso merged 6 commits into
masterfrom
v1.0.1

Conversation

@carsso

@carsso carsso commented Aug 30, 2026

Copy link
Copy Markdown
Member

Five things, four of them found by people using 1.0.0.

Merging this publishes the release. VERSION is 1.0.1 and no v1.0.1
tag exists, so once the CI is green on master the tag, the GitHub release with
the three .deb, and the multi-arch image follow on their own.

What is in it

A host's own status reaches its timeline. Only Down and Up ever wrote a
host level row, so a machine that never stopped answering had an empty band and
the screen said nothing known over that window about one it had been watching
for a month. Diagnosed against a real fleet: the host timeline answered 0
changes where the probe timeline answered 5.

The whole tree is walked rather than the host being updated — a master of
masters sees the hosts two levels down only inside their trees, and hooking the
update alone left exactly those with an empty band.

The history of the hosts that push. They cannot be asked anything, so they
had no graphs at all and the API answered a 501 explaining why. Their
measurements arrive with every push and were dropped; they are kept now, under
the name they came from. Only newer ones: a client pushes every ten seconds for
a probe that runs every minute, and writing each arrival stored one measurement
six times.

The screen says which setting is refusing a change. It printed set
AllowWriteActions in [Http]
whatever the reason, so a push client that had
simply not set AllowRemoteControl sent its operator editing the wrong file on
the wrong machine.

The timeline tooltip no longer shrinks towards the right edge. An
absolutely positioned box with only a left offset is squeezed into whatever room
is left beside it: the same tooltip measured 556px wide on the left of the band
and 192 on the right, wrapping into twice the height.

needrestart looks at services, and names them. It ran with -k alone, so it
only ever checked the kernel, and answered restart not required on the exit
code that means the opposite.

Two bugs the live runs caught

RecomputeStatus zeroed its field before building it back up, and a concurrent
reader recorded that nought as a real transition to ERROR. And the memory of
where each host stood was lost on restart, cutting every band with a fresh
never watched — it is read back from the database now.

Host.Status is still written without synchronisation. This makes it a single
assignment, so a reader sees the old value or the new one rather than an
intermediate, but the formal race predates this and is not addressed here.

carsso and others added 6 commits August 30, 2026 00:42
The screen printed "set AllowWriteActions in [Http]" whatever the reason, so a
push client that had simply not opted in sent its operator editing the wrong
file on the wrong machine. The api names the one that applies now.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
A pushing host cannot be asked anything, so those had no graphs at all and the
screen answered a 501 saying why. Their measurements arrive with every push and
were dropped ; they are kept now, under the name they came from.

Only newer ones : a client pushes every ten seconds for a probe that runs every
minute, and writing each arrival stored one measurement six times.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
An absolutely positioned box with only a left offset is squeezed into whatever
room is left beside it : the same tooltip measured 556px wide at the left of
the band and 192 at the right, wrapping into twice the height. Its size comes
from its content now, and its position is clamped rather than flipped past a
threshold -- on a phone it is as wide as the band, and no threshold fits that.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
It ran with -k alone, so it only ever checked the kernel and answered "restart
not required" on the exit code that means the opposite. It checks libraries
now, tells a reboot apart from a routine restart, and says which services --
knowing that something needs restarting is not actionable.

Taken from a probe Germain had been running, with the parsing made to read the
section it wants : the listing also holds containers and sessions, and a
session looks like "someone @ pts/0".

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Only Down and Up ever wrote a host level row, so a machine that never stopped
answering had an empty band and the screen said "nothing known over that
window" about one it had watched for a month. What is read there is health,
and health is the worst of its probes.

The whole tree is walked rather than the host being updated : a master of
masters sees the hosts two levels down only inside their trees.

Two things the live run caught. RecomputeStatus zeroed the field before
building it back up, and a concurrent reader recorded that nought as a real
transition to ERROR. And the memory of where each host stood was lost on
restart, cutting every band with a fresh "never watched" -- it is read back
from the database now.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@carsso
carsso merged commit 4359d37 into master Aug 30, 2026
2 checks passed
@carsso
carsso deleted the v1.0.1 branch August 30, 2026 11:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant