Skip to content

Say which kind of empty the Live page is - #49

Merged
blessdyb merged 2 commits into
mainfrom
fix/say-when-nothing-is-being-read
Oct 1, 2026
Merged

blessdyb merged 2 commits into
mainfrom
fix/say-when-nothing-is-being-read

Conversation

@blessdyb

@blessdyb blessdyb commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Shipping as v0.5.14. Reported from a desktop: "I see nothing in live even I refreshed firefox".

What was actually wrong

Nothing, in the window, the daemon or the probes. Payload capture had run out — its eight-hour session had ended — so the daemon was reading nothing. The Live page said:

Nothing read in this window
That is not the same as nothing happening. Coverage says what could not be read.

which reads as your machine was quiet when it means Flowlight stopped reading. Confirmed on the machine:

$ flowlightd budget
Payload capture has run out and is no longer reading anything. Renew it to start again.

$ journalctl -u flowlightd | grep 'run out'
12:09:36 payload capture has run out and has stopped. Connections are still attributed.

The daemon knew, logged it, and would say it on demand. The window never asked. The handshake it does ask carries storing, which is built once at startup and hard-coded true, so it cannot express something that becomes true later.

What changed

  • The window asks whether payloads are being read on every tick, on whichever page is open — the same two seconds as everything else. (It was throttled to ten seconds at first; a live view that takes ten seconds to admit it stopped being live is this same bug, quieter.)
  • A banner says so and carries a Renew button, because somebody reading "renew it" wants to renew it. It is a second banner so it cannot fight with the one the handshake owns.
  • The empty page names which of the three silences it is: switched off, run out, or genuinely quiet.

Verified on the machine first

A controlled expiry, rather than a guess:

live session        → captured
after expiry        → not captured
renewed, no restart → captured      (within the 2s budget poll)

That last line also retired a bug I thought I had: --renew works without a restart. My first test made the request one second after renewing and lost the race to the poll.

Reading::of is the mapping, extracted so it can be tested without a display. The tests were run against the old behaviour — one page for every silence — and two of them failed there before being trusted here.

Worth knowing

The session is wall-clock. The machine this came from had jumped forward ~6.6 hours (NTP inactive, RTC disagreeing), which ended an eight-hour session early and also parked every stored request outside the "Last hour" view.

🤖 Generated with Claude Code

blessdyb and others added 2 commits October 1, 2026 08:33
Reported from a desktop: "I see nothing in live even I refreshed firefox". Nothing was wrong with the
window, the daemon or the probes. Payload capture had run out — its session ended — so the daemon was
reading nothing, and the Live page said "Nothing read in this window", which reads as "your machine was
quiet" when it means "Flowlight stopped reading".

The daemon knew. It logged `payload capture has run out and has stopped` when it happened, and
`flowlightd budget` says it on demand. The window never asked. The handshake it does ask carries
`storing`, which is built once at startup and hard-coded true, so it cannot express a thing that becomes
true later.

So the window now asks, every ten seconds, on whichever page is open — a session ending is not a
second-by-second event, and the person who needs telling is the one who left the Live tab open. When
nothing is being read a banner says so and carries a Renew button, and the empty page says which of the
three silences it is: switched off, run out, or genuinely quiet.

`Reading::of` is the mapping, extracted so it can be tested without a display. The tests were run against
the old behaviour — one page for every silence — and two of them failed there before they were trusted
here.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The first cut asked whether payloads were still being read at most once every ten seconds, reasoning that a
session ending is not a second-by-second event. That is true of the session and false of the window. The
whole point of this change is that a Live page which shows nothing should say why — and a page that takes
ten seconds to admit it has stopped being live is the same bug arriving later and more quietly.

So it is asked on every tick, with everything else. The cost is one more question every two seconds down a
Unix socket on the same machine, against a window that is right or wrong within one refresh like every
other thing in it. The throttle and the timestamp it needed are gone.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@blessdyb
blessdyb merged commit 2ec85d2 into main Oct 1, 2026
18 checks passed
@blessdyb
blessdyb deleted the fix/say-when-nothing-is-being-read branch October 1, 2026 16:26
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