Repository navigation
fix: keep sidebar chat menus above virtualized rows (OR-505) - #660
devin-ai-integration[bot] wants to merge 6 commits into
Conversation
|
I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".
|
[Medium impact] The PR appears safe to merge; no actionable issue remains in the reviewed changes. SummaryMoves sidebar chat actions into a shared Radix menu rendered outside transformed rows.
|
|
@greptileai Please review the latest head ab5ff14 after the fixes above. |
|
@greptileai Please review the latest head d9e45c5. |
|
@devin Please simplify this PR by putting dropdown behavior behind a shared, dependency-backed dropdown-menu primitive instead of implementing it inside SessionRow. Current main's MenuItem is only a styled button, and usePopover is a handwritten open-state/outside-click/Escape hook. Introduce a shared dropdown component backed by an established accessible menu library that handles portaling, anchor positioning/collision handling, keyboard navigation, dismissal, and focus restoration. SessionRow should declare its trigger and Rename/Archive/Delete actions; it should not own menu geometry, global scroll/resize listeners, or focus-management effects. Remove the bespoke dropdown machinery from SessionRow and replace the TypeScript-AST/transpileModule/new Function source-extraction tests with focused behavior-level regression coverage. Verify that a menu in an expanded, virtualized sidebar remains clickable and Rename edits the intended chat. Preserve RTL support, owner-row dismiss-only behavior, and sensible behavior during sidebar versus transcript scrolling through the primitive's supported APIs. Keep the scope to introducing the shared primitive and using it for this session menu; do not migrate unrelated dropdowns in this PR. Rebuild the required committed ui/dist assets and complete the repository's review and verification gates. Leave the PR open; do not merge. |
|
@sox8502 Completed your dropdown-primitive request on 642d0909. Only the session menu uses the new shared Radix primitive; SessionRow no longer owns menu geometry, global listeners or dropdown focus effects. Source-extraction checks are replaced by 12 mounted behavior tests, and committed assets are rebuilt. Scope review YES, Greptile 5/5 with no actionable notes, all applicable CI green, and recorded Linux/Chrome verification with genuine Codex passed. Arabic RTL, owner-row dismiss-only behavior and sidebar/transcript scrolling were verified. PR remains open and unmerged. Untested: other OSes/browsers, Persian, Claude and final-head flat-list mode. |
|
@greptileai Please review the latest head c9d56aa, including the shared Radix session-menu primitive and mounted behavior tests requested by Daniel. |
|
@greptileai Please review final head 450472e. Real runtime testing found an overscanned anchor could leave the sidebar while remaining inside the viewport; this follow-up supplies the sidebar via Radix collisionBoundary and adds mounted clipped-anchor coverage, without introducing geometry effects or global listeners. |
|
@greptileai Please review current head 642d090 against current main. The clipping-boundary correction remains unchanged; committed dashboard assets have been regenerated from the combined source. |
Closes #659
Linear: https://linear.app/alphaxiv/issue/OR-505/three-dot-problem
Summary
ui/dist. No unrelated dropdowns migrated.Test plan
58eaa168380b95f2cca36907d8f627ae27280dd5through real Codex chats.642d0909f3c053c77103fc59a551fd8ac90be6d8.origin/main(4874754735487fa74e46563a95fd4ff29f119512); conflict-free at handoff.Bug reproduction on main
Ubuntu 22.04.5 x86_64, Chrome 137.0.7118.2, OpenResearch 0.2.18, Codex 0.162.1. Expanded sidebar rows overlap the menu; clicking Rename opens a following conversation.
Post-fix functionality — final head
642d0909Rebuilt exact head
642d0909f3c053c77103fc59a551fd8ac90be6d8on Ubuntu 22.04.5 x86_64 / Chrome 137.0.7118.2, OpenResearch 0.2.18 and official Codex 0.162.1. Ponytail FULL independently loaded; genuine subscription-backed Codex CLI and dashboard preflights returnedCODEX_OK.Expanded-sidebar Rename targeted the intended older chat, immediately focused its editor, saved with Enter and persisted after refresh with the original transcript intact. The previously failing fully clipped, still-mounted owner now hides its menu and disables pointer interaction, leaving no clickable orphan.
Additional runtime coverage and limits
Passed visible-anchor sidebar scrolling, resize, real live row reorder, owner-row dismiss-only clicks, outside/trigger dismissal, Radix Arrow/Home/End/wrapping/typeahead/Tab behavior, Escape trigger-focus restoration and keyboard Rename/cancellation.
Transcript scrolling during genuine Codex streaming kept the menu usable; Escape did not stop the reply. Disposable Archive/Unarchive/confirmed Delete and Arabic RTL menu/Rename passed. English was restored. No material regression observed.
Not tested: other browsers/OSes, Persian, Claude and flat-list mode on this final head (flat-list was covered in an earlier implementation's run).
Human review
Yes. Left open for Daniel (
sox8502), whose history owns the session-menu/popover code. No merge performed; explicit approval is still required.Automation improvements
mainbefore switching the tested checkout to a PR branch; dev-slot otherwise refuses startup. Preserve the slot registry/data for repeat verification.Link to Devin session: https://app.devin.ai/sessions/b69acda394d34ebc848a0c3187843965
Open in Devin Desktop: https://app.devin.ai/desktop/session/b69acda394d34ebc848a0c3187843965?variant=devin
Requested by: @sox8502