- start/routes.ts: mirror references routes into /internal group so the DeviceDetail.vue resolve buttons work (were returning 404) - device.ts: isGpnAllowed() now clears cooldownUntil when transitioning open→half-open, avoiding stale date in persisted snapshots