Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
69a5c42
feat(dashboard): add profiles management page
VinceZcrikl Apr 26, 2026
a5911ab
feat(dashboard): per-profile SOUL.md and model editing
VinceZcrikl Apr 26, 2026
7de9583
feat(dashboard): per-profile gateway restart action
VinceZcrikl Apr 26, 2026
a2275a9
feat(dashboard): clearer clone UX, hide import entry
VinceZcrikl Apr 26, 2026
67e5127
fix(dashboard): wrap clone-source map in Fragment so options render
VinceZcrikl Apr 26, 2026
8cb85a1
fix(dashboard): pre-validate profile names client-side
VinceZcrikl Apr 26, 2026
1d3d2fb
fix(dashboard): show name-rule hint inline in rename input
VinceZcrikl Apr 26, 2026
62c366d
fix(dashboard): stop force-uppercasing profile names
VinceZcrikl Apr 26, 2026
de4068c
fix(profiles): tear down gateway service on rename even if pid is stale
VinceZcrikl Apr 26, 2026
c62c6f2
feat(dashboard): always show gateway status badge per profile
VinceZcrikl Apr 26, 2026
a8f14c5
fix(dashboard): bump stopped-gateway badge contrast
VinceZcrikl Apr 26, 2026
72f6025
fix(dashboard): show spinner while gateway restart is in flight
VinceZcrikl Apr 26, 2026
65e21cd
fix(dashboard): poll for gateway-running after restart instead of one…
VinceZcrikl Apr 27, 2026
504629c
fix(dashboard): auto-reload SPA on 401 to pick up rotated session token
VinceZcrikl Apr 27, 2026
024da39
fix(dashboard): surface gateway-restart timeout instead of silent stop
VinceZcrikl Apr 27, 2026
406d960
feat(dashboard): flag profiles sharing exclusive bot tokens
VinceZcrikl Apr 27, 2026
9bb2b04
fix(dashboard): show one badge per conflicting platform with brand label
VinceZcrikl Apr 27, 2026
f95653a
fix(dashboard): collapse multi-platform conflict into one badge
VinceZcrikl Apr 27, 2026
dd25156
fix(dashboard): strip exclusive bot tokens from per-profile gateway s…
VinceZcrikl Apr 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions hermes_cli/profiles.py
Original file line number Diff line number Diff line change
Expand Up @@ -975,9 +975,16 @@ def rename_profile(old_name: str, new_name: str) -> Path:
if new_dir.exists():
raise FileExistsError(f"Profile '{new_name}' already exists.")

# 1. Stop gateway if running
# 1. Tear down the launchd/systemd service unconditionally — gateway.pid
# may be stale (the file's pid is dead but launchd has KeepAlive=true
# and is silently respawning a fresh process under the old profile
# name). If we leave the plist installed and only check pid, that
# runaway process re-bootstraps the old directory after the rename
# and the user sees both names in the listing. _cleanup_gateway_service
# is internally guarded on plist/unit existence, so calling it on
# profiles without a service is a safe no-op.
_cleanup_gateway_service(old_name, old_dir)
if _check_gateway_running(old_dir):
_cleanup_gateway_service(old_name, old_dir)
_stop_gateway_process(old_dir)

# 2. Rename directory
Expand Down
Loading