v4.2.0

givanz/VvvebJsv4.2.0Sep 23, 2026by bijin-bruno

Upgrading?

AI Summary

This release introduces significant enhancements to environment management, including inheritance and multi-select capabilities, alongside new scripting features for gRPC and CLI documentation generation. It also improves UI components and Git integration.

Key Highlights

  • Multi-select support for request examples and collections
  • Environment inheritance for collections and workspaces with a redesigned modal
  • New gRPC scripting support and CLI documentation generation
  • Enhanced UI components including a checkbox component and query editor search/replace
  • Improved Git integration with Create PR functionality and scope-aware variables

New Features

  • Multi-select for request examples
  • Collection and workspace environment inheritance
  • CLI documentation generation
  • gRPC scripting support
  • Preferences page redesign
  • Expose __dirname and __filename in scripting context
  • Preview PDF and video for saved responses
  • Checkbox component in UI
  • CodeMirror search and replace in query editor
  • Create PR functionality via Git
  • Scope-aware variable creation

Full Release Notes

# Changelog

### Features
- feat(sidebar): support multi-select for request examples by @Gopi-bruno in [#9225](https://github.com/usebruno/bruno/pull/9225)
- feat(environments): `collection` and `workspace` environments inheritance by @lohit-bruno in [#9136](https://github.com/usebruno/bruno/pull/9136)
- feat(environment): redesign multi environment modal by @sachin-thakur-bruno in [#9179](https://github.com/usebruno/bruno/pull/9179)
- feat(cli): Generate docs through cli by @sachin-bruno in [#9073](https://github.com/usebruno/bruno/pull/9073)
- feat(grpc): add scripting support by @morsh-bruno in [#9144](https://github.com/usebruno/bruno/pull/9144)
- feat(preferences): support page redesign by @sachin-thakur-bruno in [#9064](https://github.com/usebruno/bruno/pull/9064)
- feat(runtime): expose __dirname, __filename within scripting context by @sanish-bruno in [#9101](https://github.com/usebruno/bruno/pull/9101)
- feat(response-example): support previewing pdf images and videos for 'save responses' by @abhishekp-bruno in [#9000](https://github.com/usebruno/bruno/pull/9000)
- feat(checkbox): adds checkbox component in ui with story and unit tests by @sachin-thakur-bruno in [#8861](https://github.com/usebruno/bruno/pull/8861)
- feat(preferences): add docs URL for Mock Server by @naman-bruno in [#9142](https://github.com/usebruno/bruno/pull/9142)
- feat(code-editor): degraded editor and status bar by @barelyhuman and @sid-bruno in [#8867](https://github.com/usebruno/bruno/pull/8867)
- feat: add multi-selection state for collections (#6339) by @sid-bruno in [#8721](https://github.com/usebruno/bruno/pull/8721)
- feat(generate-docs): advanced filtering options in generate documentation flow by @sachin-bruno in [#9072](https://github.com/usebruno/bruno/pull/9072)
- feat(app): open response URLs as transient requests (#8189) by @sid-bruno in [#8850](https://github.com/usebruno/bruno/pull/8850)
- feat(pm-migration): handle pm.sendRequest promise chains by @abhishekp-bruno in [#8960](https://github.com/usebruno/bruno/pull/8960)
- feat(mock): CreateMockServerModal with source type selection and sync option by @naman-bruno in [#9110](https://github.com/usebruno/bruno/pull/9110)
- feat(variables): add scope-aware variable creation (#8665) by @sid-bruno and @sachin-thakur-bruno in [#8852](https://github.com/usebruno/bruno/pull/8852)
- feat(env): multi environment import failure if one file is invalid by @Gopi-bruno in [#9051](https://github.com/usebruno/bruno/pull/9051)
- feat(headers): show default headers and support omitting them per request by @pooja-bruno in [#8990](https://github.com/usebruno/bruno/pull/8990)
- feat(app): replaced the placeholder app with a learn-more empty state and labelled app items as App by @ravindra-bruno in [#9100](https://github.com/usebruno/bruno/pull/9100)
- feat(env): handle environment name conflicts during import with replace or copy by @Gopi-bruno in [#9050](https://github.com/usebruno/bruno/pull/9050)
- feat(query-editor): add code mirror search and replace in query editor by @sachin-thakur-bruno in [#9042](https://github.com/usebruno/bruno/pull/9042)
- feat(translator): add global variable translation methods for Postman to bruno conversion by @sanish-bruno in [#9098](https://github.com/usebruno/bruno/pull/9098)
- feat(filesystem): decouple display names from filesystem names & resolve collisions silently by @sachin-thakur-bruno in [#8714](https://github.com/usebruno/bruno/pull/8714)
- feat(yml-migration): strip .bru extension from runRequest calls by @naman-bruno in [#9055](https://github.com/usebruno/bruno/pull/9055)
- feat(app): support for app drafts in migration and save requests modal by @naman-bruno in [#9054](https://github.com/usebruno/bruno/pull/9054)
- feat(timeline): display headers in timeline request headers by @shubh-bruno in [#8857](https://github.com/usebruno/bruno/pull/8857)
- feat(variables): revamp the read-only Variables tab by @pooja-bruno in [#8784](https://github.com/usebruno/bruno/pull/8784)
- feat(storybook): upgrade storybook to rsbuild remove webpack as a dep by @sid-bruno in [#9062](https://github.com/usebruno/bruno/pull/9062)
- feat(sidebar): add support for displaying and managing file items in the collection sidebar by @Gopi-bruno
- feat(collection-docs): telemetry for advanced filtering options when generating docs by @sachin-bruno
- feat(git): implement Create PR functionality by @naman-bruno and @utkarsh-bruno
- feat(sidebar): adds naming collisions for js files by @sachin-thakur-bruno
- feat(git): allow dismissing the branch guard banner till a session by @ravindra-bruno

### Fixes
- fix(link-aware): revert click-to-open-request in editable fields by @shubh-bruno in [#9201](https://github.com/usebruno/bruno/pull/9201)
- fix(scripts): show sent headers for sendRequest & runRequest by @shubh-bruno in [#9215](https://github.com/usebruno/bruno/pull/9215)
- fix(nodevm): add `--experimental-cache-modules` to cache npm modules during script execution by @sid-bruno in [#9170](https://github.com/usebruno/bruno/pull/9170)
- fix(mock-server): clearing validation errors on modal by @utkarsh-bruno in [#9172](https://github.com/usebruno/bruno/pull/9172)
- fix(bruno-js): await async test() callbacks in developer mode by @shubh-bruno in [#9081](https://github.com/usebruno/bruno/pull/9081)
- fix(app): labelled cloned items by type in the clone modal and toast by @ravindra-bruno in [#9153](https://github.com/usebruno/bruno/pull/9153)
- fix(request): creating a new request from sidebar add request pre fils the preset url by @sachin-thakur-bruno in [#9150](https://github.com/usebruno/bruno/pull/9150)
- fix(openAPI): multifile openAPI specs can be imported by @adwait-bruno in [#8946](https://github.com/usebruno/bruno/pull/8946)
- fix(CLI): fixed junit reporters omit iterations and requests skipped due to bail by @sharan-bruno in [#9080](https://github.com/usebruno/bruno/pull/9080)
- fix(collection-settings): save presets using shortcuts by @shubh-bruno in [#9138](https://github.com/usebruno/bruno/pull/9138)
- fix(sqlite): write generated artifacts as TypeScript literals by @chirag-bruno in [#8951](https://github.com/usebruno/bruno/pull/8951)
- fix(app): added clone option for app and name collission for app while creating by @sachin-thakur-bruno in [#9133](https://github.com/usebruno/bruno/pull/9133)
- fix: openapi sync update by @adwait-bruno in [#8979](https://github.com/usebruno/bruno/pull/8979)
- fix: use NtlmClient as an adapter of axios instance by @prateek-bruno in [#9044](https://github.com/usebruno/bruno/pull/9044)
- fix(codemirror-search): add selected text to search input for replace shortcut by @sachin-thakur-bruno in [#9090](https://github.com/usebruno/bruno/pull/9090)
- fix(mock server): collection/api spec now shows a default placeholder at the start by @utkarsh-bruno in [#8963](https://github.com/usebruno/bruno/pull/8963)
- fix(lang): guard ntlm domain on domainKey, not passwordKey by @sbalagan22 in [#8707](https://github.com/usebruno/bruno/pull/8707)
- fix(ui): prevent elapsed-time counter from resetting on tab switch by @Sudemc, @sharan-bruno in [#9089](https://github.com/usebruno/bruno/pull/9089)
- fix: create example modal shows status text and body type by @utkarsh-bruno in [#9082](https://github.com/usebruno/bruno/pull/9082)
- fix(datatype): Variable type validation flag reference mismatch issue by @sharan-bruno in [#8878](https://github.com/usebruno/bruno/pull/8878)
- fix: fixing duplicate variables by @utkarsh-bruno in [#9084](https://github.com/usebruno/bruno/pull/9084)
- fix(mock-server): restricting port numbers by showing errors by @utkarsh-bruno in [#8964](https://github.com/usebruno/bruno/pull/8964)
- fix(mock server): adding request log in case of express failure because of response header too by @utkarsh-bruno in [#9059](https://github.com/usebruno/bruno/pull/9059)
- fix(app): scoped mock server API spec options to the active workspace by @ravindra-bruno in [#9077](https://github.com/usebruno/bruno/pull/9077)
- fix(theme): added missing border for light and dark theme by @sachin-thakur-bruno in [#9071](https://github.com/usebruno/bruno/pull/9071)
- fix(scripting): preserve variables set in req.onFail by @Max-Reisinger and @sharan-bruno in [#8873](https://github.com/usebruno/bruno/pull/8873)
- fix(XmlPreview): improve XML parsing error handling and return structure by @abhishekp-bruno in [#8860](https://github.com/usebruno/bruno/pull/8860)
- fix(RequestTab): streamline transient request save confirmation logic by @sid-bruno in [#8969](https://github.com/usebruno/bruno/pull/8969)
- fix(test): removed the backup assertion by @chirag-bruno in [#9001](https://github.com/usebruno/bruno/pull/9001)
- fix: Prevent QuickJS disposal aborts in safe mode by @prateek-bruno in [#8924](https://github.com/usebruno/bruno/pull/8924)
- fix(grpc): reflection cache to use resolved url as key, add gRPC test server by @sanish-bruno in [#8832](https://github.com/usebruno/bruno/pull/8832)
- fix(converters): preserve enabled state for Env variables, collection variables for export, import by @ricciardelli and @sanish-bruno in [#8918](https://github.com/usebruno/bruno/pull/8918)
- fix: remove the 50 cap on maxRedirects and normalise it on every read path by @prateek-bruno in [#8855](https://github.com/usebruno/bruno/pull/8855)
- fix(mock-server): fix collapsed query params pane in mock response by @gopu-bruno in [#8957](https://github.com/usebruno/bruno/pull/8957)
- fix: use correct key for vault in telemetry by @prateek-bruno
- fix(environments): environment inheritance fixes by @lohit-bruno
- fix: pass secret variables to grpc scripting by @morsh-bruno
- fix: removing What is a Github repo link by @utkarsh-bruno
- fix(autosave): remove incomplete external secrets rows from autosave flow by @abhishekp-bruno
- fix: interpolate iteration data in assertion values by @abhishekp-bruno
- fix(git): stop reloading the stash list on unrelated git refreshes by @ravindra-bruno
- fix(reports): generated headers in reports by @shubh-bruno
- fix(git): allow longer branch names and show a clear error message by @gopu-bruno
- fix(git): mapped stash apply and unmerged index errors to readable messages by @ravindra-bruno
- fix(packages): re-add cross platform optional native deps by @sid-bruno

### Others
- fix(test): add dataTestId to delete collection item modal by @Gopi-bruno in [#9141](https://github.com/usebruno/bruno/pull/9141)
- fix(deps): conflicting dependencies after sec update hoisting by @sid-bruno in [#9029](https://github.com/usebruno/bruno/pull/9029)
- fix(unit-test): timeout for seeding 200 files on windows by @sachin-thakur-bruno in [#9099](https://github.com/usebruno/bruno/pull/9099)
- fix(tests): websocket messages scroll flaky tests by @sachin-thakur-bruno in [#9122](https://github.com/usebruno/bruno/pull/9122)
- feat(tests): add tests for app creation and management by @naman-bruno in [#9124](https://github.com/usebruno/bruno/pull/9124)
- fix(test): cli test cases for windows by @shubh-bruno in [#9161](https://github.com/usebruno/bruno/pull/9161)
- docs: project governance by @helloanoop in [#8790](https://github.com/usebruno/bruno/pull/8790)
- chore(standards): update coding standards for call site specific clones by @sid-bruno in [#9160](https://github.com/usebruno/bruno/pull/9160)
- perf(runner): remove redundant deep clones of the runner results tree by @chirag-bruno in [#9151](https://github.com/usebruno/bruno/pull/9151)
- test(benchmark): added benchmark test suite for collection runner by @chirag-bruno in [#9126](https://github.com/usebruno/bruno/pull/9126)
- chore: improve test comments by @helloanoop in [#9139](https://github.com/usebruno/bruno/pull/9139)
- chore(bruno-to-postman): update comments to match current apis in bruno by @sanish-bruno in [#9075](https://github.com/usebruno/bruno/pull/9075)
- chore(design-system): added border specific colors tokens for themes by @sachin-thakur-bruno in [#8965](https://github.com/usebruno/bruno/pull/8965)
- ci: enable Windows Unit Tests by @prateek-bruno in [#8673](https://github.com/usebruno/bruno/pull/8673)
- chore: update grpc-js library by @sid-bruno in [#9053](https://github.com/usebruno/bruno/pull/9053)
- chore(eslint): added hooks dependecy dev by @sachin-thakur-bruno in [#9034](https://github.com/usebruno/bruno/pull/9034)
- chore: update swagger-ui-react to version 5.32.14 by @sid-bruno in [#9032](https://github.com/usebruno/bruno/pull/9032)
- test(cli): read the json report even if its one run or an array by @shubh-bruno in [#8988](https://github.com/usebruno/bruno/pull/8988)
- test(opencollection): cover multipart after yml reload by @Max-Reisinger in [#8938](https://github.com/usebruno/bruno/pull/8938)
- chore(deps): security cleanup by @sid-bruno in [#8956](https://github.com/usebruno/bruno/pull/8956)
- refactor(mock): rename validation functions and improve error handling by @naman-bruno in [#8954](https://github.com/usebruno/bruno/pull/8954)
- refactor(mock-server): remove updateMockDelay functionality by @naman-bruno in [#8952](https://github.com/usebruno/bruno/pull/8952)
- test(benchmark): add runner allocation memory benchmark by @chirag-bruno
- perf(runner): remove redundant deep clones of the runner results tree by @chirag-bruno

### New Contributors
* @Sudemc made their first contribution in https://github.com/usebruno/bruno/pull/8796
* @sbalagan22 made their first contribution in https://github.com/usebruno/bruno/pull/8707
* @ricciardelli made their first contribution in https://github.com/usebruno/bruno/pull/8681

**Full Changelog:** https://github.com/usebruno/bruno/compare/v4.1.0...v4.2.0

Related Repositories