Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017PsnU2ASocYrvzqE82YDYW
2.9 KiB
REPORT — retire drive-activation banner; add standalone "Kiszolgáló újraindítása" button
Repo: felhom-controller · Baseline: main @ 7cce19797 (v0.80.0) → v0.81.0
Commit: 242b835 (code + CHANGELOG + README). Date: 2026-06-23.
Why
In the intermediary-mount model an enrolled drive binds live into the running guest (agent
disks.go — no pct set -mpN, no slot, no reboot), so the "… meghajtó aktiválásra vár /
Újraindítás most (~30 mp)" banner was an obsolete relic of the old per-drive reboot model. It was
also effectively dead since v0.78: pendingActivationDrives keyed attached by the agent's RAW
MountPath but compared it to the now-STABLE sp.Path. Retired it; added a deliberate full-server
restart affordance in its place (sibling to the controller-only restart).
Files changed
controller/internal/web/storage_handlers.go- Removed dead
pendingActivationDriveshelper + the now-unusedinternal/systemimport. - Renamed
handleStorageActivate→HandleServerReboot; split out testableserverReboot(w,r,agent)core. - Added
GuestReboot(ctx) errorto thediskAgentinterface (*agentapi.Clientalready satisfies it). - Removed the
/api/storage/activatecase fromServeStorageAPI(→ 404).
- Removed dead
controller/cmd/controller/main.go— mounted/api/server/reboot(RequireAuth+CsrfProtect) next to the storage route.controller/internal/web/handlers.go— removed thedata["PendingDrives"]feed.controller/internal/web/templates/settings.html— removed the{{if .PendingDrives}}banner block andwindow.activatePendingDrives; added the "Kiszolgáló újraindítása" settings card +restartServer()JS (reuses the existingpollRestart()loop).controller/internal/web/storage_handlers_test.go—mockAgentgainedGuestReboot; new test.CHANGELOG.md(v0.81.0 entry),controller/README.md(full-server-restart section).
Note on naming
The HTTP handler is exported (HandleServerReboot), not the lowercase name in the spec snippet:
cmd/controller/main.go wires it cross-package, and every web handler mounted there is exported. The
unexported serverReboot core carries the logic and is what the test exercises (same split-out pattern
as runStorageInit).
Test
TestHandleServerReboot_CallsGuestReboot (storage_handlers_test.go): a fake diskAgent asserts
GuestReboot is invoked exactly once and the response is 202 with {ok:true, rebooting:true}.
go build ./... → BUILD_OK
go vet ./... → VET_OK
go test ./... → ok (internal/web 1.640s, new test PASS); all packages ok
Grep confirmed zero remaining references to PendingDrives, pendingActivationDrives,
activatePendingDrives, activate-drives-btn, /api/storage/activate, handleStorageActivate.
Deploy + live verification
To be filled after the build/deploy + §9 verification (banner gone, button present, route 200/404, regression).