Skip to content

hermes update does not detect or suggest restart for managed dashboard services #40449

Description

@BigDon86

Summary

When running hermes update, the update process correctly detects a running dashboard whose backend no longer matches the updated frontend and stops the process. However, it has no awareness of whether the dashboard is managed by systemd (user or system service). It always prints the generic manual command hermes dashboard --port <port> instead of suggesting the appropriate systemctl --user restart (or systemctl restart) command.

In the reported case, the user-level service (hermes-dashboard.service) had a restart policy and automatically brought the dashboard back up, so there was no actual downtime. The issue is purely one of poor messaging and lack of integration with managed services.

Steps to Reproduce

  1. Set up hermes-dashboard.service as a user service (~/.config/systemd/user/) with a restart policy because Hermes Desktop requires the dashboard backend.
  2. Run hermes update.
  3. The update stops the dashboard process and prints the generic manual restart command.
  4. (In this case the service recovered automatically; in other configurations it may not.)

Expected Behavior

After stopping a dashboard process due to a version mismatch, the update script should:

  • Detect whether the process is managed by a systemd service (user or system).
  • Print the correct restart command (systemctl --user restart hermes-dashboard.service or equivalent).
  • Optionally acknowledge that a managed service was detected.

Actual Behavior

The update always emits the same manual CLI instruction regardless of how the dashboard is being supervised. No attempt is made to discover or suggest the managed-service restart path.

Environment

  • Hermes version: post-2026-06-06 update
  • OS: WSL2 (Ubuntu) on Windows
  • Hermes Desktop connected to WSL backend
  • Dashboard running as user-level systemd service (hermes-dashboard.service)
  • Service automatically restarted after the update killed the old process

Additional Context

  • The service was intentionally created on 2026-06-05 to support Hermes Desktop.
  • The backend/frontend mismatch protection logic is correct and desirable.
  • The remaining gap is that the update process does not integrate with systemd-managed services when giving post-stop guidance.

Suggested Fix

In the update logic, after stopping a dashboard process:

  1. Check for the existence of a corresponding systemd unit (both system and user scopes).
  2. If found, emit the appropriate systemctl --user restart ... (or systemctl restart ...) command instead of (or in addition to) the generic hermes dashboard command.
  3. Consider making the message context-aware based on how the dashboard was originally launched.

References

  • Service file: /home/don/.config/systemd/user/hermes-dashboard.service

Severity: Low–Medium (Usability / Messaging)

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low — cosmetic, nice to havearea/install-updateInstaller, updater, packaging, wheels, doctorcomp/cliCLI entry point, hermes_cli/, setup wizardtype/featureNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions