Commit Graph
100 Commits
Author SHA1 Message Date
nesquena-hermes 30f12dc526 Merge PR #6565 into stage/0924-g 2026-09-24 13:04:21 +00:00
nesquena-hermes 5a2105684d docs(changelog): stamp #7301 under [Unreleased] 2026-09-24 11:27:12 +00:00
nesquena-hermes c2c8ef5fce Merge PR #7301 from laitekin/fix/7299-hidden-session-poll 2026-09-24 11:26:41 +00:00
nesquena-hermes cb7852cdc1 docs(changelog): stamp #7754 under [Unreleased] 2026-09-24 10:55:11 +00:00
nesquena-hermes 0adc1f6e4f Merge PR #7754 from starship-s/fix/image-turn-display-context 2026-09-24 10:54:56 +00:00
nesquena-hermes 315ea7d3a8 fix(models): let a marked image row consume its replay slot
The row-id fast path for a marked native-image mirror row continued
without advancing state_replay_idx, unlike the ordinary and multimodal-
mirror replay paths. The edited checkpoint then never read as consumed,
so a rerun reply that exists only in state.db was truncated. Master (no
marker branch) keeps that reply.

Advance the replay index when the resolved sidecar row is the next
expected visible row, the same guard the mirror branch uses. Adds a
regression that fails without the fix: sidecar [u1,a1,img#42,a_img,uE],
state [.., marked img#42, a_img, u_old, a_old, uE, aE], watermark 900,
boundary 861 -> aE survives, u_old/a_old stay out.

Found by the release-manager advisor gate on #7754.
2026-09-24 10:47:47 +00:00
nesquena-hermes 026bad541d docs(changelog): stamp #7720 under [Unreleased] 2026-09-24 09:58:07 +00:00
nesquena-hermes 19908b5db4 Merge PR #7720: scope MCP status, inventory and /reload-mcp to the request profile 2026-09-24 09:58:07 +00:00
nesquena-hermes d261041a9a test(mcp): import the fake server class under mcp 1.x and 2.x
mcp 2.x removed mcp.server.fastmcp (the high-level server is now
mcp.server.MCPServer), so the fake stdio server in this test failed to
start on hosts with mcp 2.x installed and four tests failed there. CI pins
mcp<2, so this only affected local runs. Try the 1.x import first and fall
back to the 2.x name.
2026-09-24 09:57:52 +00:00
nesquena-hermes 3f29a5be08 docs(changelog): stamp #6746 under [Unreleased] 2026-09-24 08:05:40 +00:00
nesquena-hermes 10faa69155 Merge PR #6746 from happy5318/fix/mobile-enter-newline 2026-09-24 08:05:12 +00:00
nesquena-hermes 60f61f9038 docs(changelog): stamp #7798 under [Unreleased] 2026-09-24 06:57:37 +00:00
nesquena-hermes 18cf0fa0ba Merge PR #7798 from webtecnica/fix/7548-cli-archived-sessions-projection 2026-09-24 06:57:17 +00:00
nesquena-hermesandwebtecnica 5ecf92382a test(#7548): mark the monkeypatch-target import as intentional (ruff F401)
Co-authored-by: webtecnica <webtecnica@users.noreply.github.com>
2026-09-24 06:56:57 +00:00
nesquena-hermesandwebtecnica afcb1bf420 test(#7548): expect archived=None for a missing sidecar
The sidecar default is now 'no opinion' (None) so the projection can fall
back to state.db's archived flag. Update the #4842 perf test's missing-
sidecar expectation to match.

Co-authored-by: webtecnica <webtecnica@users.noreply.github.com>
2026-09-24 06:45:50 +00:00
nesquena-hermes 3116280dce docs(changelog): stamp #7628, #7493, #6433 under [Unreleased] 2026-09-24 03:38:33 +00:00
nesquena-hermes a1b3c068f7 docs: document HERMES_WEBUI_SETTINGS_FILE (#6433) incl. restart-to-change note 2026-09-24 03:15:28 +00:00
nesquena-hermes 16acb63a6d fix(notifications): auto-request 'default' permission at most once per page
A pending approval/clarify prompt re-surfaces on every 1.5s poll tick, and
with permission still 'default' (second browser/device) each tick issued a
non-gesture Notification.requestPermission() and toasted 'notifications
denied'. Auto requests are now made once per page; the explicit Send-test
path still always asks. Release-gate hardening on top of #7493.
2026-09-24 03:15:09 +00:00
nesquena-hermes ea5f7730be Merge PR #6433 into stage/0924-a 2026-09-24 03:15:02 +00:00
nesquena-hermes 1c4072228e Merge PR #7493 into stage/0924-a 2026-09-24 03:15:02 +00:00
nesquena-hermes 0b8d6d6fd8 Merge PR #7628 into stage/0924-a
# Conflicts:
#	static/messages.js
2026-09-24 03:15:02 +00:00
nesquena-hermes 57eb9fc1f4 Merge master into stage/7765-subagent-project
# Conflicts:
#	CHANGELOG.md
2026-09-23 21:56:19 +00:00
nesquena-hermes fab2502928 Merge master into stage/7779-cron-provider-pin
# Conflicts:
#	CHANGELOG.md
2026-09-23 21:44:20 +00:00
nesquena-hermes a78680a341 Merge master (exp-v0.52.362) into stage/7765-subagent-project
# Conflicts:
#	CHANGELOG.md
2026-09-23 21:38:12 +00:00
nesquena-hermes 8692e0d325 Merge master (exp-v0.52.362) into stage/7779-cron-provider-pin
# Conflicts:
#	CHANGELOG.md
2026-09-23 21:36:55 +00:00
nesquena-hermes 3b5cd93309 Merge master (exp-v0.52.362) into stage/7610-oob-writeback
# Conflicts:
#	CHANGELOG.md
2026-09-23 21:24:29 +00:00
nesquena-hermes ac0a6d08a7 Merge master (exp-v0.52.361) into stage/7578-save-count
# Conflicts:
#	CHANGELOG.md
2026-09-23 21:13:41 +00:00
nesquena-hermes b85594f602 docs(changelog): #7765 2026-09-23 18:36:16 +00:00
nesquena-hermes 9dfd9d4e9f docs(changelog): #7779 2026-09-23 18:36:16 +00:00
nesquena-hermes c960ab601b docs(changelog): #7610 2026-09-23 18:36:16 +00:00
nesquena-hermes 19693918fa docs(changelog): #7578 2026-09-23 18:36:16 +00:00
nesquena-hermes 4f88aa1026 docs(changelog): #7682 2026-09-23 18:36:16 +00:00
nesquena-hermes 3f85d3bbc4 Merge PR #7765 into stage/7765-subagent-project 2026-09-23 18:23:46 +00:00
nesquena-hermes d7530ab90a Merge PR #7779 into stage/7779-cron-provider-pin 2026-09-23 18:23:39 +00:00
nesquena-hermes ab130f2cd0 Merge PR #7610 into stage/7610-oob-writeback 2026-09-23 18:23:35 +00:00
nesquena-hermes 350e30ab26 Merge PR #7578 into stage/7578-save-count 2026-09-23 18:23:31 +00:00
nesquena-hermes e3e304edae Merge PR #7682 into stage/7682-stale-cancel 2026-09-23 18:23:27 +00:00
nesquena-hermes 6ba0a84bf0 Merge master (exp-v0.52.359) into stage/7767-runtime-model
# Conflicts:
#	CHANGELOG.md
2026-09-23 16:59:54 +00:00
nesquena-hermes b2b5ea282c Merge master (exp-v0.52.358) into stage/7651-inflight-cursor
# Conflicts:
#	CHANGELOG.md
2026-09-23 16:38:29 +00:00
nesquena-hermes 4c0cba898f Merge master (exp-v0.52.357) into stage/7743-context-baseurl
# Conflicts:
#	CHANGELOG.md
2026-09-23 16:26:14 +00:00
nesquena-hermes 4ca1754ba0 test(#7767): bind nonlocal closure state when extracting _agent_status_callback
#7767 makes _agent_status_callback declare 'nonlocal _last_runtime_model_identity'
(reset on a fallback warning). #7760's test compiled the extracted callback alone
at module level, where a nonlocal has no binding -> SyntaxError, failing all six
relay tests. Wrap the callback in a scope that binds every nonlocal it declares.
Verified: 16/16 with and without the Agent on py3.11; still 16/16 against master's
callback (no nonlocal); reverting reproduces the 6 failures.
2026-09-23 16:17:17 +00:00
nesquena-hermes a4b2264446 docs(changelog): #7651 2026-09-23 14:34:41 +00:00
nesquena-hermes 16bc5ab3ed docs(changelog): #7743 2026-09-23 14:34:41 +00:00
nesquena-hermes ef7d325a54 docs(changelog): #7774 2026-09-23 14:34:41 +00:00
nesquena-hermes 866cb31e6a docs(changelog): #7767 2026-09-23 14:34:41 +00:00
nesquena-hermes 9b6f70c959 Merge PR #7767 into stage/7767-runtime-model 2026-09-23 14:11:17 +00:00
nesquena-hermes d3a5e7579a Merge PR #7651 into stage/7651-inflight-cursor 2026-09-23 14:11:13 +00:00
nesquena-hermes 7c9d3b53d6 Merge PR #7743 into stage/7743-context-baseurl 2026-09-23 14:11:09 +00:00
nesquena-hermes 889d9b1f5d Merge PR #7774 into stage/7774-vanished-owner 2026-09-23 14:11:06 +00:00
nesquena-hermes e577777051 Merge master (exp-v0.52.355) into stage/7760-lease-warnings
# Conflicts:
#	CHANGELOG.md
2026-09-23 13:06:40 +00:00
nesquena-hermes fbfb737f72 Merge master (exp-v0.52.354) into stage/7761-watcher-fence
# Conflicts:
#	CHANGELOG.md
2026-09-23 12:57:23 +00:00
nesquena-hermes ae081638d6 Merge master into stage/7760-lease-warnings
# Conflicts:
#	CHANGELOG.md
2026-09-23 12:47:53 +00:00
nesquena-hermes c5d8e5fe4f Merge master into stage/7761-watcher-fence
# Conflicts:
#	CHANGELOG.md
2026-09-23 12:47:36 +00:00
nesquena-hermes 4eef3f3bbf Merge master into stage/7758-wakeup-budget
# Conflicts:
#	CHANGELOG.md
2026-09-23 12:46:45 +00:00
nesquena-hermes f159d6d219 Merge master (exp-v0.52.352) into stage/7730-browser-locale
# Conflicts:
#	CHANGELOG.md
2026-09-23 11:41:53 +00:00
nesquena-hermes 002945c85a Merge master (exp-v0.52.351) into stage/7730-first-visit-locale 2026-09-23 11:33:37 +00:00
nesquena-hermes 00cefff681 Merge master (exp-v0.52.351) into stage/7165-custom-allowlist 2026-09-23 11:33:37 +00:00
nesquena-hermes 9e8426236a docs(changelog): #7760 2026-09-23 10:41:45 +00:00
nesquena-hermes 75554fd7d6 docs(changelog): #7761 2026-09-23 10:41:22 +00:00
nesquena-hermes 0327db23ef docs(changelog): #7758 2026-09-23 10:41:22 +00:00
nesquena-hermes 86b95eadb7 Merge PR #7760 into stage/7760-lease-warnings 2026-09-23 10:29:33 +00:00
nesquena-hermes ec78f8a80d Merge PR #7761 into stage/7761-watcher-fence 2026-09-23 10:29:29 +00:00
nesquena-hermes 7f4668eb1a Merge PR #7758 into stage/7758-wakeup-budget 2026-09-23 10:29:26 +00:00
nesquena-hermes c767ac70b3 docs(changelog): #7730 2026-09-23 10:23:04 +00:00
nesquena-hermes b43a3b4d43 docs(changelog): #7165 2026-09-23 10:23:03 +00:00
nesquena-hermes aebcd96ff8 Merge PR #7730 into stage/7730-first-visit-locale 2026-09-23 10:22:45 +00:00
nesquena-hermes dc554cbd1c Merge PR #7165 into stage/7165-custom-allowlist 2026-09-23 10:22:41 +00:00
nesquena-hermes 0ff718bb11 docs(changelog): #7656 resolve-concurrency setting 2026-09-23 10:16:42 +00:00
nesquena-hermes daad118675 Merge PR #7656 (@happy5318) into stage/7656-resolve-cap 2026-09-23 10:16:21 +00:00
nesquena-hermes 86d5b36898 Merge master (exp-v0.52.349) into stage/7708-media-backtick
# Conflicts:
#	CHANGELOG.md
2026-09-23 08:50:25 +00:00
nesquena-hermes 69655b1fc6 Merge master (exp-v0.52.348) into stage/7749-terminal-handoff
# Conflicts:
#	CHANGELOG.md
2026-09-23 08:37:23 +00:00
nesquena-hermes d06ee674a3 Merge master (exp-v0.52.347) into stage/7708-media-backtick
# Conflicts:
#	CHANGELOG.md
2026-09-23 08:29:47 +00:00
nesquena-hermes adda410ec0 Merge master (exp-v0.52.347) into stage/7749-terminal-handoff
# Conflicts:
#	CHANGELOG.md
2026-09-23 08:29:47 +00:00
nesquena-hermes 64106a790d Merge master (exp-v0.52.347) into stage/7751-journal-seq
# Conflicts:
#	CHANGELOG.md
#	docs/rfcs/webui-run-state-consistency-contract.md
2026-09-23 08:28:18 +00:00
nesquena-hermes 398d9495ef docs(changelog): #7749 2026-09-23 06:25:04 +00:00
nesquena-hermes e1c707c6d4 Merge PR #7749 (contributor head bbca954c5c) 2026-09-23 06:24:37 +00:00
nesquena-hermes 167a932326 docs(changelog): #7708 2026-09-23 06:23:42 +00:00
nesquena-hermes 99e48f11c2 docs(changelog): #7751 2026-09-23 06:23:42 +00:00
nesquena-hermes 4437f5fb40 docs(changelog): #7748 2026-09-23 06:23:42 +00:00
nesquena-hermes 41dea5763b test(#7708): point the chunk-boundary assertion at the normalized scan string
The PR moved the MEDIA: scan onto a backtick-normalized copy, so the guard
is now matchEnd===normalized.length. Behaviour is unchanged (Codex drove the
vendored parser across chunk splits); this was a stale source assertion that
made the PR's own CI red on shard 4.
2026-09-23 06:23:21 +00:00
nesquena-hermes a028961133 Merge PR #7708 (contributor head 6455aa9b2b) 2026-09-23 06:22:22 +00:00
nesquena-hermes 071710354f Merge PR #7751 (contributor head 68a068c2e5) 2026-09-23 06:22:20 +00:00
nesquena-hermes aeed25b7d0 Merge PR #7748 (contributor head 861a10ec34) 2026-09-23 06:22:18 +00:00
nesquena-hermes 26f2456205 docs(changelog): #7744 #7742 flaky-test fixes 2026-09-23 03:51:35 +00:00
nesquena-hermes fd0842cc4d Merge #7742 2026-09-23 03:51:06 +00:00
nesquena-hermes 671905b89d Merge #7744 2026-09-23 03:51:05 +00:00
nesquena-hermes 394ff790e5 Merge master (exp-v0.52.344) into stage/7436-reconnect-replay
# Conflicts:
#	CHANGELOG.md
2026-09-23 03:21:30 +00:00
nesquena-hermes 77182f435a docs(changelog): #7436 reconnect tool-card replay 2026-09-23 02:29:53 +00:00
nesquena-hermes c5663e86a7 Merge PR #7436 from atchisonbrent: skip unchanged tool-card replay on reconnect 2026-09-23 02:29:39 +00:00
nesquena-hermes f26f7926c6 docs(changelog): #7374 duplicate assistant answer render 2026-09-23 02:29:01 +00:00
nesquena-hermes a6d6b3da85 Merge PR #7374 from Thireus: fix duplicate assistant answer render (#2051) 2026-09-23 02:28:29 +00:00
nesquena-hermes 34feb50c5b docs(changelog): #7631 #7716 #7734 2026-09-23 00:44:29 +00:00
nesquena-hermes 8a2d79ca43 Merge PR #7734 (rebased onto master; maintainer conflict resolution + follow-ups) into stage/rm-343-batch 2026-09-23 00:43:14 +00:00
nesquena-hermes 087a2df4a2 Merge PR #7716 into stage/rm-343-batch 2026-09-23 00:43:14 +00:00
nesquena-hermes d79640f6b1 Merge PR #7631 into stage/rm-343-batch 2026-09-23 00:43:13 +00:00
nesquena-hermes 090728c41d test(#7520): teach the #7514 projection tests the one glm-4.5-flash remap slot
The #7514 tests pinned a pure namespace projection (same ids modulo zai/ ->
z-ai/, same labels). #7520 intentionally serves z-ai/glm-4.5-air in the
glm-4.5-flash slot because OpenRouter does not carry glm-4.5-flash. Encode that
single explicit remap in the reference translation; keep order, length and
every other label pinned.
2026-09-23 00:13:11 +00:00
nesquena-hermes e3c21a386c fix(#7520): drop the '(free)' label from z-ai/glm-4.5-air and make the regression test non-vacuous
OpenRouter bills z-ai/glm-4.5-air as a paid model (0.13/0.85 per 1M), so the
wizard must not label it free. Since #7514 the projection offers the dead id
as z-ai/glm-4.5-flash, not zai/glm-4.5-flash, so the original assertion passed
on master; assert the z-ai spelling (fails pre-fix, passes post-fix).
2026-09-22 23:56:38 +00:00
nesquena-hermes e2a7acaf2e fix(#7445): require the Agent schema_version marker and sessions(id) PK before indexing
Codex round-3: a look-alike chat DB carrying the seven indexed column names was indexed. Every Agent state.db since the first schema (440c244cac) has a schema_version row and sessions keyed on id; require both before any CREATE INDEX. Test oracles now ignore sqlite_autoindex_* (TEXT PRIMARY KEY).
2026-09-22 23:24:10 +00:00
nesquena-hermes 3b1b735540 fix(state-db): validate the Agent schema up front; 'skipped' only for the known legacy gap
Codex delta gate: same-named messages/sessions tables with foreign columns
exited 0 with every index 'skipped', and a same-named incompatible index on
the legacy gap was skipped past its validation. Now: validate every keyed
column before creating anything; only sessions.last_activity_at may be
absent (reported 'skipped'); a same-named index on that gap is
'Incompatible index'. Regressions for both shapes.
2026-09-22 23:09:15 +00:00
nesquena-hermes 5729b0155c fix(state-db): fail loud when state.db has no agent table instead of skipping everything
A missing *column* is an older agent schema (skip that index); a missing
*table* means the path is not an agent state.db. Without this the new
skip path reported every index 'skipped' with exit 0 on an unrelated DB.
2026-09-22 23:00:14 +00:00