Introduce PromptAi support: add model, migration, seeder and controller with full CRUD endpoints, and register routes under /api/prompt-ai. Integrate DB-driven prompts into LineConnection (replace hardcoded prompt strings for DPELP and ENV with fetched PromptAi records). Update frontend ModalConfig to add a Prompt AI management tab (fetch, create, edit prompts), plus related UI tweaks (tabs, prompt editor modal, axios/notifications). This makes AI prompts editable at runtime without code changes.
Increase physical test polling interval from 5s to 15s (backend setInterval and frontend AutoProgress ms) to reduce polling frequency. Add handling to stop the interval when physicalTest.done, send the physical test report, and end testing. Change license filtering to be case-insensitive and match any value containing "permanent" (backend and frontend) so licenses are detected regardless of casing/format.
Emit a dedicated 'update_status_ready' event when a LineConnection becomes ready, and stop sending isReady in the 'line_output' payload. On the server side, normalize incoming run_all_dpelp data and filter lineIds to only include lines that are already ready; also bail out early if no eligible lines or station isn't configured to send wiki. On the frontend, initialize line state with isReady, stop deriving readiness from line_output, and listen for the new 'update_status_ready' event to update line readiness in the UI.
Reset latestScenario when a line disconnects and surface AI-detected issues in the UI. Backend: clear config.latestScenario on disconnect. Frontend: initialize latestScenario in App state, import useEffect and add isShowIssue state in CardLine with an effect that checks line.latestScenario.detectAI.issue (array) to toggle the badge. UI: reorganize feature badges layout and render a red "Issue" pill when an AI-detected issue exists.
Backend: Add debounceSendSummaryReport to LineConnection and snapshotting to debounce sendReportSummary (10 min) to avoid duplicate summary emails; adapt sendReportSummary to accept a snapshot and use snapshot data when available. Reset physicalTest and listFeatureTested on line disconnect and add initConfig helper. Improve PoE/SFP parsing (filter names with '/' and match 'unknown') and adjust report HTML (tested/missing counts, column counts). Add PS_INCOMPATIBLE log rule. Comment out automatic wiki/email send in socket provider. Physical test service: suppress getFormReport call on completion and include PoE/SFP breakdown in the HTML report counts. Frontend: fix terminal open logic to check userOpenCLI instead of userEmailOpenCLI and display device MAC in the terminal modal.
Append a CLEAR_TERMINAL_SCROLL_BACK marker on disconnect and consume it in the frontend to effectively clear terminal scrollback. Backend: add marker on client close and in socket provider, import convertFromKilobytesString and use it to format MEMORY and FLASH values in the report, and compute/list missing ports (separating PoE vs SFP) in the summary HTML. Frontend: emit the marker on line_disconnected and have TerminalXTerm replace the marker with multiple newlines (varying by miniSize) before writing/initializing terminal content to scroll to bottom.