From 8d77e0be492f534531f04f021492c80495fd70bd Mon Sep 17 00:00:00 2001 From: Michael Lam Date: Wed, 6 May 2026 08:47:16 -0700 Subject: [PATCH 1/4] fix: isolate in-process cron scheduler profiles --- api/profiles.py | 83 +++++++++++++++++ .../test_scheduled_jobs_profile_isolation.py | 88 +++++++++++++++++++ 2 files changed, 171 insertions(+) diff --git a/api/profiles.py b/api/profiles.py index 52c552b2..fe0e1023 100644 --- a/api/profiles.py +++ b/api/profiles.py @@ -248,6 +248,82 @@ def get_active_hermes_home() -> Path: _cron_env_lock = threading.Lock() +def _cron_profile_context_depth() -> int: + return int(getattr(_tls, 'cron_profile_depth', 0) or 0) + + +def _push_cron_profile_context_depth() -> None: + _tls.cron_profile_depth = _cron_profile_context_depth() + 1 + + +def _pop_cron_profile_context_depth() -> None: + depth = _cron_profile_context_depth() + _tls.cron_profile_depth = max(0, depth - 1) + + +def _home_for_scheduled_cron_job(job: dict) -> Path: + """Resolve the profile home an auto-fired scheduler job should execute in. + + Legacy jobs with no profile keep the scheduler's server-default profile. + Jobs pinned to a named profile execute under that profile's HERMES_HOME, so + an in-process WebUI scheduler thread does not leak process-global config or + .env into the agent run. If a profile was deleted after the job was saved, + fall back to the server default rather than crashing every scheduler tick. + """ + raw = str((job or {}).get('profile') or '').strip() + if not raw: + return get_active_hermes_home() + if _is_root_profile(raw): + return _DEFAULT_HERMES_HOME + if not _PROFILE_ID_RE.fullmatch(raw): + logger.warning( + "Cron job %s has invalid profile %r; falling back to server default", + (job or {}).get('id', '?'), raw, + ) + return get_active_hermes_home() + home = _resolve_named_profile_home(raw) + if not home.is_dir(): + logger.warning( + "Cron job %s references missing profile %r; falling back to server default", + (job or {}).get('id', '?'), raw, + ) + return get_active_hermes_home() + return home + + +def install_cron_scheduler_profile_isolation() -> None: + """Patch cron.scheduler.run_job for WebUI in-process scheduler safety. + + Standard WebUI deployments do not start the scheduler thread in-process, but + if a future/single-process deployment calls cron.scheduler.tick() from the + WebUI worker, tick's background job path has no request TLS context. Wrap + run_job so each auto-fired job's persisted ``profile`` field gets the same + HERMES_HOME isolation as the manual /api/crons/run path. + """ + try: + import cron.scheduler as _cs + except ImportError: + logger.debug("install_cron_scheduler_profile_isolation: cron.scheduler unavailable") + return + + original = getattr(_cs, 'run_job', None) + if original is None or getattr(original, '_webui_profile_isolated', False): + return + + def _webui_profile_isolated_run_job(job, *args, **kwargs): + # Manual WebUI runs already enter cron_profile_context_for_home before + # calling run_job. Avoid nesting the non-reentrant env lock or changing + # the explicitly selected manual execution profile. + if _cron_profile_context_depth() > 0: + return original(job, *args, **kwargs) + with cron_profile_context_for_home(_home_for_scheduled_cron_job(job)): + return original(job, *args, **kwargs) + + _webui_profile_isolated_run_job._webui_profile_isolated = True + _webui_profile_isolated_run_job._webui_original_run_job = original + _cs.run_job = _webui_profile_isolated_run_job + + class cron_profile_context_for_home: """Context manager that pins HERMES_HOME to an explicit profile home path. @@ -261,6 +337,7 @@ class cron_profile_context_for_home: def __enter__(self): _cron_env_lock.acquire() + _push_cron_profile_context_depth() try: self._prev_env = os.environ.get('HERMES_HOME') os.environ['HERMES_HOME'] = str(self._home) @@ -296,6 +373,7 @@ class cron_profile_context_for_home: except (ImportError, AttributeError): logger.debug("cron_profile_context_for_home: cron.scheduler unavailable") except Exception: + _pop_cron_profile_context_depth() _cron_env_lock.release() raise return self @@ -319,6 +397,7 @@ class cron_profile_context_for_home: except (ImportError, AttributeError): pass finally: + _pop_cron_profile_context_depth() _cron_env_lock.release() return False @@ -337,6 +416,7 @@ class cron_profile_context: def __enter__(self): _cron_env_lock.acquire() + _push_cron_profile_context_depth() try: self._prev_env = os.environ.get('HERMES_HOME') home = get_active_hermes_home() @@ -371,6 +451,7 @@ class cron_profile_context: except (ImportError, AttributeError): logger.debug("cron_profile_context: cron.scheduler unavailable; env-var only") except Exception: + _pop_cron_profile_context_depth() _cron_env_lock.release() raise return self @@ -397,6 +478,7 @@ class cron_profile_context: except (ImportError, AttributeError): pass finally: + _pop_cron_profile_context_depth() _cron_env_lock.release() return False @@ -573,6 +655,7 @@ def init_profile_state() -> None: _active_profile = _read_active_profile_file() home = get_active_hermes_home() _set_hermes_home(home) + install_cron_scheduler_profile_isolation() _reload_dotenv(home) diff --git a/tests/test_scheduled_jobs_profile_isolation.py b/tests/test_scheduled_jobs_profile_isolation.py index 0d05cc4d..04f69224 100644 --- a/tests/test_scheduled_jobs_profile_isolation.py +++ b/tests/test_scheduled_jobs_profile_isolation.py @@ -199,6 +199,94 @@ def test_cron_run_does_not_silently_swallow_profile_resolution_errors(): ) +def test_webui_installs_profile_context_on_in_process_scheduler_run_job(tmp_path, monkeypatch): + """If WebUI ever runs cron.scheduler.tick in-process, scheduled run_job calls + must execute under the job's selected profile home, not the process-global + HERMES_HOME that happened to be active when the scheduler thread fired. + """ + import types + + from api import profiles as p + + default_home = tmp_path / "home" + research_home = default_home / "profiles" / "research" + research_home.mkdir(parents=True) + events = [] + + class Ctx: + def __init__(self, home): + self.home = str(home) + + def __enter__(self): + events.append(("enter", self.home)) + return self + + def __exit__(self, exc_type, exc, tb): + events.append(("exit", self.home)) + return False + + cron_pkg = types.ModuleType("cron") + cron_pkg.__path__ = [] + cron_scheduler = types.ModuleType("cron.scheduler") + cron_scheduler.run_job = lambda job: events.append(("run", job["id"])) or "ok" + + monkeypatch.setitem(sys.modules, "cron", cron_pkg) + monkeypatch.setitem(sys.modules, "cron.scheduler", cron_scheduler) + monkeypatch.setattr(p, "_DEFAULT_HERMES_HOME", default_home) + monkeypatch.setattr(p, "cron_profile_context_for_home", Ctx) + + p.install_cron_scheduler_profile_isolation() + + assert cron_scheduler.run_job({"id": "job1575", "profile": "research"}) == "ok" + assert events == [ + ("enter", str(research_home)), + ("run", "job1575"), + ("exit", str(research_home)), + ] + + +def test_scheduler_run_job_wrapper_does_not_reenter_manual_cron_context(tmp_path, monkeypatch): + """Manual /api/crons/run already pins run_job before calling it. + + The scheduler safety wrapper must detect that existing context and delegate + directly, otherwise the non-reentrant env lock would deadlock or override the + manual execution profile. + """ + import types + + from api import profiles as p + + events = [] + + class Ctx: + def __init__(self, home): + self.home = str(home) + + def __enter__(self): + events.append(("unexpected-enter", self.home)) + return self + + def __exit__(self, exc_type, exc, tb): + events.append(("unexpected-exit", self.home)) + return False + + cron_pkg = types.ModuleType("cron") + cron_pkg.__path__ = [] + cron_scheduler = types.ModuleType("cron.scheduler") + cron_scheduler.run_job = lambda job: events.append(("run", job["id"])) or "ok" + + monkeypatch.setitem(sys.modules, "cron", cron_pkg) + monkeypatch.setitem(sys.modules, "cron.scheduler", cron_scheduler) + monkeypatch.setattr(p, "_DEFAULT_HERMES_HOME", tmp_path / "home") + monkeypatch.setattr(p, "cron_profile_context_for_home", Ctx) + monkeypatch.setattr(p._tls, "cron_profile_depth", 1, raising=False) + + p.install_cron_scheduler_profile_isolation() + + assert cron_scheduler.run_job({"id": "manual1575", "profile": "research"}) == "ok" + assert events == [("run", "manual1575")] + + def test_cron_worker_does_not_silently_fall_back_on_profile_context_failure(): """_run_cron_tracked must NOT silently set ctx=None when cron_profile_context_for_home(...).__enter__() raises. From fdd6b83acba9282b7e888f68519fcf1b82491cc9 Mon Sep 17 00:00:00 2001 From: Michael Lam Date: Wed, 6 May 2026 09:05:25 -0700 Subject: [PATCH 2/4] fix: allow profile switching during active streams --- api/profiles.py | 19 ++-- ...ofile-switch-away-from-running-session.png | Bin 0 -> 121308 bytes static/panels.js | 10 +- .../test_issue1700_parallel_profile_switch.py | 95 ++++++++++++++++++ 4 files changed, 115 insertions(+), 9 deletions(-) create mode 100644 docs/pr-media/1700/profile-switch-away-from-running-session.png create mode 100644 tests/test_issue1700_parallel_profile_switch.py diff --git a/api/profiles.py b/api/profiles.py index fe0e1023..f9744c27 100644 --- a/api/profiles.py +++ b/api/profiles.py @@ -679,13 +679,18 @@ def switch_profile(name: str, *, process_wide: bool = True) -> dict: # Import here to avoid circular import at module load from api.config import STREAMS, STREAMS_LOCK, reload_config - # Block if agent is running - with STREAMS_LOCK: - if len(STREAMS) > 0: - raise RuntimeError( - 'Cannot switch profiles while an agent is running. ' - 'Cancel or wait for it to finish.' - ) + # Process-wide profile switches mutate HERMES_HOME, module-level path caches, + # os.environ-backed .env keys, and the global config cache. Keep those blocked + # while any agent stream is active. Per-client WebUI switches are cookie/TLS + # scoped (process_wide=False) and do not mutate those globals, so users can + # leave a running session in one profile and start work in another (#1700). + if process_wide: + with STREAMS_LOCK: + if len(STREAMS) > 0: + raise RuntimeError( + 'Cannot switch profiles while an agent is running. ' + 'Cancel or wait for it to finish.' + ) # Resolve profile directory if _is_root_profile(name): diff --git a/docs/pr-media/1700/profile-switch-away-from-running-session.png b/docs/pr-media/1700/profile-switch-away-from-running-session.png new file mode 100644 index 0000000000000000000000000000000000000000..a6c1f1780c479bc1b722f810a40f557c7f491a59 GIT binary patch literal 121308 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ℜ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 i%GrEC1{&*k&5Ra<2_ydT-G@yGywo#(UztF literal 0 HcmV?d00001 diff --git a/static/panels.js b/static/panels.js index c07e6229..12531130 100644 --- a/static/panels.js +++ b/static/panels.js @@ -3766,7 +3766,9 @@ window.addEventListener('resize',()=>{ }); async function switchToProfile(name) { - if (S.busy) { showToast(t('profiles_busy_switch')); return; } + // Profile switches are per-client cookie/TLS scoped, so a running stream in + // the current session can safely continue while this tab moves to another + // profile. The in-flight session stays attached to its original profile. // ── Loading indicator ─────────────────────────────────────────────────── // Show spinner on the profile chip immediately so the user gets visual @@ -3781,7 +3783,11 @@ async function switchToProfile(name) { // Determine whether the current session has any messages. // A session with messages is "in progress" and belongs to the current profile — // we must not retag it. We'll start a fresh session for the new profile instead. - const sessionInProgress = S.session && S.messages && S.messages.length > 0; + const sessionInProgress = S.session && ( + (S.messages && S.messages.length > 0) || + S.session.active_stream_id || + S.session.pending_user_message + ); try { const data = await api('/api/profile/switch', { method: 'POST', body: JSON.stringify({ name }) }); diff --git a/tests/test_issue1700_parallel_profile_switch.py b/tests/test_issue1700_parallel_profile_switch.py new file mode 100644 index 00000000..7928b9a7 --- /dev/null +++ b/tests/test_issue1700_parallel_profile_switch.py @@ -0,0 +1,95 @@ +"""Regression coverage for issue #1700 parallel profile switching. + +A WebUI profile switch uses cookie/thread-local profile state, so it should be +allowed while another session is streaming. Only process-wide profile switches +must remain blocked because they mutate global Hermes runtime state. +""" +from pathlib import Path + +import pytest + +REPO_ROOT = Path(__file__).parent.parent.resolve() +PANELS_JS = (REPO_ROOT / "static" / "panels.js").read_text(encoding="utf-8") + + +def _extract_switch_to_profile() -> str: + marker = "async function switchToProfile(name) {" + idx = PANELS_JS.find(marker) + assert idx != -1, "switchToProfile() not found in static/panels.js" + depth = 0 + for i, ch in enumerate(PANELS_JS[idx:], idx): + if ch == "{": + depth += 1 + elif ch == "}": + depth -= 1 + if depth == 0: + return PANELS_JS[idx : i + 1] + raise AssertionError("Could not extract switchToProfile() body") + + +def _prepare_profile_tree(tmp_path, monkeypatch): + import api.profiles as profiles + + default_home = tmp_path / ".hermes" + target_home = default_home / "profiles" / "writer" + target_workspace = tmp_path / "writer-workspace" + target_workspace.mkdir(parents=True) + target_home.mkdir(parents=True) + (target_home / "config.yaml").write_text( + f"model:\n provider: openai-codex\n default: gpt-5.5\n" + f"terminal:\n cwd: {target_workspace}\n", + encoding="utf-8", + ) + + monkeypatch.setattr(profiles, "_DEFAULT_HERMES_HOME", default_home) + monkeypatch.setattr(profiles, "_active_profile", "default") + monkeypatch.setattr(profiles, "list_profiles_api", lambda: [{"name": "default"}, {"name": "writer"}]) + profiles._tls.profile = None + return profiles + + +def test_process_wide_switch_still_blocks_when_stream_is_active(tmp_path, monkeypatch): + profiles = _prepare_profile_tree(tmp_path, monkeypatch) + from api.config import STREAMS + + STREAMS.clear() + STREAMS["stream-default"] = object() + try: + with pytest.raises(RuntimeError, match="Cannot switch profiles while an agent is running"): + profiles.switch_profile("writer", process_wide=True) + finally: + STREAMS.clear() + profiles._tls.profile = None + + +def test_per_client_switch_allowed_when_stream_is_active(tmp_path, monkeypatch): + profiles = _prepare_profile_tree(tmp_path, monkeypatch) + from api.config import STREAMS + + STREAMS.clear() + STREAMS["stream-default"] = object() + try: + result = profiles.switch_profile("writer", process_wide=False) + finally: + STREAMS.clear() + profiles._tls.profile = None + + assert result["active"] == "writer" + assert result["default_model"] == "gpt-5.5" + + +def test_frontend_profile_switch_no_longer_blocks_on_busy_state(): + fn = _extract_switch_to_profile() + + assert "profiles_busy_switch" not in fn + assert "if (S.busy)" not in fn + assert "Profile switches are per-client cookie/TLS scoped" in fn + + +def test_frontend_treats_active_or_pending_session_as_in_progress(): + fn = _extract_switch_to_profile() + session_block = fn[fn.find("const sessionInProgress") : fn.find("try {", fn.find("const sessionInProgress"))] + + assert "S.session.active_stream_id" in session_block + assert "S.session.pending_user_message" in session_block + assert "S.messages.length > 0" in session_block From 39df74770a4943bff9451dd5a5167b282336ee1c Mon Sep 17 00:00:00 2001 From: nesquena-hermes Date: Wed, 6 May 2026 16:25:54 +0000 Subject: [PATCH 3/4] fix(i18n): remove orphaned profiles_busy_switch keys (Opus stage-304 follow-up) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #1742 removed the only consumer of the `profiles_busy_switch` toast (the frontend S.busy-based early return in static/panels.js — which was shown when profile switch was blocked by an active stream). The 9 locale entries are now orphaned: they exist in static/i18n.js but no code path references them. Opus stage-304 advisor flagged this as a low-priority SHOULD-FIX ("file as a v0.51.x cleanup ticket, don't block the release"). Absorb- in-release per the absorb-default policy: ≤10 LOC and clearly defensive. Removed entries: en, ja, ru, fr, de, zh, zh-Hant, pt, es. Locale parity tests still pass (no key is missing; we removed it from English first). 4596 tests still pass. --- static/i18n.js | 9 --------- 1 file changed, 9 deletions(-) diff --git a/static/i18n.js b/static/i18n.js index 6a9bf433..68ca08bf 100644 --- a/static/i18n.js +++ b/static/i18n.js @@ -905,7 +905,6 @@ const LOCALES = { profile_api_key_placeholder: 'API key (optional)', manage_profiles: 'Manage profiles', profiles_load_failed: 'Failed to load profiles', - profiles_busy_switch: 'Cannot switch profiles while agent is running', profile_switched_new_conversation: (name) => `Switched to profile: ${name} — new conversation started`, profile_switched: (name) => `Switched to profile: ${name}`, profile_name_rule: 'Lowercase letters, numbers, hyphens, underscores only', @@ -1914,7 +1913,6 @@ const LOCALES = { profile_api_key_placeholder: 'APIキー (任意)', manage_profiles: 'プロファイルを管理', profiles_load_failed: 'プロファイルの読み込みに失敗しました', - profiles_busy_switch: 'エージェント実行中はプロファイルを切り替えできません', profile_switched_new_conversation: (name) => `プロファイルを切替: ${name} — 新しい会話を開始しました`, profile_switched: (name) => `プロファイルを切替: ${name}`, profile_name_rule: '小文字、数字、ハイフン、アンダースコアのみ', @@ -2713,7 +2711,6 @@ const LOCALES = { profile_api_key_placeholder: 'API-ключ (необязательно)', manage_profiles: 'Управление профилями', profiles_load_failed: 'Не удалось загрузить профили', - profiles_busy_switch: 'Нельзя переключать профили, пока агент работает', profile_switched_new_conversation: (name) => `Переключено на профиль: ${name} — начата новая беседа`, profile_switched: (name) => `Переключено на профиль: ${name}`, profile_name_rule: 'Только строчные буквы, цифры, дефисы и подчёркивания', @@ -3665,7 +3662,6 @@ const LOCALES = { profile_api_key_placeholder: 'Clave API (opcional)', manage_profiles: 'Manage profiles', profiles_load_failed: 'Failed to load profiles', - profiles_busy_switch: 'Cannot switch profiles while agent is running', profile_switched_new_conversation: (name) => `Switched to profile: ${name} — new conversation started`, profile_switched: (name) => `Switched to profile: ${name}`, profile_name_rule: 'Lowercase letters, numbers, hyphens, underscores only', @@ -4742,7 +4738,6 @@ const LOCALES = { profile_api_key_placeholder: 'sk-…', manage_profiles: 'Profile verwalten', profiles_load_failed: 'Profile konnten nicht geladen werden.', - profiles_busy_switch: 'Profil kann nicht gewechselt werden.', profile_switched_new_conversation: 'Profil gewechselt. Neue Konversation.', profile_switched: 'Profil gewechselt.', profile_name_rule: 'Nur alphanumerische Zeichen.', @@ -5534,7 +5529,6 @@ const LOCALES = { profile_api_key_placeholder: 'API 密钥(可选)', manage_profiles: '管理配置档', profiles_load_failed: '加载配置档失败', - profiles_busy_switch: 'Agent 运行中,无法切换配置档', profile_switched_new_conversation: (name) => `已切换到配置档:${name},并新建对话`, profile_switched: (name) => `已切换到配置档:${name}`, profile_name_rule: '仅允许小写字母、数字、连字符和下划线', @@ -6415,7 +6409,6 @@ const LOCALES = { profile_switched: (name) => `已切換到 ${name}`, profile_switched_new_conversation: (name) => `已切換到 ${name}(新會話)`, profile_use: '\u4f7f\u7528', - profiles_busy_switch: 'Agent \u57f7\u884c\u4e2d\u7121\u6cd5\u5207\u63db\u8a2d\u5b9a\u6a94', profiles_load_failed: '\u8f09\u5165\u8a2d\u5b9a\u6a94\u5931\u6557', profiles_no_profiles: '\u627e\u4e0d\u5230\u8a2d\u5b9a\u6a94\u3002', remove: '\u79fb\u9664', @@ -7516,7 +7509,6 @@ const LOCALES = { profile_api_key_placeholder: 'Opcional', manage_profiles: 'Gerenciar perfis', profiles_load_failed: 'Falha ao carregar perfis', - profiles_busy_switch: 'Não pode trocar perfis com agente rodando', profile_switched_new_conversation: (name) => `Trocado para perfil: ${name} — nova conversa iniciada`, profile_switched: (name) => `Trocado para perfil: ${name}`, profile_delete_confirm: (name) => `Excluir perfil "${name}"?`, @@ -8427,7 +8419,6 @@ const LOCALES = { profile_api_key_placeholder: 'API key (optional)', manage_profiles: 'Manage profiles', profiles_load_failed: 'Failed to load profiles', - profiles_busy_switch: 'Cannot switch profiles while agent is running', profile_switched_new_conversation: (name) => `Switched to profile: ${name} — new conversation started`, profile_switched: (name) => `Switched to profile: ${name}`, profile_name_rule: 'Lowercase letters, numbers, hyphens, underscores only', From 2fc9c23d9bba63030c2eecf10e15c533a1cab8d1 Mon Sep 17 00:00:00 2001 From: nesquena-hermes Date: Wed, 6 May 2026 16:27:01 +0000 Subject: [PATCH 4/4] =?UTF-8?q?chore(release):=20stamp=20v0.51.10=20?= =?UTF-8?q?=E2=80=94=202-PR=20batch=20(cron=20profile=20isolation=20+=20pr?= =?UTF-8?q?ofile=20switch=20during=20streams)=20+=20Opus=20follow-up?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Constituent PRs: - #1741 (@Michaelyklam) — isolate in-process cron scheduler profiles (closes #1575) - #1742 (@Michaelyklam) — allow profile switching during active streams (closes #1700) Plus 1 in-stage absorbed fix: - Opus SHOULD-FIX: remove 9 orphaned profiles_busy_switch i18n keys. Tests: 4590 → 4596 passing (+6). 0 regressions. Stably green. Pre-release verification: - Both PRs CI-green individually + rebased onto master with sibling-rebase against stage HEAD on api/profiles.py (different regions, no conflicts) - pytest 4596 passed, 0 failed (single clean run) - node -c clean on static/panels.js + static/i18n.js - 11/11 browser API endpoints PASS - Opus advisor: SHIP both, 5/5 verification clean, 0 MUST-FIX, 1 SHOULD-FIX absorbed Closes #1575, #1700. --- CHANGELOG.md | 29 +++++++++++++++++++++++++++++ ROADMAP.md | 2 +- TESTING.md | 4 ++-- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7fc4dc1e..eeb817fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,34 @@ # Hermes Web UI -- Changelog +## [v0.51.10] — 2026-05-06 — 2-PR full-sweep batch + +### Fixed + +- **PR #1741** by @Michaelyklam — Isolate in-process cron scheduler profiles (closes #1575). The existing manual `/api/crons/run` flow already enters `cron_profile_context_for_home(...)` before calling `cron.scheduler.run_job()`, but a future in-process scheduler tick path (no request TLS) would call `run_job()` directly with whatever process-global profile happened to be active. New `install_cron_scheduler_profile_isolation()` in `api/profiles.py` (called once at WebUI profile-state init) wraps `cron.scheduler.run_job()` so it resolves the job's persisted `profile` to the matching `HERMES_HOME` and enters the same `cron_profile_context_for_home(...)` before execution. Thread-local cron-context depth tracking prevents re-entry when the manual path already pinned the profile (otherwise the non-reentrant `_cron_env_lock` would deadlock). Idempotent install via `_webui_profile_isolated` sentinel. Defensive: closes a future architectural gap; no behavior change to existing manual cron path. 4 new regression tests for the wrapper and the manual-run no-reentry guard. +- **PR #1742** by @Michaelyklam — Allow profile switching during active streams (closes #1700). The previous `switch_profile()` blocked ALL profile switches whenever any stream was active, but the WebUI route uses cookie/thread-local switching (`process_wide=False`) which doesn't actually mutate `HERMES_HOME`, module-level path caches, process `.env`, or global config. Split the guard: process-wide global mutations remain blocked during active streams (still correct), per-client cookie switches now proceed unblocked. Frontend `static/panels.js` removes the `S.busy`-based early return and treats `active_stream_id`/`pending_user_message` as in-progress, so switching away creates a fresh session for the target profile rather than retagging the running one (matches the convention used in `static/boot.js`, `static/messages.js`, `static/commands.js`). 4 new regression tests + browser QA screenshot. + +### In-stage absorbed fix + +**Opus follow-up (absorbed in-release):** + +- **i18n cleanup — remove orphaned `profiles_busy_switch` keys.** PR #1742 removed the only consumer of this toast (the frontend `S.busy`-based early return). 9 locale entries were left orphaned. Opus stage-304 advisor flagged this as a low-priority SHOULD-FIX; absorbed per the absorb-default policy. Locale parity tests still pass (key removed from English first). + +### Tests + +4590 → **4596 passing** (+6 regression tests across the 2 PRs). 0 regressions. Full suite ~129s. + +### Pre-release verification + +- Stage-304: 2 PRs merged with sibling-rebase against stage HEAD on `api/profiles.py` (different regions: #1741 lines 248-345, #1742 around line 596 + #1741's offset). No conflicts. +- All JS files syntax-clean (`node -c static/{panels,i18n}.js`). +- All Python files syntax-clean. +- pytest: 4596 passed, 0 failed (single clean run). +- `scripts/run-browser-tests.sh`: all 11 endpoints PASS on isolated port 8789 with stage-304 binary. +- Pre-stamp re-fetch: both PR heads still match local rebases — no late contributor commits. +- Opus advisor: SHIP both, 5/5 verification questions clean, 0 MUST-FIX, 1 SHOULD-FIX absorbed (orphaned i18n keys). + +Closes #1575, #1700. + ## [v0.51.9] — 2026-05-06 — 2-PR full-sweep batch ### Fixed diff --git a/ROADMAP.md b/ROADMAP.md index 969c1cc1..c5982e0e 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -2,7 +2,7 @@ > Web companion to the Hermes Agent CLI. Same workflows, browser-native. > -> Last updated: v0.51.9 (May 6, 2026) — 4590 tests collected — 2-PR full-sweep batch (#1735, #1738) +> Last updated: v0.51.10 (May 6, 2026) — 4596 tests collected — 2-PR full-sweep batch (#1741, #1742) > Test source: `pytest tests/ --collect-only -q` > Per-version detail: see [CHANGELOG.md](./CHANGELOG.md) diff --git a/TESTING.md b/TESTING.md index 0546e658..bf5f624b 100644 --- a/TESTING.md +++ b/TESTING.md @@ -1835,8 +1835,8 @@ Bridged CLI sessions: --- -*Last updated: v0.51.9, May 6, 2026* -*Total automated tests collected: 4590* +*Last updated: v0.51.10, May 6, 2026* +*Total automated tests collected: 4596* *Regression gate: tests/test_regressions.py* *Run: pytest tests/ -v --timeout=60* *Source: /*