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
- Set up
hermes-dashboard.service as a user service (~/.config/systemd/user/) with a restart policy because Hermes Desktop requires the dashboard backend.
- Run
hermes update.
- The update stops the dashboard process and prints the generic manual restart command.
- (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:
- Check for the existence of a corresponding systemd unit (both system and user scopes).
- If found, emit the appropriate
systemctl --user restart ... (or systemctl restart ...) command instead of (or in addition to) the generic hermes dashboard command.
- 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)
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 commandhermes dashboard --port <port>instead of suggesting the appropriatesystemctl --user restart(orsystemctl 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
hermes-dashboard.serviceas a user service (~/.config/systemd/user/) with a restart policy because Hermes Desktop requires the dashboard backend.hermes update.Expected Behavior
After stopping a dashboard process due to a version mismatch, the update script should:
systemctl --user restart hermes-dashboard.serviceor equivalent).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-dashboard.service)Additional Context
Suggested Fix
In the update logic, after stopping a dashboard process:
systemctl --user restart ...(orsystemctl restart ...) command instead of (or in addition to) the generichermes dashboardcommand.References
/home/don/.config/systemd/user/hermes-dashboard.serviceSeverity: Low–Medium (Usability / Messaging)