Commit graph

1619 commits

Author SHA1 Message Date
nesquena-hermes
42c359abd6 Apply Codex fix: gateway done-payload uses _session_payload_with_full_messages too (sibling of streaming done/error sites) + test 2026-06-14 20:38:43 +00:00
ai-ag2026
3030babb10 fix: keep settled stream message counts consistent 2026-06-14 20:33:56 +00:00
nesquena-hermes
593acd6720 Merge PR #3881: cache + single-flight /api/sessions payloads (#3791) 2026-06-14 18:53:57 +00:00
nesquena-hermes
0d749ed9ee Merge PR #4166: keep complete sidebar metadata on index fastpath 2026-06-14 18:37:55 +00:00
nesquena-hermes
e3e14b07e3 Merge PR #4186: fix misleading error in regenerate-title endpoint (copy) 2026-06-14 18:04:40 +00:00
Rod Boev
43ec609772 Fix misleading error message in regenerate-title endpoint 2026-06-14 13:50:38 -04:00
Rod Boev
521d4434c9 fix(approval): extract _webui_mirror_token literal into named constant 2026-06-14 17:48:37 +00:00
Rod Boev
bd216432b3 fix(approval): stable mirror token via entry.data, guard stale explicit id fallthrough 2026-06-14 17:48:37 +00:00
Rod Boev
c789504a0f Avoid CI-only approval mirror regressions 2026-06-14 17:48:37 +00:00
Rod Boev
6cef9d7055 fix(approval): keep mirrored pending state aligned with gateway lifecycle (#4107) 2026-06-14 17:48:37 +00:00
Rod Boev
2db3e046d8 fix(approval): log empty gateway queue entries for diagnostics 2026-06-14 17:48:37 +00:00
Rod Boev
92e3aac1c5 fix(approval): restore pending fallback reliability (#4107) 2026-06-14 17:48:37 +00:00
nesquena-hermes
ec535daded Merge PR #4184: regenerate-title for CLI/TUI sessions lacking sidecar (#4183) 2026-06-14 17:36:17 +00:00
nesquena-hermes
f06492b3ee Merge PR #4148: surface gateway reasoning previews in WebUI (#4146) 2026-06-14 17:36:17 +00:00
Rod Boev
e0dbbaec82 Materialize CLI/TUI sessions before regenerating title (#4183) 2026-06-14 13:21:32 -04:00
Rod Boev
769fd11f22 fix(#4146): read reasoning_content gateway chunks 2026-06-14 10:22:43 -04:00
ai-ag2026
7c69f71ff9 fix: refresh stale zero-message snapshots 2026-06-14 08:26:59 +02:00
ai-ag2026
514af98362 perf: keep complete sidebar metadata on index fastpath 2026-06-14 08:26:59 +02:00
Rod Boev
bc5fceb88a fix(streaming): provider-gate title-gen reasoning extra_body (#4161, #2083)
Consolidates #4162 + #3944. Aux path: skip the reasoning-disable inject for
routes that 400 on it via _route_rejects_reasoning_extra — hostname-matched
OpenAI / Azure OpenAI / Azure AI Foundry (+ provider aliases openai*/azure*/
azure-foundry/azure-ai*) and OpenRouter Anthropic mandatory-reasoning; keep it
for local/OpenRouter-non-anthropic/other reasoning routes (#4161). Agent path:
rely on the existing agent.reasoning_config={enabled:False} + _build_api_kwargs()
(route-correct per provider profile) rather than re-injecting a generic disable
on top of it; only MiniMax reasoning_split is added (unchanged from master).

Co-authored-by: Rod Boev <rod.boev@gmail.com>
2026-06-14 05:22:47 +00:00
b3nw
db3d22912e fix(config): reasoning toggle for nested Gemini custom provider routes (#3431)
Version-gated the nested-gateway allow to 2.5-series/3-era (reviewer fix:
gemini-1.5/1.0 have no thinking controls -> selector would fail on send) +
pre-2.5 exclusion regression tests. Stamped v0.51.408 (Release NU).

Co-authored-by: b3nw <b3nw@users.noreply.github.com>
2026-06-14 04:44:47 +00:00
Matt Van Horn
b139404cdc fix: guard blank session workspace + agent parity for project-context tab
- Return None for blank session.workspace instead of Path('').resolve()
  (which resolved to the server CWD and could surface the install's own
  AGENTS.md/HERMES.md as project context).
- Match the agent's lowercase filename variants (agents.md / claude.md).
- Read .cursor/rules/*.mdc, not just the legacy .cursorrules file.
- Strip YAML frontmatter and cap each source at 20k, mirroring what the
  agent actually injects.
- Regression tests for the guard, lowercase match, and frontmatter strip.
2026-06-14 03:38:26 +00:00
Matt Van Horn
6215b4535a feat: show the active workspace project-context file (AGENTS.md / HERMES.md / CLAUDE.md) in the Memory tab
Fixes #3866
2026-06-14 03:38:26 +00:00
Rod Boev
8677a11012 fix(sidebar): restore source_filter passthrough in cache builder (#3791) 2026-06-13 23:27:48 -04:00
Rod Boev
9f86bfee40 fix(sidebar): preserve expired cache entries for stale follower fallback 2026-06-13 22:36:25 -04:00
Rod Boev
43972652e7 fix(sidebar): collapse cache reads so stale-while-rebuilding path is reachable 2026-06-13 22:36:25 -04:00
Rod Boev
3fcb831a68 Restore stale follower reuse during cache rebuilds 2026-06-13 22:36:25 -04:00
Rod Boev
07641dc987 Keep session list singleflight stable for WebUI-only views 2026-06-13 22:36:25 -04:00
Rod Boev
f7dbf7df6a Invalidate cached session lists when backing stores change 2026-06-13 22:36:25 -04:00
Rod Boev
c3750fe361 perf(sidebar): cache and single-flight /api/sessions payloads (#3791) 2026-06-13 22:36:25 -04:00
Rod Boev
42e85813a3 fix(#4146): preserve gateway reasoning previews on reload 2026-06-13 21:18:43 -04:00
Rod Boev
79cefa736c fix(#4146): accept text-only gateway thinking previews 2026-06-13 19:29:02 -04:00
nesquena-hermes
5812df5f7b Merge #4112 (skill bundles in WebUI slash commands, #4087) onto master 2026-06-13 23:13:28 +00:00
Rod Boev
b9a997ff58 fix(gateway): surface reasoning previews in WebUI (#4146) 2026-06-13 19:07:05 -04:00
Rod Boev
d7e8f70423 fix(commands): block transient bundle shadowing 2026-06-13 18:53:46 -04:00
nesquena-hermes
fa19eae6d1 Merge #3940 v2 (claim probe workers under pool lock, #3787) onto master 2026-06-13 22:05:05 +00:00
nesquena-hermes
4f1ce2661e Merge #3998 v2 (imported-session titles + reload-before-save fix, #3987) onto master 2026-06-13 21:46:36 +00:00
Rod Boev
6a27b414c6 Preserve imported title rework without breaking route invariants 2026-06-13 17:34:22 -04:00
nesquena-hermes
f7047d4d19 Merge #4072 (wire /credits through WebUI command dispatch, #4071) onto master 2026-06-13 21:15:22 +00:00
Rod Boev
e1ec41b32c fix(session): reload latest imported session before title save (#3987) 2026-06-13 16:47:57 -04:00
Rod Boev
bb8d5e9587 fix(providers): claim probe workers under the pool lock (#3787) 2026-06-13 16:42:43 -04:00
nesquena-hermes
12107f3ae5 Merge #4011 (push source filters into agent session scans, #3930) onto master 2026-06-13 20:17:51 +00:00
nesquena-hermes
30cc15975e fix(#4130): coerce stale 'max' in get_reasoning_status read path too (Codex catch)
get_reasoning_status() returned the raw config reasoning_effort, so a stale saved
'max' surfaced on boot/status/chip even though streaming coerces it to xhigh. Now
routes the status value through coerce_reasoning_effort_for_model() with the resolved
model/provider/base_url, so all read paths agree. Added a stale-max->xhigh status
regression test.
2026-06-13 18:50:00 +00:00
Rod Boev
95bb9ebe66 Keep stale max configs on the supported path 2026-06-13 14:33:26 -04:00
Rod Boev
c7c313672c fix(reasoning): hide unsupported max effort (#4119) 2026-06-13 14:33:26 -04:00
Rod Boev
840f12a74e fix(commands): keep bundle profile scoping strict (#4087) 2026-06-13 14:06:35 -04:00
Rod Boev
5a3c6c6f05 fix(commands): surface skill bundles in WebUI slash commands (#4087) 2026-06-13 14:06:35 -04:00
nesquena-hermes
465d229800 Merge #4103 (surface dirty install state in update-check, #4085) onto master
# Conflicts:
#	CHANGELOG.md
2026-06-13 17:38:48 +00:00
Rod Boev
59562e416a fix(#4071): wire /credits through WebUI command dispatch 2026-06-13 07:50:16 -04:00
nesquena-hermes
6e6931a8c3 Merge #4028 (align profile cookie env var with HERMES_WEBUI_ prefix) onto master 2026-06-13 07:20:58 +00:00
b3nw
9bb1dc8573 fix(#4085): surface dirty install state in update-check payload
The update-check payload now carries a `dirty: bool` reflecting the
working-tree state vs HEAD, computed via the same `git diff-index
--quiet HEAD --` primitive already used by `_dirty_suffix()`. A dirty
install at-or-past the latest release tag used to silently report
"Up to date" with no remediation affordance; the Settings panel
can now read this flag to offer `apply_force_update` (which already
does `git checkout .` + `git reset --hard` to reset to a clean
latest).

The probe is conservatively clean on real errors (timeout, missing
git, fatal) so a transient probe failure never produces a false-
positive "local changes" alert.

Closes #4085
2026-06-13 06:05:06 +00:00