CluPilotCloud/app
nexxo 07634c8a1d Answer a check at once, start an update at once, and count down to neither
Checking for updates was a request written into the same mailbox as a real
update, collected by the same agent on the same systemd timer — so asking what
was new was answered on the next tick, and the console, having nothing else to
show, counted down to it. An operator who asked a question was told an update
would start in 3:44.

A systemd path unit now wakes the agent the moment the request file is written,
for a check and for a run alike. PathChanged, not PathExists: PathExists re-arms
as soon as the service goes inactive, so a request the agent could not consume —
it holds a lock for the length of an update — would restart it in a tight loop.
The timer stays as the fallback, and a drop-in disables systemd's start rate
limit, because two triggers on one oneshot service can otherwise wedge the unit
and leave neither of them able to run.

The countdown is gone from both the settings card and the maintenance overlay.
It could not be made honest: its target was recomputed on every poll, and where
the interval the agent reports is shorter than the timer actually installed on
that host it had already gone by, so the fallback moved it forward again each
time. It ran backwards four seconds and snapped back to a full minute, forever —
reported exactly that way. A queued run says it is starting; a queued check says
nothing beyond its badge, because a check starts nothing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 22:25:07 +02:00
..
Actions Refuse a portal login for an address that already belongs to an operator 2026-07-28 14:42:16 +02:00
Console Check users directly for the reverse operator-identity collision, not just customers 2026-07-28 15:36:29 +02:00
Exceptions Refuse a portal login for an address that already belongs to an operator 2026-07-28 14:42:16 +02:00
Http Match the logout exemption through AdminArea, not a bare route check 2026-07-28 15:27:06 +02:00
Livewire Separate checking for updates from applying them, and show live progress 2026-07-28 20:23:06 +02:00
Mail Bound the mail test-send and real send to a timeout instead of hanging 2026-07-28 16:36:14 +02:00
Models Check users directly for the reverse operator-identity collision, not just customers 2026-07-28 15:36:29 +02:00
Notifications Pin CloudReady's null-mailbox guard and share it with the trait 2026-07-27 23:59:05 +02:00
Policies Move the console's identity out of the customer table 2026-07-28 10:31:43 +02:00
Providers Stop the console serving the portal's sign-in page 2026-07-28 11:45:34 +02:00
Provisioning Measure availability, and let a customer move down again 2026-07-27 16:41:15 +02:00
Services Answer a check at once, start an update at once, and count down to neither 2026-07-28 22:25:07 +02:00
Support Move operator two-factor enrolment off admin.settings onto its own page 2026-07-28 15:11:20 +02:00