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
affaan-m/ECC★ 285,699
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
react/react★ 251,622
The library for web and native user interfaces.
nodejs/node★ 122,511
Node.js JavaScript runtime ✨🐢🚀✨
Leonxlnx/taste-skill★ 100,554
Agent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
louislam/uptime-kuma★ 92,731
A fancy self-hosted monitoring tool