Skip to content

fix(dashboard): Config page header shows the switched profile's config.yaml path - #44374

Merged
teknium1 merged 1 commit into
mainfrom
hermes/hermes-5fd44e35
Jun 11, 2026
Merged

fix(dashboard): Config page header shows the switched profile's config.yaml path#44374
teknium1 merged 1 commit into
mainfrom
hermes/hermes-5fd44e35

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

Summary

The Config page header now shows the path of the profile selected in the global switcher, instead of permanently showing the profile the dashboard process was started under.

Root cause: the header read config_path from /api/status, which is machine-global and not profile-scoped — switching profiles (and even refreshing) left the old path on screen even though reads/writes were correctly scoped.

Changes

  • hermes_cli/web_server.py: /api/config/raw returns path (resolved inside _profile_scope, so it follows ?profile=)
  • web/src/pages/ConfigPage.tsx: prefer the scoped path from getConfigRaw(); /api/status kept only as fallback
  • web/src/lib/api.ts: type update
  • tests/hermes_cli/test_web_server_profile_unification.py: regression test pinning scoped vs default path

Validation

Before After
Switch to worker_1, open Config header shows dashboard's own config.yaml header shows ~/.hermes/profiles/worker_1/config.yaml
Targeted tests 25/25 passed, tsc --noEmit clean

Reported by @roibyme on X after the profile-unification launch.

Infographic

profile-path-desync-fixed

…g.yaml path

The Config page read config_path from /api/status, which is machine-global
and always reports the profile the dashboard process was started under.
After switching profiles with the global switcher, the header kept showing
the old profile's path (e.g. /root/.hermes/profiles/worker_1/config.yaml)
even though reads/writes correctly targeted the new profile.

Fix: /api/config/raw now returns the resolved path alongside the YAML
(resolved inside _profile_scope, so it follows ?profile=). ConfigPage
prefers that scoped path and only falls back to /api/status for old
servers. ProfileKeyedRoutes already remounts the page on switch, so the
header refreshes immediately.
@github-actions

Copy link
Copy Markdown
Contributor

🔎 Lint report: hermes/hermes-5fd44e35 vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 10717 on HEAD, 10717 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 5609 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

@teknium1
teknium1 merged commit c7bfc93 into main Jun 11, 2026
28 checks passed
@teknium1
teknium1 deleted the hermes/hermes-5fd44e35 branch June 11, 2026 16:46
alt-glitch pushed a commit that referenced this pull request Jun 14, 2026
…g.yaml path (#44374)

The Config page read config_path from /api/status, which is machine-global
and always reports the profile the dashboard process was started under.
After switching profiles with the global switcher, the header kept showing
the old profile's path (e.g. /root/.hermes/profiles/worker_1/config.yaml)
even though reads/writes correctly targeted the new profile.

Fix: /api/config/raw now returns the resolved path alongside the YAML
(resolved inside _profile_scope, so it follows ?profile=). ConfigPage
prefers that scoped path and only falls back to /api/status for old
servers. ProfileKeyedRoutes already remounts the page on switch, so the
header refreshes immediately.
AIalliAI pushed a commit to AIalliAI/Hermes that referenced this pull request Jun 14, 2026
…g.yaml path (NousResearch#44374)

The Config page read config_path from /api/status, which is machine-global
and always reports the profile the dashboard process was started under.
After switching profiles with the global switcher, the header kept showing
the old profile's path (e.g. /root/.hermes/profiles/worker_1/config.yaml)
even though reads/writes correctly targeted the new profile.

Fix: /api/config/raw now returns the resolved path alongside the YAML
(resolved inside _profile_scope, so it follows ?profile=). ConfigPage
prefers that scoped path and only falls back to /api/status for old
servers. ProfileKeyedRoutes already remounts the page on switch, so the
header refreshes immediately.
T02200059 pushed a commit to T02200059/hermes-agent that referenced this pull request Jun 18, 2026
…g.yaml path (NousResearch#44374)

The Config page read config_path from /api/status, which is machine-global
and always reports the profile the dashboard process was started under.
After switching profiles with the global switcher, the header kept showing
the old profile's path (e.g. /root/.hermes/profiles/worker_1/config.yaml)
even though reads/writes correctly targeted the new profile.

Fix: /api/config/raw now returns the resolved path alongside the YAML
(resolved inside _profile_scope, so it follows ?profile=). ConfigPage
prefers that scoped path and only falls back to /api/status for old
servers. ProfileKeyedRoutes already remounts the page on switch, so the
header refreshes immediately.
waefrebeorn pushed a commit to waefrebeorn/slermes that referenced this pull request Jul 2, 2026
…g.yaml path (NousResearch#44374)

The Config page read config_path from /api/status, which is machine-global
and always reports the profile the dashboard process was started under.
After switching profiles with the global switcher, the header kept showing
the old profile's path (e.g. /root/.hermes/profiles/worker_1/config.yaml)
even though reads/writes correctly targeted the new profile.

Fix: /api/config/raw now returns the resolved path alongside the YAML
(resolved inside _profile_scope, so it follows ?profile=). ConfigPage
prefers that scoped path and only falls back to /api/status for old
servers. ProfileKeyedRoutes already remounts the page on switch, so the
header refreshes immediately.
santhreal pushed a commit to santhreal/hermes-agent that referenced this pull request Jul 13, 2026
…g.yaml path (NousResearch#44374)

The Config page read config_path from /api/status, which is machine-global
and always reports the profile the dashboard process was started under.
After switching profiles with the global switcher, the header kept showing
the old profile's path (e.g. /root/.hermes/profiles/worker_1/config.yaml)
even though reads/writes correctly targeted the new profile.

Fix: /api/config/raw now returns the resolved path alongside the YAML
(resolved inside _profile_scope, so it follows ?profile=). ConfigPage
prefers that scoped path and only falls back to /api/status for old
servers. ProfileKeyedRoutes already remounts the page on switch, so the
header refreshes immediately.
donbowman pushed a commit to donbowman/hermes-agent that referenced this pull request Jul 13, 2026
…g.yaml path (NousResearch#44374)

The Config page read config_path from /api/status, which is machine-global
and always reports the profile the dashboard process was started under.
After switching profiles with the global switcher, the header kept showing
the old profile's path (e.g. /root/.hermes/profiles/worker_1/config.yaml)
even though reads/writes correctly targeted the new profile.

Fix: /api/config/raw now returns the resolved path alongside the YAML
(resolved inside _profile_scope, so it follows ?profile=). ConfigPage
prefers that scoped path and only falls back to /api/status for old
servers. ProfileKeyedRoutes already remounts the page on switch, so the
header refreshes immediately.
Gravezzz pushed a commit to Gravezzz/hermes-agent that referenced this pull request Jul 21, 2026
…g.yaml path (NousResearch#44374)

The Config page read config_path from /api/status, which is machine-global
and always reports the profile the dashboard process was started under.
After switching profiles with the global switcher, the header kept showing
the old profile's path (e.g. /root/.hermes/profiles/worker_1/config.yaml)
even though reads/writes correctly targeted the new profile.

Fix: /api/config/raw now returns the resolved path alongside the YAML
(resolved inside _profile_scope, so it follows ?profile=). ConfigPage
prefers that scoped path and only falls back to /api/status for old
servers. ProfileKeyedRoutes already remounts the page on switch, so the
header refreshes immediately.
leewenjie pushed a commit to leewenjie/hermes-agent that referenced this pull request Aug 7, 2026
…g.yaml path (NousResearch#44374)

The Config page read config_path from /api/status, which is machine-global
and always reports the profile the dashboard process was started under.
After switching profiles with the global switcher, the header kept showing
the old profile's path (e.g. /root/.hermes/profiles/worker_1/config.yaml)
even though reads/writes correctly targeted the new profile.

Fix: /api/config/raw now returns the resolved path alongside the YAML
(resolved inside _profile_scope, so it follows ?profile=). ConfigPage
prefers that scoped path and only falls back to /api/status for old
servers. ProfileKeyedRoutes already remounts the page on switch, so the
header refreshes immediately.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant