Commit graph

1488 commits

Author SHA1 Message Date
dobby-d-elf
13fa0de891 refined iOS enter animations 2026-05-21 07:59:16 -06:00
dobby-d-elf
c4fffff205 refine archive/restore animations 2026-05-21 07:52:42 -06:00
dobby-d-elf
a277bbd42c refactor 2026-05-21 07:41:08 -06:00
dobby-d-elf
1d8d0bfeb7 optimize performance 2026-05-21 07:30:41 -06:00
dobby-d-elf
03266c2644 fix: preserve touch swipe exit animations 2026-05-21 06:52:33 -06:00
dobby-d-elf
6c96423231 v4 effects save 2026-05-21 06:35:07 -06:00
dobby-d-elf
ca6736407e Checkpoint polished session swipe interactions 2026-05-20 21:24:35 -06:00
dobby-d-elf
1084afd37f Merge branch 'master' into fix/session-list-touch-actions
# Conflicts:
#	static/sessions.js
#	static/style.css
2026-05-20 17:20:42 -06:00
nesquena-hermes
2e7cdc4b13 Stage 393 follow-up: HTTP integration tests for /api/sessions/events (Opus advisor PR #2637) 2026-05-20 22:27:23 +00:00
nesquena-hermes
feb35893b9 Stage 393: PR #2637
# Conflicts:
#	static/sessions.js
2026-05-20 22:24:40 +00:00
nesquena-hermes
4d8b8d0ffe Stage 393: PR #2633
# Conflicts:
#	CHANGELOG.md
2026-05-20 22:23:53 +00:00
nesquena-hermes
e35c94bf55 Stage 393: PR #2615 2026-05-20 22:23:53 +00:00
nesquena-hermes
aaf30b7b0a Stage 392: PR #2643 2026-05-20 21:48:04 +00:00
nesquena-hermes
fa459aa01e Stage 392: PR #2651 2026-05-20 21:48:04 +00:00
nesquena-hermes
b4a00b5aae Stage 392: PR #2650 2026-05-20 21:48:04 +00:00
nesquena-hermes
dc0c833744 Stage 392: PR #2647 2026-05-20 21:48:04 +00:00
nesquena-hermes
6ed66daac2 Stage 392: PR #2638 2026-05-20 21:48:04 +00:00
Lumen Yang
71fbc796b2 fix: dedupe replayed context tail after compression 2026-05-20 23:15:54 +02:00
dobby-d-elf
6278222596 tighten session refresh invalidation 2026-05-20 14:40:13 -06:00
starship-s
153e035d12 fix: forward title generation api key 2026-05-20 14:39:38 -06:00
dobby-d-elf
14dd5aa00d address session event review 2026-05-20 14:33:36 -06:00
dobby-d-elf
87527ff4f6 Fix state db legacy dedup repeat preservation 2026-05-20 14:18:47 -06:00
nesquena-hermes
1e3ca07575 Stage 390: PR #2634
# Conflicts:
#	CHANGELOG.md
2026-05-20 20:16:30 +00:00
nesquena-hermes
495991c2db Stage 390: PR #2642 2026-05-20 20:16:30 +00:00
dobby-d-elf
7742b83062 Merge remote-tracking branch 'origin/master' into tool-tooltip-fix 2026-05-20 14:12:29 -06:00
Michael Lam
6e64068f0f fix: cap CLI session sidebar state scans 2026-05-20 12:47:03 -07:00
dobby-d-elf
58259f6edb Avoid duplicate session list boot animation 2026-05-20 11:03:37 -06:00
dobby-d-elf
19ad20afff Fix new chats using profile default model 2026-05-20 10:57:04 -06:00
nesquena-hermes
360a57164a Stage 389: PR #2627
# Conflicts:
#	CHANGELOG.md
2026-05-20 16:41:45 +00:00
nesquena-hermes
dd36d09f89 Stage 389: PR #2626
# Conflicts:
#	CHANGELOG.md
2026-05-20 16:41:45 +00:00
nesquena-hermes
84f6bf5323 Stage 389: PR #2619
# Conflicts:
#	CHANGELOG.md
2026-05-20 16:41:45 +00:00
nesquena-hermes
4d8e1ccc10 Stage 389: PR #2618 2026-05-20 16:41:44 +00:00
nesquena-hermes
eaff4d0b8e Stage 389: PR #2614
# Conflicts:
#	CHANGELOG.md
2026-05-20 16:41:44 +00:00
nesquena-hermes
3bcd81b79f Stage 389: PR #2612
# Conflicts:
#	CHANGELOG.md
2026-05-20 16:41:44 +00:00
Arsh Kumar Singh
d385db69d5
fix(clarify): require stable clarify_id and wait for backend ack so stale responses are rejected
The WebUI clarification popup had a response-delivery failure: users
submitted answers in the popup, but the agent still fell through to the
timeout fallback message.  Three bugs conspired:

1. No stable clarify_id — _ClarifyEntry had no unique identifier, so
   the frontend could not reference a specific pending prompt.  The
   backend used FIFO resolution which silently failed for stale/late
   responses.

2. Frontend hid the card before confirmation — respondClarify() called
   hideClarifyCard(true, 'sent') BEFORE the API call completed.  If the
   backend rejected the response, the card was already gone and the
   user's draft was discarded.

3. Backend lied about success — _resolve_clarify_legacy() returned
   bool(resolved) or not bool(clarify_id).  Since the frontend never
   sent clarify_id, the backend always reported ok:true even when
   nothing was resolved.

Changes:

api/clarify.py:
- _ClarifyEntry now auto-generates a stable clarify_id (uuid4.hex[:12])
- submit_pending() injects clarify_id into the data dict visible to the
  frontend via SSE and polling
- New resolve_clarify_by_id() for O(1) lookup by id instead of FIFO pop

api/routes.py:
- _resolve_clarify_legacy() uses resolve_clarify_by_id when clarify_id
  is provided; returns actual bool result (no more unconditional True)
- _handle_clarify_respond() returns HTTP 409 + {ok:false, stale:true}
  when resolution fails

static/messages.js:
- respondClarify() now sends clarify_id in the POST body
- Waits for a positive backend acknowledgement before hiding the card
- Saves a draft copy before POST and restores it on failure
- On 409/network error: re-enables controls, shows error toast
- Guards against parallel-SSE race where clearing the cache after a
  successful response could erase a newly queued next prompt (codex P1)

tests:
- Updated test_sprint30.py for new ack-before-hide behaviour
- Updated test_clarify_unblock.py for 409 on stale responses

Closes #2639.
2026-05-20 16:35:15 +00:00
Michael Lam
6eb5d939d7 test: allow custom provider settings filter 2026-05-20 09:33:51 -07:00
dobby-d-elf
439a574cf4 address PR comments & bugs from real testing 2026-05-20 09:59:36 -06:00
Dennis Soong
cec435a833 fix(session): rebuild missing startup index 2026-05-20 23:43:30 +08:00
dobby-d-elf
fd7212b014 Optimize profile switching and session list loading 2026-05-20 08:47:49 -06:00
dobby-d-elf
4c8914304b fix: keep compact tool activity grouped
Compact tool activity regressed into separate Activity rows and standalone Thinking blurbs when interim assistant text retired the current live activity group and Thinking rendered outside the disclosure.

Render Compact-mode Thinking inside the shared Activity body for live and settled turns, keep interim assistant text from splitting the current Activity group, and remove the now-unused stream-local activity-close path. This restores the intended single compact disclosure without adding new functionality.
2026-05-20 08:29:46 -06:00
dobby-d-elf
5e378d3b38 sync session list from server events 2026-05-20 08:18:56 -06:00
Michael Lam
8ef8fae831 fix: show config-managed custom providers 2026-05-20 06:27:00 -07:00
Isla Liu
37c3e84ad2 test(session): cover lazy journal retry give-up paths 2026-05-20 20:55:08 +08:00
Isla Liu
2a303de2a3 fix(session): preserve retry budget while journal is still arriving 2026-05-20 20:55:07 +08:00
Isla Liu
d5a185d9c6 fix(session): serialize lazy journal retry per session 2026-05-20 20:48:38 +08:00
Michael Lam
680d0cbc92 docs(runtime): define runner backend harness gate 2026-05-20 04:05:36 -07:00
Michael Lam
c3eafa34f8 fix: surface custom provider model endpoint errors 2026-05-20 03:12:33 -07:00
Michael Lam
471b75d762 docs: move Hermes overview out of agent context root 2026-05-19 23:55:58 -07:00
Lumen Yang
b2c6af12f1 fix(webui): prefer sidecar counts over stale session index 2026-05-20 05:42:55 +00:00
Isla Liu
1957785332 fix(session): address Copilot round-2 review — correct stale comment and drop unused fixture arg
Two non-functional cleanups from the second Copilot pass:

1. The inline comment in `test_error_marker_no_preserved_as_draft`
   said the legacy "user message above was preserved" wording was used
   for the post-retry-give-up case.  The actual implementation demotes
   give-up markers to a different neutral wording ("Partial output may
   have been lost.").  Comment rewritten to match the contract.

2. The regression test `test_lost_response_recovered_on_second_read`
   declared a `monkeypatch` parameter it never used.  Dropped.
2026-05-20 13:08:08 +08:00