fix(installer): pass -IncludeDesktop to manifest, surface launch errors, alias hermes desktop

Three bugs found in the first VM end-to-end test:

1. install.ps1 -Manifest was called WITHOUT -IncludeDesktop, so the
   manifest came back with the 14-stage list (no desktop stage), the
   UI showed '14 steps' and Stage-Desktop never ran. Pass the flag to
   both the manifest fetch and the per-stage runs — install.ps1 gates
   the desktop stage's inclusion on the flag.

2. The Success screen's Launch button silently swallowed the Tauri
   error when no Hermes.exe existed (e.g. Stage-Desktop was skipped).
   Wire the error through to inline UI with an alert callout, so the
   user gets actionable text ('Hermes.exe missing, run hermes desktop
   from a terminal') instead of an unresponsive button.

3. The Success screen tells users to run 'hermes desktop' from a
   terminal but the CLI only accepted 'hermes gui' — invalid choice
   for 'desktop'. Rename the subcommand canonically to 'desktop' with
   'gui' as a backwards-compatible alias. Update the _SUBCOMMANDS sets
   used by session-flag arg parsing + logging-mode probe so both names
   route to the same logic.
This commit is contained in:
emozilla
2026-05-28 02:42:33 -04:00
parent 8eedb50bce
commit 0a079f7321
4 changed files with 79 additions and 11 deletions
+13 -5
View File
@@ -350,7 +350,7 @@ try:
mode=(
"gui"
if next((arg for arg in sys.argv[1:] if not arg.startswith("-")), "")
in {"dashboard", "gui"}
in {"dashboard", "gui", "desktop"}
else "cli"
)
)
@@ -10172,6 +10172,7 @@ def _coalesce_session_name_args(argv: list) -> list:
"uninstall",
"profile",
"dashboard",
"desktop",
"gui",
"honcho",
"claw",
@@ -11043,7 +11044,7 @@ _BUILTIN_SUBCOMMANDS = frozenset(
"computer-use",
"config", "cron", "curator", "dashboard", "debug", "doctor",
"dump", "fallback", "gateway", "hooks", "import", "insights",
"gui", "kanban", "login", "logout", "logs", "lsp", "mcp", "memory", "migrate",
"gui", "desktop", "kanban", "login", "logout", "logs", "lsp", "mcp", "memory", "migrate",
"model", "pairing", "plugins", "portal", "postinstall", "profile", "proxy",
"send", "sessions", "setup",
"skills", "slack", "status", "tools", "uninstall", "update",
@@ -14136,11 +14137,18 @@ Examples:
dashboard_parser.set_defaults(func=cmd_dashboard)
# =========================================================================
# gui command
# desktop (a.k.a. gui) command
#
# The canonical name is "desktop"; "gui" is kept as a deprecated alias
# for one release. The Hermes-Setup.exe success screen tells users to
# run `hermes desktop` from a terminal, so the canonical name needs
# to be the one that appears in --help (argparse promotes the primary
# name; aliases stay hidden).
# =========================================================================
gui_parser = subparsers.add_parser(
"gui",
help="Build and launch the native desktop GUI",
"desktop",
aliases=["gui"],
help="Build and launch the native desktop app",
description=(
"Launch the Hermes Electron desktop app. By default this installs "
"workspace Node dependencies, builds the current OS's unpacked "