Skip to content

bug(updates): WebUI update doesn't auto-refresh/restart the browser when "Ignore Agent updates" is enabled #4206

@nesquena-hermes

Description

@nesquena-hermes

Summary

With the "Ignore Agent updates" preference (#2843) enabled, a WebUI update does not auto-refresh / restart the browser the way the reporter expects. He wants the WebUI to auto-refresh on a UI update even when Agent updates are disabled; currently it doesn't restart, so he has to manually trigger the update from Settings → System.

Reported by @Latipun in the community Discord #report-bugs (2026-06-14):

Manually trigger WebUI update from Settings > System, no longer auto-refresh browser.
Note: I enabled "Ignore Agent updates" setting

i.e. "[I now have to] manually trigger the WebUI update from Settings → System; it no longer auto-refreshes the browser. (Note: I have 'Ignore Agent updates' enabled.)" The reporter explicitly calls out that the ignore_agent_updates toggle is the variable he changed — it's a WebUI-vs-Agent setting bleeding into the WebUI update's refresh/restart behavior.

Expected vs actual

  • Expected: a WebUI update is detected and the browser auto-refreshes onto the new version, independent of whether Agent updates are ignored.
  • Actual: with "Ignore Agent updates" ON, the WebUI update doesn't auto-restart/refresh — the reporter has to go to Settings → System and trigger it manually.

What I could confirm from the code

The ignore_agent_updates flag only feeds the update check — it flips include_agent so the Agent repo is excluded from the behind-count:

  • api/routes.py:7166 (GET /api/updates/check) and :7809 (POST): include_agent_updates = not bool(settings.get("ignore_agent_updates")).
  • api/config.py:6505 default False.

The apply + restart path itself is target-independent: apply_update('webui') (api/updates.py:1258) always ends in _schedule_restart() (:1487) and returns restart_scheduled: True, regardless of the agent-ignore setting. On the client, applyUpdates() (static/ui.js:6014) then runs _waitForServerThenReload()location.reload() once the server's /health identity changes. So once you click Update Now, the webui reload should still fire with agent ignored.

That means the gap is most likely upstream of the apply step — in detection / banner / auto-trigger — not in the reload itself.

Leading hypotheses (need reporter detail to confirm — not yet reproduced)

  1. There is no automatic apply on the web app — only a banner + manual "Update Now". If the reporter expects the WebUI to auto-apply + auto-refresh on its own (as a managed/Docker/desktop deploy might), that auto-apply path may not exist for his setup, and "Ignore Agent updates" is a red herring he toggled while trying to influence it. → behavior-expectation gap (auto-apply WebUI updates).
  2. Banner/target selection interaction. applyUpdates() builds its target list from window._updateData (ui.js:6034): webui is only added if window._updateData?.webui?.behind>0. If the agent-ignore path changes the shape of the cached check payload (e.g. only an agent update was pending and it's now suppressed → no banner → nothing to apply → no refresh), the user perceives "WebUI update no longer auto-refreshes."
  3. His "auto-refresh" was the offline/reconnect reload (_recoverFromOfflineSoftly, ui.js:140) firing when the server restarts under him on an auto-pull deploy — and something in his current config (check disabled, or agent-ignore + a managed updater) changed when that restart happens.

What to confirm with @Latipun before building

  1. Deploy type: Docker / start.sh / native desktop app / managed host?
  2. Does the WebUI auto-apply updates on his setup, or does he click "Update Now"? (The web app only auto-checks; it does not auto-apply.)
  3. What exactly used to happen and stopped: did the page reload by itself after a version bump, and now it doesn't?
  4. Does toggling "Ignore Agent updates" OFF restore the behavior? (This is the single most useful repro fact — it confirms or kills the agent-ignore link.)

Scope

Single repo — nesquena/hermes-webui (web app). Likely small once the trigger is confirmed: either decouple the WebUI update refresh from the agent-ignore setting (if there's a real coupling), or add the auto-apply-and-refresh affordance the reporter expects. No fix shape locked until the repro is confirmed.

Reported by

@Latipun — community Discord #report-bugs, 2026-06-14.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions