Commit Graph

3340 Commits

Author SHA1 Message Date
nesquena-hermes d45bc32c8d test: update #2246 question-jump assertions for #3114 (button on all assistant msgs with resolvable target) 2026-05-30 00:10:29 +00:00
Sanjays2402 24b175045f Fix #3114: keep jump-to-question button on intermediate assistant messages
In multi-step turns (assistant -> tool_call -> assistant -> tool_call ->
final assistant), only the turn-final assistant bubble was rendering the
'jump to question' navigation button because the gate keyed on
isTurnFinalAssistant. Intermediate assistant bubbles that *do* have a
resolvable question raw-index lost the affordance entirely.

Switch the gate to 'show whenever questionRawIdxByAssistantRawIdx has a
target for this rawIdx', which is the actual precondition for the button
being meaningful. Turn-finality was a proxy for 'has a question target'
that under-covered multi-step turns.

No template/CSS change needed; _questionJumpButtonHtml already handles
the rawIdx-or-undefined contract.
2026-05-30 00:09:13 +00:00
nesquena-hermes c8afb37ae7 Merge pull request #3146 from nesquena/release/stage-batch42
Release v0.51.160 — Release EF (stage-batch42: 3-PR low-risk cleanup)
v0.51.160
2026-05-29 16:55:24 -07:00
nesquena-hermes cb7360e11c stage-batch42: CHANGELOG for v0.51.160 (Release EF) + skills/session-index entries 2026-05-29 23:48:51 +00:00
nesquena-hermes bd0e915a5d Merge PR #3142 (session-index metadata refresh perf) into stage-batch42 2026-05-29 23:48:29 +00:00
nesquena-hermes 8933fe9dbe Merge PR #3112 (skills disabled read-path) into stage-batch42 2026-05-29 23:48:24 +00:00
nesquena-hermes dc2ed59aaa Merge PR #3136 (OpenCode shared key) into stage-batch42 2026-05-29 23:48:24 +00:00
nesquena-hermes 23f5ee15f7 review-3142: align load_metadata_only comment with sidecar-first logic 2026-05-29 23:46:51 +00:00
zapabob 1f51ef14d0 fix: detect shared OpenCode API key 2026-05-29 23:22:15 +00:00
Harlan Zhou 39f09a5b7a fix: read skills disabled state from active profile 2026-05-29 23:21:48 +00:00
ai-ag2026 017179b189 fix: speed up session index metadata refresh 2026-05-29 23:21:48 +00:00
nesquena-hermes 95cee09c31 Merge pull request #3144 from nesquena/release/stage-batch41
Release v0.51.159 — Release EE (stage-batch41: 5-PR low-risk cleanup)
v0.51.159
2026-05-29 15:28:50 -07:00
nesquena-hermes 6d61fbdd17 stage-batch41: CHANGELOG for v0.51.159 (Release EE) 2026-05-29 22:25:37 +00:00
nesquena-hermes 4e382e4f36 stage-batch41: update test_issue1824 snippet-limit assertion 200->4000 (follows #3117) 2026-05-29 22:22:05 +00:00
nesquena-hermes 11ba36beb9 Merge PR #3135 into stage-batch41
# Conflicts:
#	CHANGELOG.md
#	api/routes.py
2026-05-29 22:15:46 +00:00
nesquena-hermes 111e7a11b1 Merge PR #3118 into stage-batch41
# Conflicts:
#	CHANGELOG.md
#	static/boot.js
2026-05-29 22:14:16 +00:00
nesquena-hermes de90ca3abe Merge PR #3117 into stage-batch41 2026-05-29 22:13:08 +00:00
nesquena-hermes 5c96764e3d Merge PR #3099 into stage-batch41
# Conflicts:
#	CHANGELOG.md
2026-05-29 22:13:08 +00:00
nesquena-hermes 9ca0bdccc8 Merge PR #3098 into stage-batch41
# Conflicts:
#	CHANGELOG.md
2026-05-29 22:12:43 +00:00
nesquena-hermes 1ebd1601d6 Merge pull request #3143 from nesquena/release/stage-batch40
Release v0.51.158 — Release ED (stage-batch40: 5-PR low-risk cleanup)
v0.51.158
2026-05-29 15:11:11 -07:00
nesquena-hermes edd80751fc stage-batch40: CHANGELOG for v0.51.158 (Release ED) 2026-05-29 22:01:47 +00:00
nesquena-hermes ff78a422ca Merge PR #3139 into stage-batch40 2026-05-29 22:01:06 +00:00
nesquena-hermes 3206aec3f3 Merge PR #3138 into stage-batch40
# Conflicts:
#	CHANGELOG.md
2026-05-29 22:01:06 +00:00
nesquena-hermes 9aff2a16d4 Merge PR #3137 into stage-batch40 2026-05-29 21:59:24 +00:00
nesquena-hermes d072039237 Merge PR #3130 into stage-batch40 2026-05-29 21:59:24 +00:00
nesquena-hermes 649f64b374 Merge PR #3129 into stage-batch40 2026-05-29 21:59:24 +00:00
Philippe Le Rohellec e6aa9271c2 fix(models): preserve provider-qualified model selections in the picker
- Stop provider-qualified or slash-qualified model inputs from fuzzy-matching a
  sibling catalog entry when the exact requested model is missing from the
  curated picker list.
- Preserve the raw typed selection so uncatalogued provider-routed models
  fall through to a temporary custom option instead of silently snapping to a
  nearby curated model.
- Add generalized regression coverage for provider-qualified uncatalogued
  picker selections.
2026-05-29 10:24:44 -07:00
AJV20 3c2f98eb23 fix: polish WebUI assistant replies 2026-05-29 13:01:14 -04:00
AJV20 ce82ea3fdf fix: add joplin search auth compatibility 2026-05-29 12:36:27 -04:00
AJV20 35f89c4e5b fix: harden external notes guardrails 2026-05-29 12:30:04 -04:00
Sanjays2402 e09c6aa6bd Fix #3076: don't force mobile send-on-Enter when a real keyboard is attached
A touch-primary device (`matchMedia('(pointer:coarse)')` is true) can
still have a physical keyboard available — Android tablet + Bluetooth
keyboard, detachable Surface, iPad + Magic Keyboard. The existing
`_mobileDefault` gate flipped Enter to newline on every such device the
moment the visual-viewport heuristic *thought* the soft keyboard was
open, which it often did when the on-screen IME hadn't actually come up
because the user is typing on the hardware keys. Result: Shift+Enter and
Ctrl+Enter never sent and the user could not submit at all.

Add `_hasFinePointerCoexisting()` (`(any-pointer:fine)`) and short-
circuit the mobile-default path when ANY fine pointer is present. That
flag is true whenever a real mouse/trackpad/stylus is paired, which is
the strongest browser signal we have for 'there is a hardware input rig
in the picture too'. Pure-touch phones/tablets are unaffected.
2026-05-29 03:26:12 -07:00
Sanjays2402 7c3d85d6c5 Fix #3107: throttle active-session external-refresh poll from 5s to 30s
The active-session 'is it externally updated?' fallback poll fires every
5 s. On long sessions this causes visible scroll churn (the rendered
message list is rebuilt and the scrollTop is restored on a 5-second
cadence) and a measurable network/CPU floor even when the user is just
reading.

This poll is a *fallback* for the case where the SSE session-events
stream is unavailable; SSE already invalidates the active session in
real time. Pushing it to 30 s keeps the safety net for SSE-broken
environments without it acting as a primary refresh path.

Regression introduced in 467ef33a.
2026-05-29 03:25:49 -07:00
mysoul12138 7f63a1ce71 Add regression test for JS/Python snippet limit parity
Prevents the JS slice(0,N) and Python _TOOL_RESULT_SNIPPET_MAX from
drifting apart again.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 16:12:05 +08:00
Dennis Soong f5dc9477ff fix: submit composer on numpad enter 2026-05-29 13:00:15 +08:00
mysoul12138 b476126cb9 fix(ui): match tool result snippet limit to backend (200 -> 4000 chars)
_cliToolResultSnippet truncated to 200 chars while the backend's
_tool_result_snippet uses 4000. This caused tool card details to be
more aggressively truncated after session reload than during live
streaming.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 12:34:10 +08:00
ai-ag2026 53f16c4ee6 fix: log WebUI shutdown diagnostics 2026-05-28 23:22:31 +02:00
AJV20 d8a48ee5f8 Merge remote-tracking branch 'origin/master' into fix/webui-gateway-tool-activity
# Conflicts:
#	CHANGELOG.md
#	tests/test_webui_gateway_chat_backend.py
2026-05-28 16:11:34 -04:00
nesquena-hermes cf003ae986 Merge pull request #3096 from nesquena/release/stage-batch39
stage-batch39: v0.51.157 / Release EC — 5-PR mixed-risk cleanup
v0.51.157
2026-05-28 13:08:40 -07:00
AJV20 b76a6dfedb fix: forward gateway tool activity to webui 2026-05-28 16:03:16 -04:00
nesquena-hermes 0459f60b5c stage-batch39: stamp v0.51.157 / Release EC
5-PR mixed-risk cleanup:
- #3090 gateway-chat forwards prefill+session-context into delegated Gateway turns
- #3091 sidebar keeps newer compressed continuation visible; lineage-aware state-db dedupe; session-arc marker exclusion
- #3092 browser-transcript memory guidance prompt addition
- #3093 reasoning-effort max parity with hermes_constants
- #3094 webui_prefill_context_max_chars budget (default 12000) for prefill payloads
2026-05-28 19:52:56 +00:00
nesquena-hermes 65dc5f7cf1 stage-batch39: add CHANGELOG entry for #3091 (no entry in original PR) 2026-05-28 19:52:10 +00:00
nesquena-hermes c1a7668bdf Merge PR #3091 2026-05-28 19:51:29 +00:00
nesquena-hermes 6719f35930 Merge PR #3094
# Conflicts:
#	CHANGELOG.md
#	api/streaming.py
2026-05-28 19:51:29 +00:00
nesquena-hermes 20f8bc3290 Merge PR #3090
# Conflicts:
#	CHANGELOG.md
2026-05-28 19:50:10 +00:00
nesquena-hermes 1a6409764a Merge PR #3093
# Conflicts:
#	CHANGELOG.md
2026-05-28 19:49:34 +00:00
nesquena-hermes 22db5bbe67 Merge PR #3092
# Conflicts:
#	CHANGELOG.md
2026-05-28 19:48:56 +00:00
nesquena-hermes 5ec136af3b Merge pull request #3095 from nesquena/release/stage-batch38
stage-batch38: v0.51.156 / Release EB — 2-PR Tier B cleanup
v0.51.156
2026-05-28 12:45:09 -07:00
nesquena-hermes 993e251435 stage-batch38: stamp v0.51.156 / Release EB
2-PR Tier B cleanup:
- #3084 harden WebUI request/session/runtime edges (auth.py thread-safety + body validation + frontend storage guards + sw.js vendor precache + i18n key fills + workspace_git test default-branch)
- #3087 model_provider fallback only when same model — fixes fresh-session model_provider=null bug
2026-05-28 19:38:29 +00:00
nesquena-hermes f7b4c6b0f4 Merge PR #3087
# Conflicts:
#	CHANGELOG.md
2026-05-28 19:38:10 +00:00
Hermes Agent b92204a7b7 fix(sidebar): keep newer continuation visible over older snapshot 2026-05-28 13:38:06 -06:00