Commit graph

5634 commits

Author SHA1 Message Date
nesquena-hermes
751ba20fec merge #5129 surface provider auth failures in chat 2026-06-28 22:54:54 +00:00
nesquena-hermes
1a4dcd4fb5 merge #5128 custom-provider bare-model wakeup repair 2026-06-28 22:54:54 +00:00
nesquena-hermes
83da31395e
Merge pull request #5154 from nesquena/stage/5117-defer
fix: defer non-critical session-switch refreshes (#5117)
2026-06-28 15:41:56 -07:00
nesquena-hermes
80661f03ce docs(changelog): defer non-critical session-switch refreshes (#5117) + scope-undef gate: allowlist requestIdleCallback/cancelIdleCallback 2026-06-28 22:38:22 +00:00
nesquena-hermes
fc02953ea6 Merge branch 'pr-5117-head' into stage/5117-defer 2026-06-28 22:25:26 +00:00
nesquena-hermes
7b12dff3e6 test(#5121): make auth-failure tests host-independent
The 4 terminal-auth-failure tests assert an unrecoverable 401 surfaces an
apperror / persisted _error turn. The settlement path first attempts the
#1401 credential self-heal, which reads ~/.hermes/auth.json. On a host with
populated credentials, self-heal can succeed and retry the mock agent,
swallowing the error the test expects -- so the result depended on host
credentials (green on CI / Windows with no creds, red on a live agent box).

Add an autouse fixture that forces _attempt_credential_self_heal to a no-op
so every host exercises the unrecoverable-failure path. The one test that
verifies a successful retry already patches the symbol in its own body, so it
is unaffected.

Co-authored-by: rodboev <rodboev@users.noreply.github.com>
2026-06-28 22:20:28 +00:00
nesquena-hermes
4e71be2268
Merge pull request #5150 from nesquena/stage/5147-approval
fix(gateway): clear stale approval mirrors on stream teardown (#5147)
2026-06-28 15:04:47 -07:00
nesquena-hermes
beb883a159 docs(changelog): clear stale gateway approval mirrors on teardown (#5147) 2026-06-28 21:57:12 +00:00
b3nw
7a04b7e9aa fix: gate bare-model repair on profile provider match (#5128 review)
When session model_provider differs from profile model.provider, do not
expose profile_default_model for suffix repair. Fast path also requires
profile_provider to match requested_provider when profile_provider is set.

Addresses cross-provider mis-resolution (custom:other-proxy + bare suffix).

Co-authored-by: b3nw <b3nw@users.noreply.github.com>
2026-06-28 21:52:06 +00:00
nesquena-hermes
c556262159 Merge branch 'pr-5147-head' into stage/5147-approval 2026-06-28 21:48:51 +00:00
nesquena-hermes
9bb23faf79
Merge pull request #5146 from nesquena/stage/5118-scroll
fix: pinned streaming scroll restoration (#5118)
2026-06-28 14:47:10 -07:00
nesquena-hermes
174d804da5
Merge branch 'master' into stage/5118-scroll 2026-06-28 14:44:08 -07:00
nesquena-hermes
230a3af684 docs(changelog): pinned streaming scroll restoration (#5118) 2026-06-28 21:40:18 +00:00
nesquena-hermes
247aa55011
Merge pull request #5143 from nesquena/stage/5119-i18n
fix(i18n): complete Polish localization (#5119)
2026-06-28 14:34:39 -07:00
Rod Boev
62be5b02ea fix(#5135): clear stale gateway approval mirrors on stream teardown 2026-06-28 17:32:55 -04:00
nesquena-hermes
4db4b3d6f9
Merge branch 'master' into stage/5119-i18n 2026-06-28 14:26:38 -07:00
nesquena-hermes
fc087c067f Merge branch 'pr-5118-head' into stage/5118-scroll 2026-06-28 21:22:53 +00:00
nesquena-hermes
10642bc8bd
Merge pull request #5140 from nesquena/stage/5131-cron
fix(cron): recompute provider/model snapshots in the selected profile (#5131)
2026-06-28 14:13:31 -07:00
nesquena-hermes
48e6df9e39 Merge branch 'pr-5119-head' into stage/5119-i18n 2026-06-28 21:10:54 +00:00
nesquena-hermes
d482f8d256 docs(changelog): cron-snapshot profile recompute (#5131) 2026-06-28 21:10:28 +00:00
nesquena-hermes
fb7b16e723 Merge branch 'pr-5131-head' into stage/5131-cron 2026-06-28 20:51:44 +00:00
nesquena-hermes
d8ff8bf2c5
Merge pull request #5138 from nesquena/stage/5113-brand
Brand: new cyan caduceus favicon + top-nav logo (#5113)
2026-06-28 13:48:56 -07:00
nesquena-hermes
5c2d4f243b docs(changelog): new cyan caduceus brand mark (#5113) 2026-06-28 20:37:05 +00:00
nesquena-hermes
a17080d61f Merge branch 'pr-5113-stage' into stage/5113-brand 2026-06-28 20:36:46 +00:00
nesquena-hermes
bba0ef37d1
Merge pull request #5137 from nesquena/stage/p1-lowrisk-a
docs(architecture): settled fallback ownership matrix + guard test (#5090)
2026-06-28 13:27:13 -07:00
nesquena-hermes
9b17c1c80a Merge branch 'pr-5090-head' into stage/p1-lowrisk-a 2026-06-28 20:22:22 +00:00
nesquena-hermes
822effe0d5 test(graphite-skin): drop stale .app-titlebar-icon rect assertion
PR #5113 (new cyan caduceus brand mark) intentionally removed the per-skin
.app-titlebar-icon rect/path/circle recolor overrides — the old gold mark was
forced to the skin accent, but the new brand badge is self-colored and constant
across themes. test_graphite_skin_tunes_workbench_chrome still asserted that
removed rule. Dropped the obsolete assertion; the rest of the graphite chrome
coverage is unchanged.
2026-06-28 20:11:22 +00:00
nesquena-hermes
1cbf364f48 Merge remote-tracking branch 'origin/master' into pr5113 2026-06-28 20:05:50 +00:00
Rod Boev
2eeb0f0f53 fix(#5130): serialize profile-scoped snapshot repair 2026-06-28 16:03:25 -04:00
nesquena-hermes
e3271b099a
Merge pull request #5133 from nesquena/stage/brick-5096
fix(session): context-correctness bundle (#5096 A-D) + SSE live-turn blank-out (#5122)
2026-06-28 13:03:11 -07:00
Rod Boev
fd139132b6 fix(#5130): harden cron snapshot repair follow-up 2026-06-28 15:56:50 -04:00
nesquena-hermes
e60689bf28 docs(changelog): brick batch entries (#5122 SSE blank-out, #5096 fork/edit/rewind context bundle #5124/#5125/#5126) 2026-06-28 19:37:26 +00:00
nesquena-hermes
2d249089fc fix(session): guard _evict_session_agent against closing a live session's _session_db
Mirror the worker's LRU-eviction ACTIVE_RUNS liveness check in
_evict_session_agent so truncate/clear/model-switch can't close the SessionDB
out from under an in-flight turn on the same session (#5096 Bug D follow-up).
The cache handle still drops (harmless — worker holds a local ref); only the
lifecycle commit + _session_db.close() are skipped while a run is active.

Co-authored-by: claw-io <claw-io@users.noreply.github.com>
2026-06-28 19:36:59 +00:00
Rod Boev
7e806d7194 fix(#5130): recompute cron snapshots in selected profile 2026-06-28 15:29:40 -04:00
Rod Boev
4763c2a9a4 Keep null error fields from tripping replay failure 2026-06-28 15:22:33 -04:00
Rod Boev
8fbc3dcc9f Preserve canonical provider error probes in auth terminal turns 2026-06-28 15:11:01 -04:00
b3nw
159d8a96f4 fix: repair bare custom-provider model on process-wakeup fast path
Refs #5127.

When _resolve_compatible_session_model_state takes the #1855 fast path with
a bare runtime model suffix and a slash-qualified profile default, repair to
the full qualified ID for custom/custom:* providers.

Also load profile model.default when the session already has model_provider
so wakeup turns can apply that repair.

Co-authored-by: b3nw <b3nw@users.noreply.github.com>
2026-06-28 18:34:10 +00:00
nesquena-hermes
2ebcaeac64 Merge branch 'pr-5122-head' into stage/brick-5096 2026-06-28 18:26:34 +00:00
Rod Boev
3e27a8bafe fix(streaming): surface provider auth failures in chat (#5121) 2026-06-28 14:23:08 -04:00
nesquena-hermes
aae7cc58d2 Merge branch 'pr-5126-head' into stage/brick-5096
# Conflicts:
#	api/session_ops.py
2026-06-28 18:14:03 +00:00
nesquena-hermes
57061d0b19 Merge branch 'pr-5125-head' into stage/brick-5096 2026-06-28 18:13:29 +00:00
nesquena-hermes
c62a23d0bf Merge branch 'pr-5124-head' into stage/brick-5096 2026-06-28 18:13:29 +00:00
b3nw
6e499eb1dd fix(session): semantic context truncate on rewind + evict agent
Refs nesquena/hermes-webui#5096

Co-authored-by: b3nw <b3nw@users.noreply.github.com>
2026-06-28 18:01:56 +00:00
b3nw
bf1f8339b8 fix(ui): use absolute keep_count for edit and regenerate truncate
Refs nesquena/hermes-webui#5096

Co-authored-by: b3nw <b3nw@users.noreply.github.com>
2026-06-28 18:01:54 +00:00
Rod Boev
3fafa3efc6 fix(streaming): surface provider auth failures in chat (#5121) 2026-06-28 14:00:40 -04:00
b3nw
aacf860ccc fix(session): truncate context_messages when branching from fork point
Refs nesquena/hermes-webui#5096

Co-authored-by: b3nw <b3nw@users.noreply.github.com>
2026-06-28 17:59:46 +00:00
Rod Boev
eb886836f5 fix(streaming): surface provider auth failures in chat (#5121) 2026-06-28 13:37:18 -04:00
Rod Boev
ca4fe4e54b fix(streaming): surface provider auth failures in chat (#5121) 2026-06-28 13:26:57 -04:00
allenliang2022
b0d01e492a fix(test): update run-journal reconnect anchor for the (1/N) template literal
test_error_reconnect_path_can_restore_from_journal anchored on the exact string
setComposerStatus('Reconnecting — but the first status was changed to a template
literal `Reconnecting… (1/${_retryDelays.length})` for the staged-probe counter,
so that single-quoted anchor no longer exists (ValueError: substring not found in
CI shard 2). Re-anchor on the block's stable entry point _reconnectAttempted=true;
(unique in source) and widen the window to 1100 chars; the st.active /
st.replay_available / Restoring stream / _runJournalReplayParams() assertions are
unchanged.
2026-06-29 01:22:40 +08:00
Rod Boev
5f02189939 fix(streaming): surface provider auth failures in chat (#5121) 2026-06-28 13:18:32 -04:00