CluPilotCloud/app/Livewire/Admin
nexxo 4f9ca27732 fix(vpn): a replaced key must not stall the reconciliation
Codex found that a sync landing between the key swap and its removal would see
the old key as unknown. Writing the test showed something worse than the
duplicate he predicted: the adoption cannot even happen — the address still
belongs to the live access — so the insert violated the unique index and took
the ENTIRE reconciliation down with it. One stale key would have stopped every
peer's state from updating.

The sync now recognises that case and queues the removal instead of adopting,
and a key with no row of its own is revoked with force: it can only ever be
removed, never kept, so the removal cannot be talked out of it by a row that
should not exist.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-26 01:23:15 +02:00
..
ConfirmDeleteDatacenter.php fix(admin): authorize datacenter modal mounts; stale threshold uses step maxDuration 2026-07-25 18:23:44 +02:00
ConfirmDeleteVpnPeer.php feat(vpn): ownership, a Developer role, and password-gated config retrieval 2026-07-25 22:31:54 +02:00
ConfirmRemoveHost.php feat(admin): staff RBAC (spatie) + admin settings page 2026-07-25 15:47:42 +02:00
Customers.php feat(admin): staff RBAC (spatie) + admin settings page 2026-07-25 15:47:42 +02:00
Datacenters.php fix(datacenters): a code becomes a DNS label, so validate it as one 2026-07-25 23:56:50 +02:00
EditDatacenter.php fix(auth/admin): atomic user+customer signup; Rule::in for country validation (comma-safe) 2026-07-25 18:33:09 +02:00
HostCreate.php feat(admin): staff RBAC (spatie) + admin settings page 2026-07-25 15:47:42 +02:00
HostDetail.php feat(admin): staff RBAC (spatie) + admin settings page 2026-07-25 15:47:42 +02:00
Hosts.php feat(admin): scalable host list (search/filter/health) + host detail redesign 2026-07-25 14:27:53 +02:00
Instances.php feat(admin): dark Tactical-Terminal operator console 2026-07-25 08:35:03 +02:00
Maintenance.php fix(maintenance): make the window form usable 2026-07-25 23:05:33 +02:00
Overview.php feat(admin): datacenter edit+delete (guarded); MRR chart fills card; host-load as meters 2026-07-25 14:22:15 +02:00
Provisioning.php fix(admin): authorize datacenter modal mounts; stale threshold uses step maxDuration 2026-07-25 18:23:44 +02:00
Revenue.php feat(admin): dark Tactical-Terminal operator console 2026-07-25 08:35:03 +02:00
Settings.php feat(site): switch the public website and portal off from the console 2026-07-25 23:10:27 +02:00
Vpn.php fix(vpn): a replaced key must not stall the reconciliation 2026-07-26 01:23:15 +02:00
VpnConfigAccess.php fix(vpn): count downloads in the database; repair the race test 2026-07-25 22:48:38 +02:00