Web UI unusable while laser is unreachable: error popup reopens every second and blocks all clicks (e.g. Add Mapping does nothing) #1

Closed
opened 2026-10-27 10:37:15 +00:00 by cabele · 0 comments
Owner

Summary

Clicking Add Mapping in the Program Mapping panel does nothing. The cause is not the button: the
Error popup is open as an invisible full-screen overlay and swallows every click on the page. It
reopens about every second while the laser connection has an error, so the whole web UI is unusable
(Add Mapping, Save Settings, Manual Mark, …) whenever the laser is unreachable – e.g. when the UI is
opened while the laser is switched off or not on the network.

Affected version: v1.1.0 (the popup behaviour exists since the first version; it surfaced with the new mapping panel)

Steps to reproduce

  1. Start the service while the laser is unreachable.
  2. Open the web UI (http://localhost:8080).
  3. Close the Error popup with ×.
  4. Within 1–2 seconds click Add Mapping.

Expected: a new mapping row appears.
Actual: nothing happens. The Error popup reappears within 1–2 s and its full-screen backdrop
(#errorModal, position: fixed; width/height: 100%) receives the click.

Reproduced in headless Chrome against v1.1.0:

t=0s       popup open=true
after ×    popup open=false
t=+2s      popup open=true   (and stays open)
element at Add Mapping button position: errorModal
mapping rows after click: 0

Root cause

  1. app.js → updateStatus() calls showError(data.errorMessage) on every WebSocket status
    update. Status is broadcast on every poll (PollInterval, default 1 s), so the modal is re-opened
    continuously while errorMessage is set.
    errorMessage comes from laser.Client.GetLastError() and stays set until the next successful
    (re)connect, i.e. for as long as the laser is unreachable.
  2. The modal can only be closed with ×; clicking the backdrop or pressing Esc does nothing.

Fix plan

  • Show the laser status error as a non-blocking banner that appears/disappears with the status;
    keep the modal only for errors from user actions (save failed etc.).
  • Close the modal on backdrop click and Esc.
## Summary Clicking **Add Mapping** in the *Program Mapping* panel does nothing. The cause is not the button: the **Error** popup is open as an invisible full-screen overlay and swallows every click on the page. It reopens about every second while the laser connection has an error, so the whole web UI is unusable (Add Mapping, Save Settings, Manual Mark, …) whenever the laser is unreachable – e.g. when the UI is opened while the laser is switched off or not on the network. **Affected version:** v1.1.0 (the popup behaviour exists since the first version; it surfaced with the new mapping panel) ## Steps to reproduce 1. Start the service while the laser is unreachable. 2. Open the web UI (http://localhost:8080). 3. Close the *Error* popup with ×. 4. Within 1–2 seconds click **Add Mapping**. **Expected:** a new mapping row appears. **Actual:** nothing happens. The *Error* popup reappears within 1–2 s and its full-screen backdrop (`#errorModal`, `position: fixed; width/height: 100%`) receives the click. Reproduced in headless Chrome against v1.1.0: ``` t=0s popup open=true after × popup open=false t=+2s popup open=true (and stays open) element at Add Mapping button position: errorModal mapping rows after click: 0 ``` ## Root cause 1. `app.js` → `updateStatus()` calls `showError(data.errorMessage)` on **every** WebSocket status update. Status is broadcast on every poll (`PollInterval`, default 1 s), so the modal is re-opened continuously while `errorMessage` is set. `errorMessage` comes from `laser.Client.GetLastError()` and stays set until the next successful (re)connect, i.e. for as long as the laser is unreachable. 2. The modal can only be closed with ×; clicking the backdrop or pressing Esc does nothing. ## Fix plan - Show the laser status error as a **non-blocking banner** that appears/disappears with the status; keep the modal only for errors from user actions (save failed etc.). - Close the modal on backdrop click and Esc.
cabele changed title from Web UI unusable while laser reports an error: error popup reopens every second and blocks all clicks (e.g. Add Mapping does nothing) to Web UI unusable while laser is unreachable: error popup reopens every second and blocks all clicks (e.g. Add Mapping does nothing) 2026-10-27 10:37:49 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
cabele/hobe-laser#1
No description provided.