Skip to content

collapsible request/response split in request tab#7566

Open
gopu-bruno wants to merge 3 commits intousebruno:mainfrom
gopu-bruno:feat/collapsible-response-panel
Open

collapsible request/response split in request tab#7566
gopu-bruno wants to merge 3 commits intousebruno:mainfrom
gopu-bruno:feat/collapsible-response-panel

Conversation

@gopu-bruno
Copy link
Copy Markdown
Collaborator

@gopu-bruno gopu-bruno commented Mar 25, 2026

Description

Add collapse and expand behaviour for the request and response panes in the request tab.

  • Layout: Works in both horizontal and vertical layouts.
  • Collapse: Drag the splitter until it is near the viewport edge.
  • Expand: Click the Request or Response collapsed strip, or drag from it to resize the split.

Screenshots

image image image

Contribution Checklist:

  • I've used AI significantly to create this pull request
  • The pull request only addresses one issue or adds one feature.
  • The pull request does not introduce any breaking changes
  • I have added screenshots or gifs to help explain the change if applicable.
  • I have read the contribution guidelines.
  • Create an issue and link to the pull request.

Note: Keeping the PR small and focused helps make it easier to review and merge. If you have multiple changes you want to make, please consider submitting them as separate pull requests.

Publishing to New Package Managers

Please see here for more information.

Summary by CodeRabbit

  • New Features

    • Request and response panes can be collapsed/expanded via a visible, keyboard-accessible indicator (Enter/Space) that also supports pointer drag-to-initiate resizing/collapse and shows contextual chevron/labels. Collapsed panes restore their previous size on expand.
  • Style / UI Improvements

    • Larger dragbar hit areas, adjusted padding for collapsed states, improved z-order and cursor feedback for more reliable resizing and clearer visuals.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Mar 25, 2026

Walkthrough

Adds collapse/expand behavior for RequestTabPanel: a new CollapsedPanelIndicator component with pointer/keyboard drag handling, Redux actions/state to track per-tab collapsed state and saved sizes, hook extensions to control collapse/expand, and RequestTabPanel integration with edge-proximity collapse detection and related styling adjustments.

Changes

Cohort / File(s) Summary
Collapsed Panel Indicator
packages/bruno-app/src/components/RequestTabPanel/CollapsedPanelIndicator/StyledWrapper.js, packages/bruno-app/src/components/RequestTabPanel/CollapsedPanelIndicator/index.js
New styled wrapper and CollapsedPanelIndicator component providing keyboard/pointer activation, drag-threshold detection, pointer-capture based drag start, aria/title text, and chevron+label rendering.
RequestTabPanel Integration & Styling
packages/bruno-app/src/components/RequestTabPanel/index.js, packages/bruno-app/src/components/RequestTabPanel/StyledWrapper.js
Integrates indicators, toggles collapse-aware classes, conditional middle dragbar rendering, edge-proximity collapse during drag, updated padding for collapsed states, increased dragbar size/z-index, and pointer-event adjustments for drag handles.
Hook: useTabPaneBoundaries
packages/bruno-app/src/hooks/useTabPaneBoundaries/index.js
Hook now exposes requestPaneCollapsed/responsePaneCollapsed and adds collapseRequest/expandRequest and collapseResponse/expandResponse dispatchers; reset() now expands both panes.
Redux: tabs slice
packages/bruno-app/src/providers/ReduxStore/slices/tabs.js
Adds per-tab pane fields (collapsed flags, pane size, saved pre-collapse dimensions) and four reducers/actions: collapseRequestPane, collapseResponsePane, expandRequestPane, expandResponsePane.

Sequence Diagram

sequenceDiagram
    participant User as User
    participant Indicator as CollapsedPanelIndicator
    participant Panel as RequestTabPanel
    participant Hook as useTabPaneBoundaries
    participant Store as Redux Store

    User->>Indicator: click / keypress / pointer-down
    Indicator->>Panel: onExpand() or onDragStart()
    Panel->>Hook: collapseRequest()/collapseResponse()/expandRequest()/expandResponse()
    Hook->>Store: dispatch collapse/expand action
    Store->>Store: update collapsed flags & saved sizes
    Store-->>Hook: updated state
    Hook-->>Panel: new collapsed state
    Panel-->>User: UI re-render (collapsed/expanded)
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested labels

size/L

Suggested reviewers

  • helloanoop
  • lohit-bruno
  • naman-bruno
  • bijin-bruno

Poem

A hinge of chevrons, quiet and bright,
Drag or press to fold the sight,
Redux keeps the size you knew,
Hooks and panels sing it true,
UI tucks neatly, soft as night. 🎏

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'collapsible request/response split in request tab' accurately summarizes the main feature added: collapse/expand behavior for request and response panes.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@gopu-bruno gopu-bruno closed this Mar 25, 2026
@gopu-bruno gopu-bruno reopened this Mar 25, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/bruno-app/src/hooks/useTabPaneBoundaries/index.js (1)

57-67: ⚠️ Potential issue | 🟡 Minor

Reset currently restores the stale pre-collapse request size.

If the request pane is collapsed, expandRequestPane() rewrites the just-reset width/height with requestPaneWidthBeforeCollapse and requestPaneHeightBeforeCollapse, so reset() does not actually reset the split.

Possible fix
     reset() {
+      dispatch(expandRequestPane({ uid: activeTabUid }));
+      dispatch(expandResponsePane({ uid: activeTabUid }));
       dispatch(updateRequestPaneTabHeight({
         uid: activeTabUid,
         requestPaneHeight: MIN_TOP_PANE_HEIGHT
       }));
       dispatch(updateRequestPaneTabWidth({
         uid: activeTabUid,
         requestPaneWidth: (screenWidth - asideWidth) / DEFAULT_PANE_WIDTH_DIVISOR
       }));
-      dispatch(expandRequestPane({ uid: activeTabUid }));
-      dispatch(expandResponsePane({ uid: activeTabUid }));
     }
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/bruno-app/src/hooks/useTabPaneBoundaries/index.js` around lines 57 -
67, reset() sets the request pane size but then expandRequestPane() restores
stale requestPaneWidthBeforeCollapse/requestPaneHeightBeforeCollapse values, so
modify reset() to clear those "before collapse" fields for the activeTabUid
before calling expandRequestPane; specifically, dispatch an action (or reuse
updateRequestPaneTabWidth/updateRequestPaneTabHeight to set
requestPaneWidthBeforeCollapse and requestPaneHeightBeforeCollapse to
null/undefined for activeTabUid) and only then call expandRequestPane({ uid:
activeTabUid }) and expandResponsePane; this ensures the width/height you set in
reset() are not overwritten by expandRequestPane().
🧹 Nitpick comments (1)
packages/bruno-app/src/components/RequestTabPanel/CollapsedPanelIndicator/index.js (1)

5-11: Document this component's interaction contract.

A short JSDoc block would help here because the click-vs-drag handoff and the panelType / dragThresholdPx expectations are not obvious from the call site.

As per coding guidelines, "Add JSDoc comments to abstractions for additional details."

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@packages/bruno-app/src/components/RequestTabPanel/CollapsedPanelIndicator/index.js`
around lines 5 - 11, Add a JSDoc block above the CollapsedPanelIndicator
component that documents its interaction contract: describe accepted prop values
for panelType ('request' | 'response'), isVertical (boolean), and
dragThresholdPx (number, pixels threshold used to differentiate click vs drag),
explain the click-vs-drag handoff behavior (short press/click invokes onExpand,
pointer movement beyond dragThresholdPx invokes onDragStart), and specify the
expected signatures and event types for onExpand and onDragStart (e.g., (event:
MouseEvent|PointerEvent) => void) so callers know how to use and test the
component.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@packages/bruno-app/src/components/RequestTabPanel/CollapsedPanelIndicator/StyledWrapper.js`:
- Around line 15-17: The current StyledWrapper removes the focus outline (the
&:focus rule) making the collapsed strip invisible to keyboard users; update the
StyledWrapper component to replace outline: none with an accessible visible
focus style (use &:focus and/or &:focus-visible) that applies a clear focus ring
such as a themed box-shadow or border highlight so the expand affordance is
visible when focused (reference the StyledWrapper styled component and its
&:focus selector).

In `@packages/bruno-app/src/components/RequestTabPanel/index.js`:
- Around line 195-203: The drag-start handlers (handleRequestIndicatorDragStart
and handleResponseIndicatorDragStart) expand the pane and arm dragging but never
apply the current pointer position, so if the user crosses the threshold and
releases before the next mousemove the splitter snaps to the old position; fix
by reading the pointer coords from the event (e.clientX / e.clientY) and
immediately calling the same splitter-position updater used during dragging (the
function or setter that updates the split position / moveSplitter) before or as
part of startDragging, so the splitter is placed at the current pointer location
right away; update both handleRequestIndicatorDragStart and
handleResponseIndicatorDragStart to apply the pointer-derived position via that
updater (or extend startDragging to accept and apply the initial coordinates)
and keep expandRequest/expandResponse calls as-is.

---

Outside diff comments:
In `@packages/bruno-app/src/hooks/useTabPaneBoundaries/index.js`:
- Around line 57-67: reset() sets the request pane size but then
expandRequestPane() restores stale
requestPaneWidthBeforeCollapse/requestPaneHeightBeforeCollapse values, so modify
reset() to clear those "before collapse" fields for the activeTabUid before
calling expandRequestPane; specifically, dispatch an action (or reuse
updateRequestPaneTabWidth/updateRequestPaneTabHeight to set
requestPaneWidthBeforeCollapse and requestPaneHeightBeforeCollapse to
null/undefined for activeTabUid) and only then call expandRequestPane({ uid:
activeTabUid }) and expandResponsePane; this ensures the width/height you set in
reset() are not overwritten by expandRequestPane().

---

Nitpick comments:
In
`@packages/bruno-app/src/components/RequestTabPanel/CollapsedPanelIndicator/index.js`:
- Around line 5-11: Add a JSDoc block above the CollapsedPanelIndicator
component that documents its interaction contract: describe accepted prop values
for panelType ('request' | 'response'), isVertical (boolean), and
dragThresholdPx (number, pixels threshold used to differentiate click vs drag),
explain the click-vs-drag handoff behavior (short press/click invokes onExpand,
pointer movement beyond dragThresholdPx invokes onDragStart), and specify the
expected signatures and event types for onExpand and onDragStart (e.g., (event:
MouseEvent|PointerEvent) => void) so callers know how to use and test the
component.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 0f79ea15-a1d0-447f-a21a-19ed6762ecd7

📥 Commits

Reviewing files that changed from the base of the PR and between 590a5a9 and d210e5f.

📒 Files selected for processing (6)
  • packages/bruno-app/src/components/RequestTabPanel/CollapsedPanelIndicator/StyledWrapper.js
  • packages/bruno-app/src/components/RequestTabPanel/CollapsedPanelIndicator/index.js
  • packages/bruno-app/src/components/RequestTabPanel/StyledWrapper.js
  • packages/bruno-app/src/components/RequestTabPanel/index.js
  • packages/bruno-app/src/hooks/useTabPaneBoundaries/index.js
  • packages/bruno-app/src/providers/ReduxStore/slices/tabs.js

Comment on lines +195 to +203
const handleRequestIndicatorDragStart = useCallback((e) => {
expandRequest();
startDragging(e);
}, [expandRequest, startDragging]);

const handleResponseIndicatorDragStart = useCallback((e) => {
expandResponse();
startDragging(e);
}, [expandResponse, startDragging]);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Use the threshold-crossing event to place the splitter immediately.

These handlers expand the pane and arm dragging, but they never apply the current pointer position. If the user crosses the drag threshold and releases before the next mousemove, the pane reopens at the stored/default split instead of the dragged position.

Possible fix
+  const syncPaneSizeFromPointer = useCallback((e) => {
+    const mainRect = mainSectionRef.current?.getBoundingClientRect();
+    if (!mainRect) return;
+
+    if (isVerticalLayoutRef.current) {
+      const maxHeight = mainRect.height - MIN_BOTTOM_PANE_HEIGHT;
+      const nextHeight = Math.max(MIN_TOP_PANE_HEIGHT, Math.min(e.clientY - mainRect.top, maxHeight));
+      setTopPaneHeight(nextHeight);
+      return;
+    }
+
+    const maxWidth = mainRect.width - MIN_RIGHT_PANE_WIDTH;
+    const nextWidth = Math.max(MIN_LEFT_PANE_WIDTH, Math.min(e.clientX - mainRect.left, maxWidth));
+    setLeftPaneWidth(nextWidth);
+  }, [setTopPaneHeight, setLeftPaneWidth]);
+
   const handleRequestIndicatorDragStart = useCallback((e) => {
     expandRequest();
+    syncPaneSizeFromPointer(e);
     startDragging(e);
-  }, [expandRequest, startDragging]);
+  }, [expandRequest, syncPaneSizeFromPointer, startDragging]);
 
   const handleResponseIndicatorDragStart = useCallback((e) => {
     expandResponse();
+    syncPaneSizeFromPointer(e);
     startDragging(e);
-  }, [expandResponse, startDragging]);
+  }, [expandResponse, syncPaneSizeFromPointer, startDragging]);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/bruno-app/src/components/RequestTabPanel/index.js` around lines 195
- 203, The drag-start handlers (handleRequestIndicatorDragStart and
handleResponseIndicatorDragStart) expand the pane and arm dragging but never
apply the current pointer position, so if the user crosses the threshold and
releases before the next mousemove the splitter snaps to the old position; fix
by reading the pointer coords from the event (e.clientX / e.clientY) and
immediately calling the same splitter-position updater used during dragging (the
function or setter that updates the split position / moveSplitter) before or as
part of startDragging, so the splitter is placed at the current pointer location
right away; update both handleRequestIndicatorDragStart and
handleResponseIndicatorDragStart to apply the pointer-derived position via that
updater (or extend startDragging to accept and apply the initial coordinates)
and keep expandRequest/expandResponse calls as-is.

@gopu-bruno gopu-bruno force-pushed the feat/collapsible-response-panel branch from d210e5f to c39adc0 Compare April 1, 2026 15:21
@pull-request-size pull-request-size Bot added size/XL and removed size/L labels Apr 1, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
packages/bruno-app/src/components/RequestTabPanel/index.js (1)

209-217: ⚠️ Potential issue | 🟠 Major

Apply the current pointer position when drag-expanding a collapsed pane.

These handlers reopen the pane and start dragging, but they still wait for the next mousemove before updating the split. If the threshold is crossed and the mouse is released immediately, the pane snaps back to the saved/default size instead of the dragged position.

💡 Possible fix
+  const syncPaneSizeFromPointer = useCallback((e) => {
+    const mainRect = mainSectionRef.current?.getBoundingClientRect();
+    if (!mainRect) {
+      return;
+    }
+
+    if (isVerticalLayoutRef.current) {
+      const maxHeight = mainRect.height - MIN_BOTTOM_PANE_HEIGHT;
+      const nextHeight = Math.max(MIN_TOP_PANE_HEIGHT, Math.min(e.clientY - mainRect.top, maxHeight));
+      setTopPaneHeight(nextHeight);
+      return;
+    }
+
+    const maxWidth = mainRect.width - MIN_RIGHT_PANE_WIDTH;
+    const nextWidth = Math.max(MIN_LEFT_PANE_WIDTH, Math.min(e.clientX - mainRect.left, maxWidth));
+    setLeftPaneWidth(nextWidth);
+  }, [setTopPaneHeight, setLeftPaneWidth]);
+
   const handleRequestIndicatorDragStart = useCallback((e) => {
     expandRequest();
+    syncPaneSizeFromPointer(e);
     startDragging(e);
-  }, [expandRequest, startDragging]);
+  }, [expandRequest, syncPaneSizeFromPointer, startDragging]);
 
   const handleResponseIndicatorDragStart = useCallback((e) => {
     expandResponse();
+    syncPaneSizeFromPointer(e);
     startDragging(e);
-  }, [expandResponse, startDragging]);
+  }, [expandResponse, syncPaneSizeFromPointer, startDragging]);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/bruno-app/src/components/RequestTabPanel/index.js` around lines 209
- 217, The pane reopens then waits for the next mousemove so immediate drag
position isn't applied; modify handleRequestIndicatorDragStart and
handleResponseIndicatorDragStart to read the pointer position from the incoming
event (e.g., clientX/clientY) and invoke the same update routine used on
mousemove to set the split immediately (before or right after calling
startDragging), so expandRequest/expandResponse + startDragging both apply the
current pointer position instead of waiting for the next mousemove. Ensure you
call the shared move/update handler (the function used in the mousemove handler)
with the event-derived coordinates so the pane size reflects the initial press.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@packages/bruno-app/src/components/RequestTabPanel/index.js`:
- Around line 420-442: The indentation of the JSX/returned block around
getRequestPaneStyle is inconsistent with the project's 2-space rule, causing
`@stylistic/indent` failures; reformat the JSX starting from the return
(ScopedPersistenceProvider) through the StyledWrapper opening tag so all nested
attributes and ternary className expressions use 2 spaces per indent (no tabs),
align the multiline ternary fragments and template literals consistently, and
ensure closing braces/parentheses line up with their openings (referencing
getRequestPaneStyle, ScopedPersistenceProvider, StyledWrapper, and
focusedTab.uid to locate the block).

---

Duplicate comments:
In `@packages/bruno-app/src/components/RequestTabPanel/index.js`:
- Around line 209-217: The pane reopens then waits for the next mousemove so
immediate drag position isn't applied; modify handleRequestIndicatorDragStart
and handleResponseIndicatorDragStart to read the pointer position from the
incoming event (e.g., clientX/clientY) and invoke the same update routine used
on mousemove to set the split immediately (before or right after calling
startDragging), so expandRequest/expandResponse + startDragging both apply the
current pointer position instead of waiting for the next mousemove. Ensure you
call the shared move/update handler (the function used in the mousemove handler)
with the event-derived coordinates so the pane size reflects the initial press.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: d1d12767-dc53-49bc-bb2a-a929ff28b75d

📥 Commits

Reviewing files that changed from the base of the PR and between d210e5f and c39adc0.

📒 Files selected for processing (6)
  • packages/bruno-app/src/components/RequestTabPanel/CollapsedPanelIndicator/StyledWrapper.js
  • packages/bruno-app/src/components/RequestTabPanel/CollapsedPanelIndicator/index.js
  • packages/bruno-app/src/components/RequestTabPanel/StyledWrapper.js
  • packages/bruno-app/src/components/RequestTabPanel/index.js
  • packages/bruno-app/src/hooks/useTabPaneBoundaries/index.js
  • packages/bruno-app/src/providers/ReduxStore/slices/tabs.js
🚧 Files skipped from review as they are similar to previous changes (5)
  • packages/bruno-app/src/hooks/useTabPaneBoundaries/index.js
  • packages/bruno-app/src/providers/ReduxStore/slices/tabs.js
  • packages/bruno-app/src/components/RequestTabPanel/CollapsedPanelIndicator/index.js
  • packages/bruno-app/src/components/RequestTabPanel/StyledWrapper.js
  • packages/bruno-app/src/components/RequestTabPanel/CollapsedPanelIndicator/StyledWrapper.js

Comment thread packages/bruno-app/src/components/RequestTabPanel/index.js Outdated
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

♻️ Duplicate comments (1)
packages/bruno-app/src/components/RequestTabPanel/index.js (1)

209-217: ⚠️ Potential issue | 🟠 Major

Pointer position not synced immediately on expand.

These handlers expand the pane and arm dragging, but never apply the current pointer position. If the user crosses the drag threshold and releases before the next mousemove, the pane reopens at the stored/default split instead of where they dragged.

Apply the pointer-derived split position immediately after expanding:

Possible fix
+ const syncPaneSizeFromPointer = useCallback((e) => {
+   const mainRect = mainSectionRef.current?.getBoundingClientRect();
+   if (!mainRect) return;
+
+   if (isVerticalLayoutRef.current) {
+     const maxHeight = mainRect.height - MIN_BOTTOM_PANE_HEIGHT;
+     const nextHeight = Math.max(MIN_TOP_PANE_HEIGHT, Math.min(e.clientY - mainRect.top, maxHeight));
+     setTopPaneHeight(nextHeight);
+     return;
+   }
+
+   const maxWidth = mainRect.width - MIN_RIGHT_PANE_WIDTH;
+   const nextWidth = Math.max(MIN_LEFT_PANE_WIDTH, Math.min(e.clientX - mainRect.left, maxWidth));
+   setLeftPaneWidth(nextWidth);
+ }, [setTopPaneHeight, setLeftPaneWidth]);

  const handleRequestIndicatorDragStart = useCallback((e) => {
    expandRequest();
+   syncPaneSizeFromPointer(e);
    startDragging(e);
- }, [expandRequest, startDragging]);
+ }, [expandRequest, syncPaneSizeFromPointer, startDragging]);

  const handleResponseIndicatorDragStart = useCallback((e) => {
    expandResponse();
+   syncPaneSizeFromPointer(e);
    startDragging(e);
- }, [expandResponse, startDragging]);
+ }, [expandResponse, syncPaneSizeFromPointer, startDragging]);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/bruno-app/src/components/RequestTabPanel/index.js` around lines 209
- 217, The drag-start handlers expand the pane and begin dragging but don't
apply the current pointer-derived split, so if the user releases before the next
mousemove the split snaps back; in handleRequestIndicatorDragStart and
handleResponseIndicatorDragStart, after calling expandRequest()/expandResponse()
and before startDragging(e) (or immediately after), compute and apply the split
position from the incoming event by invoking the same helper used on mousemove
(the pointer-to-split setter used elsewhere—e.g. the function that onMouseMove
uses to derive and set split) so the immediate pointer location is applied to
the splitter state while dragging is armed.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@packages/bruno-app/src/components/RequestTabPanel/index.js`:
- Around line 209-217: The drag-start handlers expand the pane and begin
dragging but don't apply the current pointer-derived split, so if the user
releases before the next mousemove the split snaps back; in
handleRequestIndicatorDragStart and handleResponseIndicatorDragStart, after
calling expandRequest()/expandResponse() and before startDragging(e) (or
immediately after), compute and apply the split position from the incoming event
by invoking the same helper used on mousemove (the pointer-to-split setter used
elsewhere—e.g. the function that onMouseMove uses to derive and set split) so
the immediate pointer location is applied to the splitter state while dragging
is armed.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: bb3da678-9a73-41d5-a363-a8bfb65b5d6e

📥 Commits

Reviewing files that changed from the base of the PR and between c39adc0 and 5165ca8.

📒 Files selected for processing (1)
  • packages/bruno-app/src/components/RequestTabPanel/index.js

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants