Commit Graph
7643 Commits
Author SHA1 Message Date
fatbee0808 71ee457d7d fix(workspace): normalize backslash paths in artifact open flow
openArtifactPath/_workspacePathExists split on '/' but Windows artifact
paths use backslashes (D:\workspace\dir\file), so prefix-strip failed
and /api/list existence check never matched -> 'cannot open file'.
Normalize both rel and workspace to '/' before stripping.
2026-08-05 11:06:12 +08:00
nesquena-hermes 320789ae59 Merge pull request #6487 from starship-s/fix/interim-anchor-final-character
fix(streaming): complete interim anchor prose before tools
2026-07-31 11:58:21 -07:00
nesquena-hermes d85eb85c25 Merge branch 'master' into fix/interim-anchor-final-character 2026-07-31 11:52:58 -07:00
nesquena-hermes bf7d39c67a Merge pull request #6642 from franksong2702/franksong2702/fix-gateway-terminal-persistence
fix: preserve gateway terminal error recovery after save failure
2026-07-31 11:52:48 -07:00
nesquena-hermes 07b33505fd Merge branch 'master' into franksong2702/fix-gateway-terminal-persistence 2026-07-31 11:47:43 -07:00
nesquena-hermes 7ce03cbbdd Merge pull request #6474 from franksong2702/franksong2702/viewport-scroll-anchor-6414
fix: restore desktop scroll on unpinned anchor miss
2026-07-31 11:47:33 -07:00
nesquena-hermes d482a12345 Merge branch 'master' into franksong2702/viewport-scroll-anchor-6414 2026-07-31 11:40:47 -07:00
nesquena-hermes 620da54cde Merge pull request #6650 from happy5318/fix/preflight-compression-false-positive
fix: stop false Compressing-context card on preflight-compression sessions
2026-07-31 11:14:31 -07:00
Nathan Esquenazi 94a2091435 Merge branch 'master' into fix/interim-anchor-final-character 2026-07-31 11:11:50 -07:00
Nathan Esquenazi 15e3e89c3c Merge branch 'master' into franksong2702/fix-gateway-terminal-persistence 2026-07-31 11:09:50 -07:00
Nathan Esquenazi eb1484bede Merge branch 'master' into franksong2702/viewport-scroll-anchor-6414 2026-07-31 11:09:39 -07:00
Nathan Esquenazi 46623de2bd Merge branch 'master' into fix/preflight-compression-false-positive 2026-07-31 11:09:09 -07:00
Frank SongandFrank Song 89023eb191 Live-to-Final: prove historical hydration and fence terminal retry ownership (#6451)
* test: add historical hydration lifecycle proof

* fix: retry anchor persistence after terminal app errors

* fix: fence deferred anchor settlement ownership

* test: cover deferred anchor retry ownership

* fix: preserve terminal anchor retry across refresh

* fix: bind terminal anchor retry to turn owner

---------

Co-authored-by: Frank Song <franksong2702@gmail.com>
2026-07-31 11:04:40 -07:00
happy5318 f52be26610 docs: update comments to reflect preflight exclusion reasoning
Clarify that preflight compression is intentionally excluded because
the later authoritative 'Compacting context' marker from
conversation_compression is the real signal that compression
proceeded. The preflight status can fire even when compression
exits before compaction (e.g. durable guard refresh, Codex-Hermes
mode with no active thread).
2026-08-01 01:47:51 +08:00
happy5318 9c1c1d8063 fix: stop false Compressing-context card for preflight compression
PR #6184 narrowed the agent-status-to-SSE bridge to real compression
start notices, but the 'preflight compression:' pattern matches the
Hermes agent's preflight check message ("Preflight compression: ~X
tokens >= Y threshold"). This fires on every new session where the
system prompt alone exceeds the threshold, showing a "Compressing
context" card before any model output — a false positive.

Remove 'preflight compression:' from the pattern. The preflight check
is a one-time pre-model-call estimate, not a mid-conversation
compression event that the user needs to see.
2026-08-01 01:07:12 +08:00
Frank Song c69f1a73dc test: exercise renderer scroll restore ownership 2026-07-31 22:24:25 +08:00
Frank Song fd1879418d fix: queue pinned live scroll ownership check 2026-07-31 22:24:25 +08:00
Frank Song c32b10ee8b test: update live scroll fixture contracts 2026-07-31 22:24:25 +08:00
Frank Song cc5cf19710 test: exercise reachable live scroll restore boundary 2026-07-31 22:24:25 +08:00
Frank Song a6a891f079 fix: keep live render harness fallback safe 2026-07-31 22:24:25 +08:00
Frank Song 713418dec0 test: cover live render scroll ownership boundary 2026-07-31 22:24:25 +08:00
Frank Song 7a320bea3c fix: preserve live scroll ownership on snapshot mismatch 2026-07-31 22:24:25 +08:00
Frank Song a55096b81f fix: keep scroll ownership hooks harness-safe 2026-07-31 22:24:25 +08:00
Frank Song 5efc94f4b2 fix: preserve ownership of live scroll snapshots 2026-07-31 22:24:25 +08:00
Frank Song 5c3ead61a2 Restore unpinned desktop stream scroll 2026-07-31 22:24:25 +08:00
Frank Song dadffe0e02 fix: bind gateway terminal recovery to run identity 2026-07-31 17:31:12 +08:00
Frank Song ded12e48c5 fix: recover unsaved gateway terminal errors 2026-07-31 12:05:39 +08:00
Frank Song 2f17d1c74c fix: mark failed gateway terminal saves as unpersisted 2026-07-31 09:57:51 +08:00
nesquena-hermes dd7f6ac318 Merge pull request #6627 from nesquena/release/stage-6473
Release exp-v0.52.158: preserve live Worklog through final settlement (#6473)
2026-07-30 11:08:44 -07:00
nesquena-hermes dbe58ffff5 changelog: preserve live Worklog through final settlement — no blank frame (#6473) 2026-07-30 18:06:22 +00:00
nesquena-hermes 0f010db5be Merge pull request #6473 from franksong2702/franksong2702/live-worklog-settle-no-blank
Preserve Live Worklog through final settlement
2026-07-30 11:04:46 -07:00
Frank Song 1c385e6935 Merge remote-tracking branch 'origin/master' into franksong2702/live-worklog-settle-no-blank 2026-07-31 01:27:57 +08:00
nesquena-hermes 0a40159759 Release exp-v0.52.157: reconnect transcript ordering (#6457) (#6609)
Ships #6457 (@nankingjing) — one shared pending_user_message merge helper keeps the reconnect prompt above the live worklog (#6419). Supersedes #6465.
2026-07-29 16:05:41 -07:00
nesquena-hermes f989c4828d changelog: reconnect transcript ordering — pending user above live worklog (#6419, #6457) 2026-07-29 22:51:18 +00:00
nankingjing 95a1647557 fix(#6419): route every recovery path through one pending_user_message merge helper
The mid-stream reconnect path could render the just-sent user message below
the live streaming assistant response it triggered, because
`refreshSession()` appended `pending_user_message` at the end of
`S.messages` unconditionally while `loadSession()` correctly inserted
it before the first live assistant message. When the client went through
its reconnect/recovery path mid-turn (typical on iOS PWA screen
lock/resume) the live assistant tail rendered above the prompt.

Centralize every recovery/reconnect reinsertion through one
identity-aware helper (`_mergePendingSessionMessage`) that:

- inserts the owning user turn before its live assistant/Worklog tail,
- appends only when no live tail exists,
- deduplicates against the current tail user row,
- remains idempotent across repeated resume probes.

`refreshSession()` now calls the same helper instead of pushing at
the end. `loadSession()` continues to use the helper unchanged.

Adds `tests/test_issue6419_pending_user_reconnect_order.py` pinning:
- the helper is defined exactly once at module top level,
- it inserts before live assistant and falls back to append,
- `refreshSession()` uses the helper and does not push unconditionally,
- `loadSession()` still merges before renderMessages in the INFLIGHT
  reattach branch.

Renames the inner end-marker in
`tests/test_gateway_sse_reconnect_dedupe.py` to a stable inside-loadSession
boundary (`// Phase 2a:`) since the helper is no longer nested.
2026-07-29 22:37:58 +00:00
nesquena-hermes ab6f0855a5 Release exp-v0.52.156: hard-refresh session restore (#6507) (#6608)
Ships #6507 (@ruizanthony) — preserve active chat across hard refresh + fully consume PWA launch action.
2026-07-29 15:26:26 -07:00
nesquena-hermes 86d3e6a571 changelog: hard-refresh session restore + PWA launch-action consume (#6507) 2026-07-29 22:22:05 +00:00
Anthony Ruiz 127a57e0c5 fix(sessions): fully consume PWA launch action 2026-07-29 21:50:54 +00:00
Anthony Ruiz cd04f5fcc2 fix(sessions): preserve active chat across hard refresh 2026-07-29 21:50:54 +00:00
nesquena-hermes 480de19710 Merge pull request #6605 from nesquena/changelog/stamp-v0.52.106
docs(changelog): stamp v0.52.106
2026-07-29 13:52:04 -07:00
nesquena-hermes 16dfeeb3f0 docs(changelog): stamp v0.52.106 stable section (promotion) 2026-07-29 20:50:41 +00:00
nesquena-hermes 0fa4b5f5ac Merge pull request #6604 from nesquena/revert/stable-v0.52.113-stamp
docs(changelog): revert withdrawn v0.52.113 stable stamp
2026-07-29 13:42:01 -07:00
nesquena-hermes bff58ffb31 Revert "Merge pull request #6599 from nesquena/changelog/stamp-v0.52.113"
This reverts commit edb69763a7, reversing
changes made to b8f615e4bd.
2026-07-29 20:40:42 +00:00
nesquena-hermes edb69763a7 Merge pull request #6599 from nesquena/changelog/stamp-v0.52.113
docs(changelog): stamp v0.52.113
2026-07-29 13:24:02 -07:00
nesquena-hermes 15e290dff0 docs(changelog): stamp v0.52.113 stable section (promotion) 2026-07-29 20:06:57 +00:00
nesquena-hermes b8f615e4bd Merge pull request #6503 from rodboev/pr/6481-verification-evidence-contamination
fix(#6481): settle verification turns from exact turn ownership
2026-07-29 11:51:07 -07:00
Rod Boev 4a7b851c8c fix(#6481): materialize pending turns without borrowed display indexes 2026-07-29 18:36:24 +00:00
Rod Boev 9b0506d31d fix(#6481): keep display ownership out of context indexes 2026-07-29 18:36:24 +00:00
Rod Boev 525edef5f7 Fix silent-result ownership for repeated prompts 2026-07-29 18:36:24 +00:00
Rod Boev 66438f07bc Settle verification turns from exact turn ownership 2026-07-29 18:36:24 +00:00