fix(ui): show-more visibility + reaction-picker dismissal regressions #397

Merged
longjacksonle merged 2 commits from fix/room-polish-regressions into main 2026-06-20 04:31:27 +02:00

Two regressions from LC-385 / LC-384, reported live.

1. "Show more" under every message (LC-385)

The new .lc-collapse-toggle set display:inline-flex, which overrode the [hidden] attribute (an author class beats the UA [hidden] rule), so the toggle rendered under every message instead of only overflowing ones.

Fix: revert the control to its original blue accent link (mt-1 text-xs text-accent hover:underline) - the look the user preferred - which leaves [hidden] working again, so auto_scroll.html reveals it only when the body overflows COLLAPSE_MAX. The rotating-chevron CSS + the JS class toggle are dropped; the improved (taller, smoother) bottom fade is kept.

2. Reaction picker vanishes when you reach into it (LC-384)

The popover auto-dismissed on any document scroll (capture) and on resize, which fired on stray trackpad scrolls, the filter-input focus, and the mobile keyboard - so it disappeared the moment the pointer moved into the emoji grid.

Fix: remove the scroll + resize close handlers entirely. The popover is fixed and anchored at open time (the hover-revealed trigger collapses to display:none once the pointer leaves the row, so it can't be re-measured to reposition anyway). It now closes only on outside-click / Escape / a react, and focuses the filter with preventScroll. A list scroll lets it drift slightly, harmless for the interaction.

Tests

  • Four LC-77 fixtures regenerated for the show-more revert; diff verified to contain only that.
  • ./dev/cargo check, just build-css, just test, just test-saas - all green.

🤖 Generated with Claude Code

Two regressions from LC-385 / LC-384, reported live. ## 1. "Show more" under every message (LC-385) The new `.lc-collapse-toggle` set `display:inline-flex`, which overrode the `[hidden]` attribute (an author class beats the UA `[hidden]` rule), so the toggle rendered under **every** message instead of only overflowing ones. Fix: revert the control to its original blue accent link (`mt-1 text-xs text-accent hover:underline`) - the look the user preferred - which leaves `[hidden]` working again, so `auto_scroll.html` reveals it only when the body overflows `COLLAPSE_MAX`. The rotating-chevron CSS + the JS class toggle are dropped; the improved (taller, smoother) bottom fade is kept. ## 2. Reaction picker vanishes when you reach into it (LC-384) The popover auto-dismissed on any document scroll (capture) and on resize, which fired on stray trackpad scrolls, the filter-input focus, and the mobile keyboard - so it disappeared the moment the pointer moved into the emoji grid. Fix: remove the scroll + resize close handlers entirely. The popover is fixed and anchored at open time (the hover-revealed trigger collapses to `display:none` once the pointer leaves the row, so it can't be re-measured to reposition anyway). It now closes only on **outside-click / Escape / a react**, and focuses the filter with `preventScroll`. A list scroll lets it drift slightly, harmless for the interaction. ## Tests - Four LC-77 fixtures regenerated for the show-more revert; diff verified to contain only that. - `./dev/cargo check`, `just build-css`, `just test`, `just test-saas` - all green. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
fix(ui): show-more visibility + reaction-picker dismissal regressions
All checks were successful
check-secrets / Kingfisher (pull_request) Successful in 4s
check-secrets / TruffleHog (push) Successful in 5s
check-secrets / Nosey parker (pull_request) Successful in 5s
check-secrets / Nosey parker (push) Successful in 5s
check-secrets / TruffleHog (pull_request) Successful in 5s
check-secrets / Kingfisher (push) Successful in 6s
Check / clippy + fmt + tests (pull_request) Successful in 3m9s
07aa0bd102
Two regressions from LC-385 / LC-384, reported live.

Show more (LC-385): the new .lc-collapse-toggle set display:inline-flex, which overrode the [hidden] attribute (an author class beats the UA [hidden] rule), so the toggle rendered under EVERY message instead of only overflowing ones. Revert the control to its original blue accent link (mt-1 text-xs text-accent hover:underline), which the user preferred and which leaves [hidden] working again - auto_scroll.html still reveals it only when the body overflows COLLAPSE_MAX. The rotating-chevron CSS + the JS class toggle are dropped; the improved (taller, smoother) bottom fade is kept.

Reaction picker (LC-384): the popover auto-dismissed on any document scroll (capture) and on resize, which fired on stray trackpad scrolls, the filter-input focus, and the mobile keyboard - so it vanished the moment the pointer reached into the emoji grid. Remove the scroll + resize close handlers entirely (the popover is fixed and anchored at open time; the hover-revealed trigger collapses to display:none once the pointer leaves the row, so it cannot be re-measured to reposition anyway). It now closes only on outside-click / Escape / a react, and focuses the filter with preventScroll. A list scroll lets it drift slightly, harmless for the interaction.

The four LC-77 fixtures are regenerated for the show-more revert; diff verified to contain only that.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Merge remote-tracking branch 'origin/main' into fix/room-polish-regressions
All checks were successful
check-secrets / TruffleHog (pull_request) Successful in 3s
check-secrets / Nosey parker (push) Successful in 5s
check-secrets / Kingfisher (pull_request) Successful in 5s
check-secrets / Kingfisher (push) Successful in 5s
check-secrets / Nosey parker (pull_request) Successful in 6s
check-secrets / TruffleHog (push) Successful in 6s
Create release / Create release from merged PR (pull_request) Has been skipped
Check / clippy + fmt + tests (pull_request) Successful in 5m10s
7df2e4b9b4
# Conflicts:
#	server/assets/main.css
longjacksonle deleted branch fix/room-polish-regressions 2026-06-20 04:31:27 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/lets-chat!397
No description provided.