Skip to content

feat(ui): make tool list panel resizable#2253

Merged
duwenxin99 merged 10 commits intogoogleapis:mainfrom
bennymagid:feat/ui-resizable-panel
Feb 18, 2026
Merged

feat(ui): make tool list panel resizable#2253
duwenxin99 merged 10 commits intogoogleapis:mainfrom
bennymagid:feat/ui-resizable-panel

Conversation

@bennymagid
Copy link
Copy Markdown
Contributor

@bennymagid bennymagid commented Jan 4, 2026

Description

Add draggable resize handle to tool list panel with min/max width
constraints, visual feedback, and localStorage persistence.

PR Checklist

Thank you for opening a Pull Request! Before submitting your PR, there are a
few things you can do to make sure it goes smoothly:

  • Make sure you reviewed
    CONTRIBUTING.md
  • Make sure to open an issue as a
    bug/issue
    before writing your code! That way we can discuss the change, evaluate
    designs, and agree on the general idea
  • Ensure the tests and linter pass
  • Code coverage does not decrease (if any source code was changed)
  • Appropriate docs were updated (if necessary)
  • Make sure to add ! if this involve a breaking change

🛠️ Fixes #1729

Add draggable resize handle to tool list panel with min/max width
constraints, visual feedback, and localStorage persistence.

Fixes googleapis#1729
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @bennymagid, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces a significant user interface improvement by making the tool list panel dynamically resizable. Users can now adjust the width of this panel to their preference using a new draggable handle, with the chosen dimensions being saved locally for a consistent experience. This change enhances the flexibility and usability of the application's layout.

Highlights

  • Resizable Tool List Panel: The UI now features a resizable tool list panel, enhancing user customization and flexibility.
  • Draggable Resize Handle: A dedicated draggable handle has been added to the panel's edge, allowing for intuitive width adjustments.
  • Width Constraints and Persistence: The panel respects defined minimum and maximum width constraints, and the user's preferred size is automatically saved to localStorage for consistent experience across sessions.
  • Visual Feedback: The resize handle provides clear visual feedback (color change) when hovered over and actively being dragged.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a resizable tool list panel, a great usability improvement. The implementation correctly handles min/max width constraints and persists the user's preference using localStorage. My review focuses on improving the JavaScript event handling to prevent potential resource leaks and on minor code cleanup in both CSS and JavaScript for better maintainability. Overall, the changes are well-structured and effective.

Comment thread internal/server/static/js/resize.js Outdated
Comment thread internal/server/static/css/style.css Outdated
Comment thread internal/server/static/js/resize.js
- Fix event listener memory leak by adding/removing listeners during drag
- Remove redundant width property from setPanelWidth
- Combine duplicate CSS selectors for hover and active states
@bennymagid bennymagid marked this pull request as ready for review January 4, 2026 01:57
@bennymagid bennymagid requested a review from a team January 4, 2026 01:57
@bennymagid bennymagid marked this pull request as draft January 4, 2026 01:57
@bennymagid bennymagid marked this pull request as ready for review January 4, 2026 01:58
@duwenxin99
Copy link
Copy Markdown
Contributor

/gcbrun

@duwenxin99 duwenxin99 added the tests: run Label to trigger Github Action tests. label Jan 13, 2026
@github-actions github-actions bot removed the tests: run Label to trigger Github Action tests. label Jan 13, 2026
@duwenxin99 duwenxin99 added the priority: p2 Moderately-important priority. Fix may not be included in next release. label Jan 13, 2026
@duwenxin99
Copy link
Copy Markdown
Contributor

/gcbrun

@duwenxin99 duwenxin99 added the tests: run Label to trigger Github Action tests. label Feb 5, 2026
@github-actions github-actions bot removed the tests: run Label to trigger Github Action tests. label Feb 5, 2026
@duwenxin99
Copy link
Copy Markdown
Contributor

/gcbrun

@duwenxin99 duwenxin99 added the tests: run Label to trigger Github Action tests. label Feb 10, 2026
@github-actions github-actions bot removed tests: run Label to trigger Github Action tests. labels Feb 10, 2026
@duwenxin99 duwenxin99 enabled auto-merge (squash) February 10, 2026 15:55
@duwenxin99
Copy link
Copy Markdown
Contributor

/gcbrun

@duwenxin99 duwenxin99 added the tests: run Label to trigger Github Action tests. label Feb 10, 2026
@github-actions github-actions bot removed the tests: run Label to trigger Github Action tests. label Feb 10, 2026
@duwenxin99
Copy link
Copy Markdown
Contributor

/gcbrun

@duwenxin99 duwenxin99 added the tests: run Label to trigger Github Action tests. label Feb 13, 2026
@github-actions github-actions bot removed the tests: run Label to trigger Github Action tests. label Feb 13, 2026
@duwenxin99
Copy link
Copy Markdown
Contributor

/gcbrun

@duwenxin99 duwenxin99 added the tests: run Label to trigger Github Action tests. label Feb 18, 2026
@github-actions github-actions bot removed the tests: run Label to trigger Github Action tests. label Feb 18, 2026
@duwenxin99 duwenxin99 added the tests: run Label to trigger Github Action tests. label Feb 18, 2026
@github-actions github-actions bot removed the tests: run Label to trigger Github Action tests. label Feb 18, 2026
@duwenxin99 duwenxin99 merged commit 276cf60 into googleapis:main Feb 18, 2026
14 checks passed
duwenxin99 added a commit that referenced this pull request Mar 2, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.28.0](v0.27.0...v0.28.0)
(2026-03-02)


### Features

* Add polling system to dynamic reloading
([#2466](#2466))
([fcaac9b](fcaac9b))
* Added basic template for sdks doc migrate
([#1961](#1961))
([87f2eaf](87f2eaf))
* **dataproc:** Add dataproc source and list/get clusters/jobs tools
([#2407](#2407))
([cc05e57](cc05e57))
* **sources/postgres:** Add configurable pgx query execution mode
([#2477](#2477))
([57b77bc](57b77bc))
* **sources/redis:** Add TLS support for Redis connections
([#2432](#2432))
([d6af290](d6af290))
* **tools/looker:** Enable Get All Lookml Tests, Run LookML Tests, and
Create View From Table tools for Looker
([#2522](#2522))
([e01139a](e01139a))
* **tools/looker:** Tools to list/create/delete directories
([#2488](#2488))
([0036d8c](0036d8c))
* **ui:** Make tool list panel resizable
([#2253](#2253))
([276cf60](276cf60))


### Bug Fixes

* **ci:** Add path for forked PR unit test runs
([#2540](#2540))
([04dd2a7](04dd2a7))
* Deflake alloydb omni
([#2431](#2431))
([62b8309](62b8309))
* **docs/adk:** Resolve dependency duplication
([#2418](#2418))
([4d44abb](4d44abb))
* **docs/langchain:** Fix core at 0.3.0 and align compatible
dependencies
([#2426](#2426))
([36edfd3](36edfd3))
* Enforce required validation for explicit null parameter values
([#2519](#2519))
([d5e9512](d5e9512))
* **oracle:** Enable DML operations and resolve incorrect array type
error ([#2323](#2323))
([72146a4](72146a4))
* **server/mcp:** Guard nil dereference in sseManager.get
([#2557](#2557))
([e534196](e534196)),
closes [#2548](#2548)
* **tests/postgres:** Implement uuid-based isolation and reliable
resource cleanup
([#2377](#2377))
([8a96fb1](8a96fb1))
* **tests/postgres:** Restore list_schemas test and implement dynamic
owner ([#2521](#2521))
([7041e79](7041e79))
* **tests:** Resolve LlamaIndex dependency conflict in JS quickstart
([#2597](#2597))
([ac11f5a](ac11f5a))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
github-actions bot pushed a commit that referenced this pull request Mar 2, 2026
🤖 I have created a release *beep* *boop*
---

##
[0.28.0](v0.27.0...v0.28.0)
(2026-03-02)

### Features

* Add polling system to dynamic reloading
([#2466](#2466))
([fcaac9b](fcaac9b))
* Added basic template for sdks doc migrate
([#1961](#1961))
([87f2eaf](87f2eaf))
* **dataproc:** Add dataproc source and list/get clusters/jobs tools
([#2407](#2407))
([cc05e57](cc05e57))
* **sources/postgres:** Add configurable pgx query execution mode
([#2477](#2477))
([57b77bc](57b77bc))
* **sources/redis:** Add TLS support for Redis connections
([#2432](#2432))
([d6af290](d6af290))
* **tools/looker:** Enable Get All Lookml Tests, Run LookML Tests, and
Create View From Table tools for Looker
([#2522](#2522))
([e01139a](e01139a))
* **tools/looker:** Tools to list/create/delete directories
([#2488](#2488))
([0036d8c](0036d8c))
* **ui:** Make tool list panel resizable
([#2253](#2253))
([276cf60](276cf60))

### Bug Fixes

* **ci:** Add path for forked PR unit test runs
([#2540](#2540))
([04dd2a7](04dd2a7))
* Deflake alloydb omni
([#2431](#2431))
([62b8309](62b8309))
* **docs/adk:** Resolve dependency duplication
([#2418](#2418))
([4d44abb](4d44abb))
* **docs/langchain:** Fix core at 0.3.0 and align compatible
dependencies
([#2426](#2426))
([36edfd3](36edfd3))
* Enforce required validation for explicit null parameter values
([#2519](#2519))
([d5e9512](d5e9512))
* **oracle:** Enable DML operations and resolve incorrect array type
error ([#2323](#2323))
([72146a4](72146a4))
* **server/mcp:** Guard nil dereference in sseManager.get
([#2557](#2557))
([e534196](e534196)),
closes [#2548](#2548)
* **tests/postgres:** Implement uuid-based isolation and reliable
resource cleanup
([#2377](#2377))
([8a96fb1](8a96fb1))
* **tests/postgres:** Restore list_schemas test and implement dynamic
owner ([#2521](#2521))
([7041e79](7041e79))
* **tests:** Resolve LlamaIndex dependency conflict in JS quickstart
([#2597](#2597))
([ac11f5a](ac11f5a))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Wenxin Du <117315983+duwenxin99@users.noreply.github.com> 81253a0
github-actions bot pushed a commit to renovate-bot/googleapis-_-genai-toolbox that referenced this pull request Mar 3, 2026
🤖 I have created a release *beep* *boop*
---

##
[0.28.0](googleapis/mcp-toolbox@v0.27.0...v0.28.0)
(2026-03-02)

### Features

* Add polling system to dynamic reloading
([googleapis#2466](googleapis#2466))
([fcaac9b](googleapis@fcaac9b))
* Added basic template for sdks doc migrate
([googleapis#1961](googleapis#1961))
([87f2eaf](googleapis@87f2eaf))
* **dataproc:** Add dataproc source and list/get clusters/jobs tools
([googleapis#2407](googleapis#2407))
([cc05e57](googleapis@cc05e57))
* **sources/postgres:** Add configurable pgx query execution mode
([googleapis#2477](googleapis#2477))
([57b77bc](googleapis@57b77bc))
* **sources/redis:** Add TLS support for Redis connections
([googleapis#2432](googleapis#2432))
([d6af290](googleapis@d6af290))
* **tools/looker:** Enable Get All Lookml Tests, Run LookML Tests, and
Create View From Table tools for Looker
([googleapis#2522](googleapis#2522))
([e01139a](googleapis@e01139a))
* **tools/looker:** Tools to list/create/delete directories
([googleapis#2488](googleapis#2488))
([0036d8c](googleapis@0036d8c))
* **ui:** Make tool list panel resizable
([googleapis#2253](googleapis#2253))
([276cf60](googleapis@276cf60))

### Bug Fixes

* **ci:** Add path for forked PR unit test runs
([googleapis#2540](googleapis#2540))
([04dd2a7](googleapis@04dd2a7))
* Deflake alloydb omni
([googleapis#2431](googleapis#2431))
([62b8309](googleapis@62b8309))
* **docs/adk:** Resolve dependency duplication
([googleapis#2418](googleapis#2418))
([4d44abb](googleapis@4d44abb))
* **docs/langchain:** Fix core at 0.3.0 and align compatible
dependencies
([googleapis#2426](googleapis#2426))
([36edfd3](googleapis@36edfd3))
* Enforce required validation for explicit null parameter values
([googleapis#2519](googleapis#2519))
([d5e9512](googleapis@d5e9512))
* **oracle:** Enable DML operations and resolve incorrect array type
error ([googleapis#2323](googleapis#2323))
([72146a4](googleapis@72146a4))
* **server/mcp:** Guard nil dereference in sseManager.get
([googleapis#2557](googleapis#2557))
([e534196](googleapis@e534196)),
closes [googleapis#2548](googleapis#2548)
* **tests/postgres:** Implement uuid-based isolation and reliable
resource cleanup
([googleapis#2377](googleapis#2377))
([8a96fb1](googleapis@8a96fb1))
* **tests/postgres:** Restore list_schemas test and implement dynamic
owner ([googleapis#2521](googleapis#2521))
([7041e79](googleapis@7041e79))
* **tests:** Resolve LlamaIndex dependency conflict in JS quickstart
([googleapis#2597](googleapis#2597))
([ac11f5a](googleapis@ac11f5a))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Wenxin Du <117315983+duwenxin99@users.noreply.github.com> 81253a0
NightStack15 added a commit to NightStack15/googleapis-_-genai-toolbox that referenced this pull request Mar 20, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.28.0](googleapis/mcp-toolbox@v0.27.0...v0.28.0)
(2026-03-02)


### Features

* Add polling system to dynamic reloading
([#2466](googleapis/mcp-toolbox#2466))
([fcaac9b](googleapis/mcp-toolbox@fcaac9b))
* Added basic template for sdks doc migrate
([#1961](googleapis/mcp-toolbox#1961))
([87f2eaf](googleapis/mcp-toolbox@87f2eaf))
* **dataproc:** Add dataproc source and list/get clusters/jobs tools
([#2407](googleapis/mcp-toolbox#2407))
([cc05e57](googleapis/mcp-toolbox@cc05e57))
* **sources/postgres:** Add configurable pgx query execution mode
([#2477](googleapis/mcp-toolbox#2477))
([57b77bc](googleapis/mcp-toolbox@57b77bc))
* **sources/redis:** Add TLS support for Redis connections
([#2432](googleapis/mcp-toolbox#2432))
([d6af290](googleapis/mcp-toolbox@d6af290))
* **tools/looker:** Enable Get All Lookml Tests, Run LookML Tests, and
Create View From Table tools for Looker
([#2522](googleapis/mcp-toolbox#2522))
([e01139a](googleapis/mcp-toolbox@e01139a))
* **tools/looker:** Tools to list/create/delete directories
([#2488](googleapis/mcp-toolbox#2488))
([0036d8c](googleapis/mcp-toolbox@0036d8c))
* **ui:** Make tool list panel resizable
([#2253](googleapis/mcp-toolbox#2253))
([276cf60](googleapis/mcp-toolbox@276cf60))


### Bug Fixes

* **ci:** Add path for forked PR unit test runs
([#2540](googleapis/mcp-toolbox#2540))
([04dd2a7](googleapis/mcp-toolbox@04dd2a7))
* Deflake alloydb omni
([#2431](googleapis/mcp-toolbox#2431))
([62b8309](googleapis/mcp-toolbox@62b8309))
* **docs/adk:** Resolve dependency duplication
([#2418](googleapis/mcp-toolbox#2418))
([4d44abb](googleapis/mcp-toolbox@4d44abb))
* **docs/langchain:** Fix core at 0.3.0 and align compatible
dependencies
([#2426](googleapis/mcp-toolbox#2426))
([36edfd3](googleapis/mcp-toolbox@36edfd3))
* Enforce required validation for explicit null parameter values
([#2519](googleapis/mcp-toolbox#2519))
([d5e9512](googleapis/mcp-toolbox@d5e9512))
* **oracle:** Enable DML operations and resolve incorrect array type
error ([#2323](googleapis/mcp-toolbox#2323))
([72146a4](googleapis/mcp-toolbox@72146a4))
* **server/mcp:** Guard nil dereference in sseManager.get
([#2557](googleapis/mcp-toolbox#2557))
([e534196](googleapis/mcp-toolbox@e534196)),
closes [#2548](googleapis/mcp-toolbox#2548)
* **tests/postgres:** Implement uuid-based isolation and reliable
resource cleanup
([#2377](googleapis/mcp-toolbox#2377))
([8a96fb1](googleapis/mcp-toolbox@8a96fb1))
* **tests/postgres:** Restore list_schemas test and implement dynamic
owner ([#2521](googleapis/mcp-toolbox#2521))
([7041e79](googleapis/mcp-toolbox@7041e79))
* **tests:** Resolve LlamaIndex dependency conflict in JS quickstart
([#2597](googleapis/mcp-toolbox#2597))
([ac11f5a](googleapis/mcp-toolbox@ac11f5a))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
NirajNandre pushed a commit to NirajNandre/genai-toolbox-fork that referenced this pull request Mar 24, 2026
🤖 I have created a release *beep* *boop*
---


##
[0.28.0](googleapis/mcp-toolbox@v0.27.0...v0.28.0)
(2026-03-02)


### Features

* Add polling system to dynamic reloading
([googleapis#2466](googleapis#2466))
([fcaac9b](googleapis@fcaac9b))
* Added basic template for sdks doc migrate
([googleapis#1961](googleapis#1961))
([87f2eaf](googleapis@87f2eaf))
* **dataproc:** Add dataproc source and list/get clusters/jobs tools
([googleapis#2407](googleapis#2407))
([cc05e57](googleapis@cc05e57))
* **sources/postgres:** Add configurable pgx query execution mode
([googleapis#2477](googleapis#2477))
([57b77bc](googleapis@57b77bc))
* **sources/redis:** Add TLS support for Redis connections
([googleapis#2432](googleapis#2432))
([d6af290](googleapis@d6af290))
* **tools/looker:** Enable Get All Lookml Tests, Run LookML Tests, and
Create View From Table tools for Looker
([googleapis#2522](googleapis#2522))
([e01139a](googleapis@e01139a))
* **tools/looker:** Tools to list/create/delete directories
([googleapis#2488](googleapis#2488))
([0036d8c](googleapis@0036d8c))
* **ui:** Make tool list panel resizable
([googleapis#2253](googleapis#2253))
([276cf60](googleapis@276cf60))


### Bug Fixes

* **ci:** Add path for forked PR unit test runs
([googleapis#2540](googleapis#2540))
([04dd2a7](googleapis@04dd2a7))
* Deflake alloydb omni
([googleapis#2431](googleapis#2431))
([62b8309](googleapis@62b8309))
* **docs/adk:** Resolve dependency duplication
([googleapis#2418](googleapis#2418))
([4d44abb](googleapis@4d44abb))
* **docs/langchain:** Fix core at 0.3.0 and align compatible
dependencies
([googleapis#2426](googleapis#2426))
([36edfd3](googleapis@36edfd3))
* Enforce required validation for explicit null parameter values
([googleapis#2519](googleapis#2519))
([d5e9512](googleapis@d5e9512))
* **oracle:** Enable DML operations and resolve incorrect array type
error ([googleapis#2323](googleapis#2323))
([72146a4](googleapis@72146a4))
* **server/mcp:** Guard nil dereference in sseManager.get
([googleapis#2557](googleapis#2557))
([e534196](googleapis@e534196)),
closes [googleapis#2548](googleapis#2548)
* **tests/postgres:** Implement uuid-based isolation and reliable
resource cleanup
([googleapis#2377](googleapis#2377))
([8a96fb1](googleapis@8a96fb1))
* **tests/postgres:** Restore list_schemas test and implement dynamic
owner ([googleapis#2521](googleapis#2521))
([7041e79](googleapis@7041e79))
* **tests:** Resolve LlamaIndex dependency conflict in JS quickstart
([googleapis#2597](googleapis#2597))
([ac11f5a](googleapis@ac11f5a))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Co-authored-by: Wenxin Du <117315983+duwenxin99@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

priority: p2 Moderately-important priority. Fix may not be included in next release.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature Request: Make Toolbox Web UI Tool List Panel Resizable

2 participants