Skip to content

fix(webui): prevent blank space after collapsed activity - #2003

Merged
Open-Squilla merged 1 commit into
mainfrom
fix/collapsed-activity-scroll-overflow
Oct 26, 2026
Merged

Open-Squilla merged 1 commit into
mainfrom
fix/collapsed-activity-scroll-overflow

Conversation

@Open-Squilla

Copy link
Copy Markdown
Contributor

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

  • 316 related WebUI unit tests passed.
  • 59 Chromium browser tests passed against the built artifact, with retries disabled.
  • Four new regression cases cover 900px/1600px layouts, normal/reduced motion, keyboard expansion/collapse, reload, and switching tasks.
  • The new regression failed against the original CSS with 683px of extra scrollable overflow, then passed with the fix.
  • The new file is included in general-4; CI inventory checks retain exact membership and one-time assignment.

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

@Open-Squilla
Open-Squilla added this pull request to the merge queue Oct 26, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 26, 2026
@github-actions

Copy link
Copy Markdown

Merge queue CI: failure — run 40369256954, attempt 1.
Tested queue candidate: cffa2fb5cf02af90a1fb9976253d0dadf2ee498d. This result belongs to that combined tree, not necessarily the PR's current head.

The run summary lists reused suites and executed checks. A green PR check alone does not mean queue validation has passed.

@Open-Squilla
Open-Squilla added this pull request to the merge queue Oct 26, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Oct 26, 2026
@github-actions

Copy link
Copy Markdown

Merge queue CI: failure — run 40373290093, attempt 1.
Tested queue candidate: 55fdd50dccfc257f63d88f333a7b609b3de24b85. This result belongs to that combined tree, not necessarily the PR's current head.

The run summary lists reused suites and executed checks. A green PR check alone does not mean queue validation has passed.

@Open-Squilla
Open-Squilla added this pull request to the merge queue Oct 26, 2026
@github-actions

Copy link
Copy Markdown

Merge queue CI: success — run 40376609777, attempt 1.
Tested queue candidate: 1cda21446d5d48a77f1af3a4249e943b9ebe9654. This result belongs to that combined tree, not necessarily the PR's current head.

The run summary lists reused suites and executed checks. A green PR check alone does not mean queue validation has passed.

Merged via the queue into main with commit 1cda214 Oct 26, 2026
156 checks passed
lihongguang-0014 added a commit to pcbeingused333/opensquilla that referenced this pull request Oct 29, 2026
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>
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.

1 participant