Repository navigation
fix(webui): prevent blank space after collapsed activity - #2003
Conversation
|
Merge queue CI: failure — run 40369256954, attempt 1.
The run summary lists reused suites and executed checks. A green PR check alone does not mean queue validation has passed. |
|
Merge queue CI: failure — run 40373290093, attempt 1.
The run summary lists reused suites and executed checks. A green PR check alone does not mean queue validation has passed. |
|
Merge queue CI: success — run 40376609777, attempt 1. The run summary lists reused suites and executed checks. A green PR check alone does not mean queue validation has passed. |
TokenRhythm#1986) * fix(webui): keep a running turn's late rows above the queued follow-up A follow-up submitted while a turn is running lands in the transcript as a user row immediately, but the running turn keeps emitting router receipts and text afterwards with the older turn id. Rendering in arrival order placed those rows below the queued bubble, so the router strip and the activity it describes read as the follow-up's work. Group rendered rows by the first position of their turn before returning them. Rows inside one turn keep their arrival order, and rows without a turn key stay where they are. This corrects the strip and row attribution. The live edge is still mounted in the list trailing slot, which always renders after the last message row; moving it into its turn is a separate list-layout change. Refs TokenRhythm#1887 * fix(router): allow saving explicitly selected providers by default (TokenRhythm#1996) * fix(router): enable explicitly selected provider deployments on save * test(router): include provider save in browser workflow inventory * fix(deps): refresh vulnerable locks blocking router regression CI * fix(webui): let wheel gestures leave tool details at the scroll boundary (TokenRhythm#1985) An expanded tool result keeps its own bounded scroll window inside the transcript. Both that window and the code/diff viewport declared `overscroll-behavior: contain`, so a wheel gesture that reached either inner boundary was dropped instead of scrolling the conversation. During a live turn the transcript also stayed pinned to the live edge until the pointer moved onto ordinary text. Use `overscroll-behavior: auto` on both inner windows so the remainder of the gesture chains to the transcript. Scrolling inside a region that still has range keeps moving only that region. Adds a source guard that fails if either rule returns to `contain`. Fixes TokenRhythm#1889 Co-authored-by: angri450 <angri450@users.noreply.github.com> Co-authored-by: Open-Squilla <275096992+Open-Squilla@users.noreply.github.com> * fix(webui): silence routine reasoning replay notifications (TokenRhythm#2000) * fix(webui): contain collapsed activity scroll overflow (TokenRhythm#2003) * docs(readme): sync translated capability rows with the English README (TokenRhythm#2001) The zh-Hans, ja, fr, de, and es READMEs still described the pre-SDK-2.2 MCP extra install (opensquilla[recommended,mcp]) and a Windows sandbox gap that README.md already resolved. The mcp extra is now empty in pyproject.toml, so the documented install command is misleading. Co-authored-by: FENGCHENHAO\fch <204137222@qq.com> * Reset missing-session state for fresh chats (TokenRhythm#2004) * Fix compaction history scan stalls and add lifecycle diagnostics (TokenRhythm#2007) * Fix compaction history scan stalls and add lifecycle diagnostics * Bound scan allocations and observe post-summary settlement * Verify gateway exit diagnostics with inherited output pipes * Remove vulnerable download proxy serializer dependency * Preserve URI parser security floors in proxy tooling * Handle real quit confirmation in profile import acceptance * Handle quit confirmations in desktop acceptance cleanup * Run native close cancellation regression outside parallel CI * Update native close CI partition contract * Preserve internal handoff boundaries when ordering queued turns Group only explicitly anchored user turns within each uninterrupted presentation span. Preserve internal resume rows, incomplete history and legacy order while retaining late completion and router ownership. Co-authored-by: angri450 <angri450@users.noreply.github.com> * Update Vue I18n to address security audit findings --------- Co-authored-by: angri450 <angri450@users.noreply.github.com> Co-authored-by: Open-Squilla <275096992+Open-Squilla@users.noreply.github.com> Co-authored-by: fengchen122123-sudo <fengchen122123@gmail.com> Co-authored-by: FENGCHENHAO\fch <204137222@qq.com> Co-authored-by: lihongguang-0014 <hongguang.li@tokenrhythm.ai>
Completed chat activity could leave hundreds of blank pixels below the final answer because absolutely positioned screen-reader text escaped the collapsed clipping element. Make that element the positioning container so its existing clip also bounds those descendants.
Scope
Scope boundary: One CSS positioning rule, a synthetic browser regression, and registration in the CI browser inventory with both inventory assertions updated. Existing browser shard assignments stay unchanged.
Non-goals: Backend runtime and virtual-list algorithms.
Branch
Base branch: main
Target exception: N/A
Issue
Linked issue: None
If None, reason: Standalone UI regression with no associated public issue.
Release Note
Release note: Fix excess blank space below completed chat responses when activity is collapsed.
Tests
Ruff: Passed for src, tests, and the browser suite selector.
Pytest: 262 passed in the browser-inventory and workflow contract files with Bash 5.3; 31-case preflight passed first.
Build: npm run build passed architecture checks, TypeScript checks, artifact verification, and staging. uv build --wheel passed.
Regression tests: added
Notes: Platform-neutral CSS. Browser validation ran on macOS/Chromium; native Windows/Linux clients were not run locally. Full backend coverage is left to GitHub CI. All browser fixtures are synthetic, offline, and credential-free. Independent read-only review completed; the follow-up inventory assertion finding was addressed and rechecked.
Maintainer Live Check
Maintainer live check: no
Surface: N/A
Safety
Only source and synthetic regression tests are included. No secrets, private transcripts, session artifacts, generated bundles, or machine-specific paths are committed.
Third-Party Origin
Third-party origin: none