v3.2.0

usebruno/brunov3.2.0Mar 18, 2026by bijin-bruno

AI Summary

Major release featuring ZIP file import for collections, scratch requests, OpenAPI sync capabilities, OAuth2 tokenType support, gRPC Unix Socket and Named Pipes support, interface zoom controls, and improved onboarding for new users.

Key Highlights

  • Red status indicator for script errors in Request, Collection, and Folder Script tabs
  • ZIP file import for collections
  • Scratch requests feature
  • OpenAPI sync with environment variables support
  • gRPC - Unix Socket and Named Pipes support
  • Interface zoom control settings
  • OAuth2 tokenType support

New Features

  • Red status indicator for script errors
  • Set map support for logging
  • ZIP file import for collections
  • Translation capabilities for Bruno to Postman conversion
  • Direct cookie access methods translations
  • Axios shim error handling with tests
  • Missing env APIs support
  • Scratch requests
  • Import collection from git URL moved from enterprise to opensource
  • Remove headers from request using scripts
  • Object Variable Interpolation
  • F2 rename shortcut
  • Reveal in file manager option
  • Interface zoom control
  • Skip request and response bodies in reporter output
  • Support multipart/mixed
  • Onboarding preferences and welcome modal
  • TokenType support for OAuth2
  • Improved stack traces for script and test failures
  • Add request CTA for empty collections/folders
  • API spec export with environment variables
  • Inline create collection and workspace editor
  • OpenAPI sync
  • Temporary workspace creation
  • Deferred loading for DotEnvFileEditor
  • hasCookie function for cookie jar shim
  • gRPC Unix Socket and Named Pipes
  • Custom mount path for Vault AppRole auth
  • Workspace-level git tab
  • History logging for collection runner

Full Release Notes

# Changelog

### Features
- feat: Red status indicator for script errors in Request, Collection, and Folder Script tabs by @Pragadesh-45 in [#7035](https://github.com/usebruno/bruno/pull/7035)
- feat: set map support for logging by @james-ha-bruno in [#6043](https://github.com/usebruno/bruno/pull/6043)
- feat: add ZIP file import for collections by @naman-bruno in [#7063](https://github.com/usebruno/bruno/pull/7063)
- feat: enhance translation capabilities for Bruno to Postman conversion by @sanish-bruno in [#7052](https://github.com/usebruno/bruno/pull/7052)
- feat: add translations for direct cookie access methods by @sanish-bruno in [#7070](https://github.com/usebruno/bruno/pull/7070)
- feat: enhance axios shim error handling and add comprehensive tests by @Pragadesh-45 in [#6349](https://github.com/usebruno/bruno/pull/6349)
- feat: support missing env apis by @sanish-bruno in [#7069](https://github.com/usebruno/bruno/pull/7069)
- feat: scratch requests by @chirag-bruno and @gopu-bruno in [#7087](https://github.com/usebruno/bruno/pull/7087)
- feat: move import collection from git url and spec url from enterprise edition to opensource by @abhishek-bruno in [#7127](https://github.com/usebruno/bruno/pull/7127)
- feat: remove headers from request using scripts by @shubh-bruno in [#7122](https://github.com/usebruno/bruno/pull/7122)
- feat: Object Variable Interpolation by @TheUnCola in [#6317](https://github.com/usebruno/bruno/pull/6317)
- feat: add some doc about variable usage by @simonaubertbd in [#6443](https://github.com/usebruno/bruno/pull/6443)
- feat: f2-rename-shortcut by @tobiasgjerstrup in [#7077](https://github.com/usebruno/bruno/pull/7077)
- feat: add reveal in file manager option to workspace collections menu by @datlechin in [#6944](https://github.com/usebruno/bruno/pull/6944)
- feat: refactor github workflow for tests by @bijin-bruno in [#7252](https://github.com/usebruno/bruno/pull/7252)
- feat: interface zoom control settings by @shubh-bruno in [#7255](https://github.com/usebruno/bruno/pull/7255)
- feat: add options to skip request and response bodies in reporter output by @abhishek-bruno in [#7114](https://github.com/usebruno/bruno/pull/7114)
- feat: change default collection location to default location by @gopu-bruno in [#7291](https://github.com/usebruno/bruno/pull/7291)
- feat: Support `multipart/mixed` by @Pragadesh-45 in [#7155](https://github.com/usebruno/bruno/pull/7155)
- feat: implement onboarding preferences and welcome modal for new users by @naman-bruno in [#7319](https://github.com/usebruno/bruno/pull/7319)
- feat: add `tokenType` support for OAuth2 by @lohit-bruno in [#7314](https://github.com/usebruno/bruno/pull/7314)
- feat: improve stack traces for script and test failures by @gopu-bruno in [#7181](https://github.com/usebruno/bruno/pull/7181)
- feat(sidebar): show "Add request" cta when collection or folder is empty by @gopu-bruno in [#7273](https://github.com/usebruno/bruno/pull/7273)
- feat: enhance API spec export with environment variables support by @abhishek-bruno in [#7170](https://github.com/usebruno/bruno/pull/7170)
- feat: inline create collection and workspace editor by @gopu-bruno in [#7324](https://github.com/usebruno/bruno/pull/7324)
- feat: openapi sync by @abhishek-bruno in [#7279](https://github.com/usebruno/bruno/pull/7279)
- feat: implement temporary workspace creation and confirmation flow by @naman-bruno in [#7462](https://github.com/usebruno/bruno/pull/7462)
- feat: integrate deferred loading for saving state in DotEnvFileEditor by @naman-bruno in [#7463](https://github.com/usebruno/bruno/pull/7463)
- feat: remove .bru reference in error message by @fantpmas in [#7479](https://github.com/usebruno/bruno/pull/7479)
- feat(bruno-js): add hasCookie function to cookie jar shim by @sanish-bruno in [#7501](https://github.com/usebruno/bruno/pull/7501)
- feat: gRPC - Unix Socket and Named Pipes by @chirag-bruno in [#7021](https://github.com/usebruno/bruno/pull/7021)
- feat: add custom mount path for Vault AppRole auth by @gopu-bruno
- feat: add iteration data translations for Bruno and Postman by @sanish-bruno
- feat: CLI release check skeleton job to workflow by @helloanoop
- feat: add workspace-level git tab and restore collection toolbar features by @chirag-bruno
- feat: add history logging for collection runner and fix interpolation in history url by @gopu-bruno
- feat: enhance telemetry tracking for session and activation actions by @naman-bruno
- feat: QOL additions to trial flow by @sid-bruno
- feat: include environments in API spec export functionality by @abhishek-bruno
- feat: welcome modal A/B testing by @naman-bruno
- feat: openapi sync limit by @abhishek-bruno
- feat: add periodic license re-verification to LicenseGuard by @naman-bruno
- feat: enhance telemetry tracking for OpenAPI sync and git by @naman-bruno

### Fixes
- fix: add missing URL helper translations for Bruno to Postman export by @pooja-bruno in [#7026](https://github.com/usebruno/bruno/pull/7026)
- fix: preserve empty query param equal sign by @pooja-bruno in [#7031](https://github.com/usebruno/bruno/pull/7031)
- fix: runner results enhancement by @sanjaikumar-bruno in [#7040](https://github.com/usebruno/bruno/pull/7040)
- fix: code editor null value crash by @pooja-bruno in [#7039](https://github.com/usebruno/bruno/pull/7039)
- fix: close saved deleting collections by @chirag-bruno in [#7048](https://github.com/usebruno/bruno/pull/7048)
- fix: improve error message formatting by @chirag-bruno in [#7059](https://github.com/usebruno/bruno/pull/7059)
- fix: import tests by @naman-bruno in [#7067](https://github.com/usebruno/bruno/pull/7067)
- fix: header and var tooltip overflow by @pooja-bruno in [#7082](https://github.com/usebruno/bruno/pull/7082)
- fix: disable text-overflow ellipsis on checkbox column by @gopu-bruno in [#7080](https://github.com/usebruno/bruno/pull/7080)
- fix: openapi content level example by @pooja-bruno in [#7091](https://github.com/usebruno/bruno/pull/7091)
- fix(`bruno-requests`): mark `node.js built-in` modules as `external` in rollup config by @lohit-bruno in [#7095](https://github.com/usebruno/bruno/pull/7095)
- fix: improve value handling in editor components by @sid-bruno in [#7098](https://github.com/usebruno/bruno/pull/7098)
- fix: env color picker ui by @pooja-bruno in [#7096](https://github.com/usebruno/bruno/pull/7096)
- fix: improve environment variable comparison by stripping UIDs by @sid-bruno in [#7100](https://github.com/usebruno/bruno/pull/7100)
- fix: filter existing paths for apispec in workspace by @naman-bruno in [#7104](https://github.com/usebruno/bruno/pull/7104)
- fix: persist environment color on import/export by @pooja-bruno in [#7045](https://github.com/usebruno/bruno/pull/7045)
- fix: update codemirror bg for pastel light theme by @gopu-bruno in [#7110](https://github.com/usebruno/bruno/pull/7110)
- fix: pass `app-level proxy` config to `bru.sendRequest` by @lohit-bruno in [#7113](https://github.com/usebruno/bruno/pull/7113)
- fix: example response statusCode not persisted in yml file by @abhishek-bruno in [#7117](https://github.com/usebruno/bruno/pull/7117)
- fix(save-all): fix save all modified requests while closing the app by @bijin-bruno in [#7118](https://github.com/usebruno/bruno/pull/7118)
- fix: enhance tag handling and validation in collection import/export by @abhishek-bruno in [#7107](https://github.com/usebruno/bruno/pull/7107)
- fix(node-vm): `scripting context` and `module resolution` by @lohit-bruno in [#7033](https://github.com/usebruno/bruno/pull/7033)
- fix: graphQL variables interpolation consistency (UI and CLI) by @sanjaikumar-bruno in [#7049](https://github.com/usebruno/bruno/pull/7049)
- fix: multipart form-data file param export/import for Postman by @chirag-bruno in [#7111](https://github.com/usebruno/bruno/pull/7111)
- fix: cURL import NDJSON in request body as text by @shubh-bruno in [#7002](https://github.com/usebruno/bruno/pull/7002)
- fix: env draft loss on color change and rename by @pooja-bruno in [#7130](https://github.com/usebruno/bruno/pull/7130)
- fix: update header validation test to use triple-click for selecting all text by @bijin-bruno in [#7140](https://github.com/usebruno/bruno/pull/7140)
- fix: flaky tests - standardize save keyboard shortcut across tests by @bijin-bruno in [#7141](https://github.com/usebruno/bruno/pull/7141)
- fix: improve visual hierarchy of markdown headers in docs by @SahilShameerDev in [#7145](https://github.com/usebruno/bruno/pull/7145)
- fix: importing from openapi excludes documentation for requests by @NuageTompis in [#6439](https://github.com/usebruno/bruno/pull/6439)
- fix: incorrect response formatting when saving examples by @jokj624 in [#6528](https://github.com/usebruno/bruno/pull/6528)
- fix: sse response download button by @pooja-bruno in [#7081](https://github.com/usebruno/bruno/pull/7081)
- fix: parsing dates from insomnia by @egmen in [#7003](https://github.com/usebruno/bruno/pull/7003)
- fix: cookies not being set when follow redirect = false by @JeroenVinke in [#6679](https://github.com/usebruno/bruno/pull/6679)
- fix: collection scope undefined var by @pooja-bruno in [#7211](https://github.com/usebruno/bruno/pull/7211)
- fix: import ndjson-curl handling binary data check with type file or not by @shubh-bruno in [#7210](https://github.com/usebruno/bruno/pull/7210)
- fix: env var edit by @pooja-bruno in [#7066](https://github.com/usebruno/bruno/pull/7066)
- fix: incorrect translations by @sanish-bruno in [#7214](https://github.com/usebruno/bruno/pull/7214)
- fix: consistent button size on save requests modal by @bastiendmt in [#7197](https://github.com/usebruno/bruno/pull/7197)
- fix: `oauth2 credential` management improvements by @lohit-bruno in [#7220](https://github.com/usebruno/bruno/pull/7220)
- fix: load `shell environment variables` on app startup by @lohit-bruno in [#7223](https://github.com/usebruno/bruno/pull/7223)
- fix: call `initializeShellEnv` directly in app ready handler by @lohit-bruno in [#7228](https://github.com/usebruno/bruno/pull/7228)
- fix: updated error message for renaming requests under same parent entity by @shubh-bruno in [#7010](https://github.com/usebruno/bruno/pull/7010)
- fix: collection reorder not persisting after restart by @sanjaikumar-bruno in [#7093](https://github.com/usebruno/bruno/pull/7093)
- fix: openapi cli import by @pooja-bruno in [#7028](https://github.com/usebruno/bruno/pull/7028)
- fix: response viewer not updating when focused (read-only editors) by @sanjaikumar-bruno in [#7218](https://github.com/usebruno/bruno/pull/7218)
- fix: phone number faker function by @pooja-bruno in [#7046](https://github.com/usebruno/bruno/pull/7046)
- fix: skip null query parameters in Postman to Bruno conversion by @sanish-bruno in [#7193](https://github.com/usebruno/bruno/pull/7193)
- fix: default `normalizeProxyUrl` to `http` protocol for all proxy URLs by @lohit-bruno in [#7285](https://github.com/usebruno/bruno/pull/7285)
- fix: Environment Search Behavior, UI Updates, and Result Handling by @Pragadesh-45 in [#7287](https://github.com/usebruno/bruno/pull/7287)
- fix: storing status in example for yml file by @shubh-bruno in [#6876](https://github.com/usebruno/bruno/pull/6876)
- fix(graphql): handle invalid schemas gracefully in query editor by @chirag-bruno in [#7269](https://github.com/usebruno/bruno/pull/7269)
- fix(schema): support all Unicode letters in tag validation by @numsu in [#7311](https://github.com/usebruno/bruno/pull/7311)
- fix(batch-events): fix order of directory file and folder events by @sid-bruno in [#7300](https://github.com/usebruno/bruno/pull/7300)
- fix: tags validation error for openapi import for BRU and YAML compatibility by @shubh-bruno in [#7294](https://github.com/usebruno/bruno/pull/7294)
- fix: wrong workspace request shown after closing tab by @sanjaikumar-bruno in [#7259](https://github.com/usebruno/bruno/pull/7259)
- fix: Postman import compatibility for multipart form-data file params by @chirag-bruno in [#7325](https://github.com/usebruno/bruno/pull/7325)
- fix(`oauth2`): prevent false callback matches on `root path URLs` by @lohit-bruno in [#7315](https://github.com/usebruno/bruno/pull/7315)
- fix: ensure system proxy is initialized before use in network calls by @lohit-bruno in [#7264](https://github.com/usebruno/bruno/pull/7264)
- fix: allow user to delete default bruno headers in pre-request by @shubh-bruno in [#7331](https://github.com/usebruno/bruno/pull/7331)
- fix: file extension for clone and rename request by @pooja-bruno in [#7278](https://github.com/usebruno/bruno/pull/7278)
- fix: persistence of additional parameters using open-collection format by @xIceFox in [#7296](https://github.com/usebruno/bruno/pull/7296)
- fix: enable `SSL session caching` and `HTTP agent reuse` for faster consecutive requests by @kxbnb and @lohit-bruno in [#6987](https://github.com/usebruno/bruno/pull/6987)
- fix: prevent triggering rename action with modifier keys by @naman-bruno in [#7322](https://github.com/usebruno/bruno/pull/7322)
- fix: show '+ Add request' when only transient items exist by @gopu-bruno in [#7361](https://github.com/usebruno/bruno/pull/7361)
- fix: focus and text selection in workspace creation flow by @gopu-bruno in [#7363](https://github.com/usebruno/bruno/pull/7363)
- fix: use Title Case for default Untitled Collection and Untitled Workspace names by @gopu-bruno in [#7389](https://github.com/usebruno/bruno/pull/7389)
- fix: preserve existing `process.env` values in `initializeShellEnv` by @lohit-bruno in [#7390](https://github.com/usebruno/bruno/pull/7390)
- fix: update collection path handling to use path.join for consistency by @naman-bruno in [#7394](https://github.com/usebruno/bruno/pull/7394)
- fix: app crash error (Rendered fewer hooks than expected) by @sanish-bruno in [#7407](https://github.com/usebruno/bruno/pull/7407)
- fix: normalize paths when comparing workspace and redux collection paths on Windows by @chirag-bruno in [#7436](https://github.com/usebruno/bruno/pull/7436)
- fix: cookie wrapper callback mode returns never-resolving Promise by @lohit-bruno in [#7442](https://github.com/usebruno/bruno/pull/7442)
- fix: multipart header check by @pooja-bruno in [#7444](https://github.com/usebruno/bruno/pull/7444)
- fix(collection-watcher): prevent crash when deleting collections by @abhishek-bruno in [#7470](https://github.com/usebruno/bruno/pull/7470)
- fix: add missing scrollbar-color property by @bohat-y in [#7481](https://github.com/usebruno/bruno/pull/7481)
- fix(RequestTabPanel): update loading message for better user feedback by @chirag-bruno in [#7492](https://github.com/usebruno/bruno/pull/7492)
- fix: loading state for ZIP file import by @naman-bruno
- fix: clear trial license on deactivation by @sid-bruno
- fix: git commit details page not able scrollable to bottom by @gopu-bruno
- fix: update visual diff handling and improve auth, body rendering by @naman-bruno
- fix: cli duration summary by @pooja-bruno
- fix: history tab layout rendering and ui distorted issues by @gopu-bruno
- fix: correct report parsing in CLI combined environment tests by @abhishek-bruno
- fix: postman zip import test by @bijin-bruno
- fix: make history log scrollable to bottom with dev tools open by @gopu-bruno
- fix: import collection workspace toast by @pooja-bruno
- fix: use `getOrCreateAgents` in license and vault utils by @lohit-bruno
- fix: reset trial used by @sid-bruno
- fix: auto populate location when cloning git repo workspace by @gopu-bruno
- fix: ensure preferences are decrypted before sending to renderer by @naman-bruno
- fix: update workspace creation logic to exclude creating workspaces by @naman-bruno

### Others
- Enable encodeUrl setting to control URL encoding in generated snippets by @sanish-bruno in [#7187](https://github.com/usebruno/bruno/pull/7187)
- Make autocomplete work with substrings by @fantpmas in [#5189](https://github.com/usebruno/bruno/pull/5189)
- handle unsaved changes in dot env file editor by @naman-bruno in [#7094](https://github.com/usebruno/bruno/pull/7094)
- chore: update swagger-ui-react by @sanjaikumar-bruno in [#7086](https://github.com/usebruno/bruno/pull/7086)
- refactor: enhance gRPC methods loading with cache indication by @sanish-bruno in [#7022](https://github.com/usebruno/bruno/pull/7022)
- test: fix breaking tests by @sid-bruno in [#7132](https://github.com/usebruno/bruno/pull/7132)
- chore: fix flaky tests by @bijin-bruno in [#7144](https://github.com/usebruno/bruno/pull/7144)
- chore: fix flaky playwright tests by @bijin-bruno in [#7159](https://github.com/usebruno/bruno/pull/7159)
- chore(playwright): enhance playwright config to reduce flakiness by @bijin-bruno in [#7174](https://github.com/usebruno/bruno/pull/7174)
- chore: redux state to keep currently active script tab in state by @Joren-vanGoethem in [#6947](https://github.com/usebruno/bruno/pull/6947)
- Clear input after adding a tag by @K3UL in [#7180](https://github.com/usebruno/bruno/pull/7180)
- chore: fix tab selection by @bijin-bruno in [#7260](https://github.com/usebruno/bruno/pull/7260)
- perf: Improve search performance in code editor by @Its-treason in [#6920](https://github.com/usebruno/bruno/pull/6920)
- fix#6247: Interpolate dynamic variables in path param by @NikHillAgar in [#6251](https://github.com/usebruno/bruno/pull/6251)
- Force text/plain mimetype when copying request code by @austenadler in [#7321](https://github.com/usebruno/bruno/pull/7321)
- chore: copyright year to 2026 by @melroy89 in [#7302](https://github.com/usebruno/bruno/pull/7302)
- chore: update coderabbit instructions to make sure the code is os agnostic by @bijin-bruno in [#7355](https://github.com/usebruno/bruno/pull/7355)
- refactor: comment out unused APIs by @sanish-bruno in [#7323](https://github.com/usebruno/bruno/pull/7323)
- Mark test script errors as failed in runner by @KaranPradhan266 in [#6261](https://github.com/usebruno/bruno/pull/6261)
- Enhance error handling for script execution by introducing isScriptError flag in test results by @sanjaikumar-bruno in [#7029](https://github.com/usebruno/bruno/pull/7029)
- refactor: update path imports to use utils/common/path by @naman-bruno in [#7440](https://github.com/usebruno/bruno/pull/7440)
- refactor: simplify environment list actions and improve styling by @Pragadesh-45 in [#7459](https://github.com/usebruno/bruno/pull/7459)
- refactor: optimize debounced save functionality by @naman-bruno in [#7495](https://github.com/usebruno/bruno/pull/7495)
- refactor: improve OpenAPI spec export by combining duplicate status codes by @sanish-bruno
- chore: fix copy-js playwright test by @bijin-bruno
- chore: fix auto save playwright test by @bijin-bruno
- chore(playwright): postman import test by @bijin-bruno
- refactor: consolidate proxy/TLS agent logic into shared getPreferencesHttpHttpsAgents by @lohit-bruno
- refactor: replace trial modal with workspace limit modal by @naman-bruno

## New Contributors

* @SahilShameerDev made their first contribution in https://github.com/usebruno/bruno/pull/7145
* @NuageTompis made their first contribution in https://github.com/usebruno/bruno/pull/6439
* @TheUnCola made their first contribution in https://github.com/usebruno/bruno/pull/6317
* @simonaubertbd made their first contribution in https://github.com/usebruno/bruno/pull/6443
* @egmen made their first contribution in https://github.com/usebruno/bruno/pull/7003
* @Joren-vanGoethem made their first contribution in https://github.com/usebruno/bruno/pull/6947
* @tobiasgjerstrup made their first contribution in https://github.com/usebruno/bruno/pull/7077
* @bastiendmt made their first contribution in https://github.com/usebruno/bruno/pull/7197
* @K3UL made their first contribution in https://github.com/usebruno/bruno/pull/7180
* @rameshsunkara made their first contribution in https://github.com/usebruno/bruno/pull/7207
* @datlechin made their first contribution in https://github.com/usebruno/bruno/pull/6944
* @numsu made their first contribution in https://github.com/usebruno/bruno/pull/7311
* @austenadler made their first contribution in https://github.com/usebruno/bruno/pull/7321
* @melroy89 made their first contribution in https://github.com/usebruno/bruno/pull/7302
* @xIceFox made their first contribution in https://github.com/usebruno/bruno/pull/7296
* @bohat-y made their first contribution in https://github.com/usebruno/bruno/pull/7481

**Full Changelog:** https://github.com/usebruno/bruno/compare/v3.1.4...v3.2.0