Skip to content

feat(chat): add task progress indicator and stabilize ingress replay - #345

Open
AlphaCatMeow wants to merge 2 commits into
Stack-Cairn:mainfrom
AlphaCatMeow:codex/feat-task-progress-indicator-stacked
Open

feat(chat): add task progress indicator and stabilize ingress replay#345
AlphaCatMeow wants to merge 2 commits into
Stack-Cairn:mainfrom
AlphaCatMeow:codex/feat-task-progress-indicator-stacked

Conversation

@AlphaCatMeow

@AlphaCatMeow AlphaCatMeow commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Summary

  • stop reliable chat ingress from repeating compacted replay requests indefinitely by escalating repeated gaps to checkpoint recovery for both batches and fragments
  • project the latest valid full TodoWrite snapshot from the current conversation transcript/history, preferring successful tool results and using stable complete arguments as a fallback
  • add the same accessible task-progress pill above the desktop GUI and Gateway WebUI composers, with hover/focus expansion, delayed close, Escape/touch handling, narrow-window support, reduced motion, and long-list scrolling
  • keep the plan roster stable while task statuses advance, ignore partial/invalid/failed frames, clear on a valid empty list, and hide the previous indicator immediately when the user submits the next turn
  • remove TodoWrite progress rendering from the transcript while retaining its transcript/history data for projection; preserve all unrelated tool bubbles
  • add mirrored projection, sequencing, interaction, adapter, i18n, transcript-filtering, and manifest coverage

Rebase and diff audit

  • rebased the complete two-commit PR from original merge base 849daf269762846557cc8243c5fe6e7fb155ed72 onto latest upstream/main@00a2c6fc43754f40022b0703459824559bee73ea
  • updated head from 7fb096839d5fd423a981f384227bdd3a08876515 to c63a2c22e7215650925156ace8f795b2634d6406; the branch is 0 behind / 2 ahead and its merge base is the latest main commit
  • retained the closed-unmerged PR fix(gateway): recover compacted chat ingress gaps #343 ingress recovery commit as the first commit, followed by the task-progress feature commit; feat(chat): add task progress indicator and stabilize ingress replay #345 is now the independent replacement root rather than declaring a stale active dependency
  • git range-diff reports the ingress commit as patch-equivalent; the feature commit retains the same product patch and differs only by the refreshed docs/worklog/task-progress-indicator.md rebase/acceptance record
  • original and rebased ranges contain the same 28-file product scope; final stats are 4055 insertions / 61 deletions
  • audited the six PR files also changed by newer main commits (GatewayApp.tsx, both i18n configs, GUI ChatComposerBar.tsx, GUI ChatPage.tsx, and mirror-manifest.json); latest-main behavior is retained together with the original PR patch
  • no rebase conflicts, PR-to-PR ancestry, dependency/lockfile changes, Rust changes, database changes, generated binaries, credentials, or unrelated lifecycle changes

Validation

  • go -C crates/agent-gateway test ./internal/session ./test/websocket — passed
  • focused GUI task-progress, sequencing, indicator, and row-model suites — 40/40 passed
  • focused Gateway WebUI task-progress, sequencing, indicator, and assistant-bubble suites — 23/23 passed
  • pnpm --dir crates/agent-gateway/web test — 515/515 passed
  • pnpm --dir crates/agent-gui test:frontend — 1422/1427 passed; the same five mention source-extraction and Rust/TypeScript preset-sync failures reproduce on a fresh non-Worktree upstream/main@00a2c6fc snapshot at 1398/1403
  • go -C crates/agent-gateway test ./... — every package passed except the Windows-only internal/auth/agenttoken file-mode assertion (0666, expected POSIX 0600); the same package fails identically on the latest-main snapshot
  • go -C crates/agent-gateway vet ./... — passed
  • pnpm --dir crates/agent-gui build — passed
  • pnpm --dir crates/agent-gateway/web build — passed
  • cargo check --manifest-path crates/agent-gui/src-tauri/Cargo.toml --tests — passed after resolving LIBCLANG_PATH through the existing local Python clang runtime; five unrelated unused/dead-code warnings remain
  • full GUI Biome: current 423 errors / 358 warnings / 9 infos versus recorded same-main baseline 424 / 358 / 9; full WebUI Biome: current and baseline both 292 / 310 / 10
  • focused production-file Biome lint — exited zero for both clients; warnings are confined to existing adapter/hook code
  • node scripts/check-mirror.mjs — passed for 118 mirrored files
  • git diff --check upstream/main..HEAD — passed
  • independent final read-only audit — 28-file product scope preserved, accepted product tree unchanged by the documentation-only final amend, protected local files excluded, and no P0/P1/P2 findings
  • GitHub new-head checks for c63a2c22: PR Governance (two runs), Gateway, Gateway Docker Smoke, Gateway WebUI, GUI, Tauri Rust Check, GUI/WebUI Mirror Check, and Diff Hygiene all completed successfully

Manual acceptance

  • launched the Windows Tauri client from the current main workspace and rebased product HEAD 8a0663e4a1a9126bcf1d79a20b148a3d9336aa05; Vite returned HTTP 200 and the worktree-local target/debug/liveagent.exe window remained responsive
  • verified a 12-item TodoWrite plan appears once without partial-count flicker, keeps stable row titles/order/count, advances statuses in place, hides TodoWrite transcript cards, and preserves unrelated tool bubbles
  • verified hover, focus, Escape, click/touch toggle, delayed close, narrow-window wrapping/internal scrolling, light/dark themes, reduced motion, and accessible state behavior
  • verified the next user turn hides the previous progress indicator without stale revival
  • verified Stop followed by continue preserves and resumes the same roster without duplicate rows or regressions
  • verified conversation switching, history restoration, reload/reconnect, repeated snapshots, and live/history overlap restore the latest valid state without replay or duplication
  • invalid/partial frames, duplicate/overflow handling, checkpoint validation, ingress gap replay/escalation, provisional fallback, ARIA, and reduced-motion branches are additionally covered by automated tests
  • the final commit c63a2c22e7215650925156ace8f795b2634d6406 differs from the accepted product HEAD only in this worklog documentation; a path-by-path comparison found zero product-code changes
  • the user explicitly confirmed PR #345 通过 on 2026-08-06 before the guarded force-with-lease update

Screenshot

Gateway WebUI task progress indicator after the no-flicker fix

Scope

  • Gateway changes are limited to reliable chat-ingress replay/checkpoint recovery and matching tests
  • GUI and Gateway WebUI task-progress changes remain mirrored
  • no Rust, database, dependency, credential, or unrelated module changes
  • no cross-session task center or file-change statistics

Fixes #344
Fixes #346
Depends-On: none
Stack-Root: #345

@github-actions

github-actions Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

PR governance checks passed. Awaiting human review.

@AlphaCatMeow AlphaCatMeow changed the title feat(chat): add current-session task progress indicator feat(chat): add task progress indicator and stabilize ingress replay Jul 31, 2026
- 从 TodoWrite transcript/history 投影稳定任务快照`n- 在 GUI 与 Gateway WebUI 输入框上方展示可访问进度 pill`n- 保留固定任务清单并处理流式、失败、清空与下一回合边界`n- 补充镜像、交互和投影回归测试
@AlphaCatMeow
AlphaCatMeow force-pushed the codex/feat-task-progress-indicator-stacked branch from 7fb0968 to c63a2c2 Compare August 6, 2026 00:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add a current-session TodoWrite task progress indicator Gateway reliable ingress loops when replay cursor was compacted

1 participant