What changed in Bruno from 3 to 4
2 releases numbered after v3.5.3 up to and including v4.1.0, stable releases only. v3.5.3 and v4.1.0 are the newest stable releases of 3 and 4 we track; this page follows them as new ones ship.
54 changes across 2 releases
Added 39
- Mock Server implementation
- Rich text docs editor
- Add --global-env-var flag to override global environment variables at runtime in CLI
- Global client certs and ability to disable individual client certs
- Handle authorization header leaks to third party servers on redirect
- Search filter to environment selector dropdown
- Default env to presets
- Support drag-and-drop and alphabetical sorting for variables
- Sorting to the secrets tab
- Open multiple collections from a monorepo
- Description text to open collection selection modal
- GCP Secret Manager support
- Git remote operation modals and enhanced branch selection UI
- Git proxy environment configuration
- Network config for git provider APIs
- Inform user when edits are being made on protected branches
- Warning about unsynced collections excluded from Fetch in Bruno embed
- Report app version, OS, arch and telemetry id on licence calls
- Migrate ctx API to bru.ctx
- Show human-readable size for unloaded requests in overview
- File binary description implementation
- AI model handling with reasoning support
- Variable descriptions
- Active workspace tab type tracking
- Option to edit bruno version in collection overview
- Akamai auth integration
- Security preferences management to AI settings
- Collection name to generate doc modal with minor UI changes
- Persist env, global-env, and collection variable changes from scripts in CLI
- Set yml as default file format across all types of imports
- Pkg configuration for installation location in Electron
- Persist scripted variable changes by default and re-enable disabled scripting APIs
- AI mode toggle UI and add AI support for folder and collection
- Split variables and secrets into separate tabs in environments
- AI chat sidebar with code block and diff view components
- OpenAI-compatible endpoints support for AI
- WOOF easter egg
- App functionality
- Resizable columns in network panel
Changed 2
- Updated presets design
- Updated dropdown with menu dropdown and label weight UX changes
Fixed 13
- Stop AWS V4 auth headers from leaking on cross-origin redirects
- Block duplicate secret names to prevent value loss
- Global environment variables for apps
- Re-add new request shortcut
- Stopped the same collection from rendering twice with conflicting status
- Show only the remove option for the failed collection in workspace overview
- Notify about collections that fail to open in workspace
- Switch to default workspace on close so header shows correct name
- Fixed search and replace input border in editor
- Tab indentation on code blocks
- Add guessed language in language dropdown picker
- Allow app keybindings if that keybinding is not present in rich text editor
- Warn when binary body file is missing on disk
Original release notes, newest first
The list above is our reading of these notes; the originals from Bruno are here, one fold per release.
v4.1.0
Changelog
Features
- feat: Mock Server implementation by @utkarsh-bruno and @shubh-bruno in #8734
- feat(docs): Rich text docs editor by @Gopi-bruno in #8559
- feat(cli): add --global-env-var to override global environment variables at runtime by @abhishekp-bruno in #8620
- feat(client certs): add global client certs and allow disabling individual client certs. by @morsh-bruno in #8751
- feat(auth-headers): handling authorization header leaks to third party servers on redirect by @Gopi-bruno in #8380
- feat(envs): adding search filter to environment selector dropdown by @Gopi-bruno in #8277
- feat(environment): add default env to presets by @sachin-thakur-bruno in #8612
- feat: support drag-and-drop and alphabetical sorting for variables by @adwait-bruno in #8603
- feat: add sorting to the secrets tab as well by @adwait-bruno in #8871
- feat(collections): open multiple collections from a monorepo by @gopu-bruno in #8724
- feat(collections): add description text to open collection selection modal by @gopu-bruno in #8793
- feat(presets): updated presets design by @sachin-thakur-bruno in #8828
- feat(presets): updated dropdown with menu dropdown and label weight ux changes by @sachin-thakur-bruno in #8841
- feat(migrate): enhance migration modal to handle collection drafts by @naman-bruno in #8899
- feat: add migrate-to-YML pill to collection header by @naman-bruno in #8882
- feat(converters): add support for script execution flow in yml configuration by @naman-bruno in #8745
- feat: add preserve scripts option for Postman import/export by @gopu-bruno in #8726
- feat(snapshot): persisting sidebar state in the snapshot by @Gopi-bruno in #8328
- feat(code-mirror-search): add replace and replace-all with search position, debouncing and tests by @sachin-thakur-bruno in #8715
- feat(db): sqlite as a re-usable SDK for secondary queries by @chirag-bruno in #8533
- feat(request): warn when binary body file is missing on disk by @sanish-bruno and @rajashreehj-bruno in #8753
- feat(size/M): Default to no environments selected in the Generate Documentation modal by @sachin-bruno in #8785
- feat(ai): add focus for prompt input after AI response completion by @naman-bruno in #8747
- feat(secrets): add GCP Secret Manager support by @abhishekp-bruno
- feat(git): implement Git remote operation modals and enhance branch selection UI by @utkarsh-bruno
- feat(proxy): implement Git proxy environment configuration by @utkarsh-bruno
- feat(git-providers): apply network config for git provider APIs by @gopu-bruno
- feat(app/git): inform the user that edits are being made on protected branches by @sid-bruno
- feat(workspace): warning about unsynced collections excluded from Fetch in Bruno embed by @ravindra-bruno
- feat(license): report app version, OS, arch and telemetry id on licence calls by @hassan-bruno
Fixes
- fix(auth): stop AWS V4 auth headers from leaking on cross-origin redirects by @Gopi-bruno in #8893
- fix(secrets): block duplicate secret names to prevent value loss by @pooja-bruno in #8750
- fix(security): overflow on chip list styling by @naman-bruno in #8748
- fix(app): global environment variables for apps by @naman-bruno in #8900
- fix(app): re-add new request shortcut by @sid-bruno in #8805
- fix(workspace): stopped the same collection from rendering twice with conflicting status by @ravindra-bruno in #8947
- fix(workspace): showing only the remove option for the failed collection in workspace overview by @ravindra-bruno in #8932
- fix(workspace): notify about collections that fail to open in Workspa… by @ravindra-bruno in #8719
- fix(workspaces): switch to default workspace on close so header shows correct name by @ravindra-bruno in #8425
- fix(editor): fixed search and replace input border by @sachin-thakur-bruno in #8930
- fix(editor): tab indentation on code blocks by @sachin-thakur-bruno in #8926
- fix(editor): add guessed language in language dropdown picker by @sachin-thakur-bruno in #8925
- fix(editor): allow app keybindings if that keybindings is not present in rich text editor by @sachin-thakur-bruno in #8894
- fix(codemirror-search): keybinding for focusing search and replace inside the search container by @sachin-thakur-bruno in #8895
- fix(sidebar): prevent drag divider from disappearing on zoom-out by @gopu-bruno in #8266
- fix: OpenAPI Spec Viewer: throws resolver errors for
$refschemas by @arpit-bruno in #8892 - fix(openapi): strip trailing dots from operation names on import by @adwait-bruno in #8812
- fix: populate collection & folder docs on OpenAPI/swagger imports by @adwait-bruno in #8803
- fix(transient-request): unable to create transient request when preset is websocket by @chirag-bruno in #8889
- fix: cmd+w now works for transient tabs by @adwait-bruno in #8429
- fix: persist additional request values in preferences general tab save by @morsh-bruno in #8823
- fix(proxy): update timestamp label format by @abhishekp-bruno in #8870
- fix(ws): disable message queuing when in intermediate connection states by @sid-bruno in #8879
- fix(ws): remove auto-reconnect in websockets by @sid-bruno in #8605
- fix(ws): add height for ws msgs to fix search overlap by @sachin-thakur-bruno in #8814
- fix(mount): hydrate websocket message uids in the cached mount path by @chirag-bruno in #8862
- fix: change-version modal ui by @adwait-bruno in #8735
- fix: keep sort column header from shifting when the arrow appears by @adwait-bruno in #8833
- fix(generate-code): encode a literal colon in the path when url encoding is enabled by @pooja-bruno in #8834
- fix(generate-code): generate code for url interpolation by @pooja-bruno in #7308
- fix(presets): ux fixes for dropdown and icon spacing by @sachin-thakur-bruno in #8827
- fix: Description missing for the import export yml for the environments by @sachin-bruno in #8822
- fix: add dynamic font size adjustment for CodeMirror info display by @adwait-bruno in #8817
- fix(export/import): OpenCollection YAML drops collection and folder-level post-response variables by @sachin-bruno in #8815
- fix(node-vm): resolve npm modules from additionalContextRoots via native walk-up by @sanish-bruno in #8538
- fix(curl-import): treat inline --data-binary as body, not file by @pooja-bruno in #8617
- fix(dev-tools): console and network filter dropdown position to top if no space by @sachin-thakur-bruno in #8713
- fix(bruno-response): normalize response header name lookup to be case-insensitive by @abhishekp-bruno in #8461
- fix(runner): collection runner loader issue by @sharan-bruno in #8783
- fix: avoid network probe in PAC myIpAddress by @cyphercodes in #8588
- fix: url truncates in docs by @adwait-bruno in #8468
- fix: env configure remains visible by @adwait-bruno in #8530
- fix: Folder Sequencing When we try to move any folder at the bottom of the folders list by @ravindra-bruno in #8722
- fix(environment): auto save on env table removing some characters by @sachin-thakur-bruno in #8732
- fix(timeout): allow inherit request timeout for yaml requests by @shubh-bruno in #8746
- fix: binary body lost on importing from postman by @sanish-bruno and @rajashreehj-bruno in #8729
- fix(converters): add missing auth mappings on postman export, add additional parameters mapping on postman import by @morsh-bruno in #8494
- fix: failing test case fix by @utkarsh-bruno in #8801
- fix(git): fixing pac proxy and removing buildGitProxyEnv as the secondary proxy implementation by @utkarsh-bruno
- fix(git): use primary color for create branch cta by @gopu-bruno
- fix(git): update onClose to use handleBackToOverview by @naman-bruno
- fix(proxy-util): enhance proxy environment configuration by @utkarsh-bruno
- fix(GitHub): deduplicate instance URL save on OnBlur/Enter by @gopu-bruno
- fix(GitHub): prevent redundant URL saves in GitHub configuration by @naman-bruno
- fix: added Git submodule initialization and fetch for workspace collections by @ravindra-bruno
- fix(workspace): written .gitmodules for git-synced collections so submodules resolve by @ravindra-bruno
- fix(Embed): showing warning before sharing a workspace with unsynced changes by @ravindra-bruno
- fix(doc-url): replaced Fetch In Bruno doc url for workspace embeding by @ravindra-bruno
- fix(watcher): improve unlink logic to handle both formats by @naman-bruno
- fix(external-secrets): correct external secret variables autocomplete duplicates and its variable-info scope by @lohit-bruno
- fix: added a min and max height with an overflow to avoid the resizing based on the remotes fetched by @utkarsh-bruno
- fix(openapi): export scheme-less request URLs as server entries by @adwait-bruno
- fix(export): Postman export modal rendering in Share Collection by @gopu-bruno
- fix(default-env): load env from file destructing by @sachin-thakur-bruno
- fix(runner): Collection Runner - Loader still keeps running even after Cancelling the execution by @sharan-bruno
- fix(UI): In Runner post execution "Run again" button is missing by @sharan-bruno
- fix(collection-runner): disable runner in iterations count by @shubh-bruno
Others
- feat(tests): enhance Playwright configuration for sharded CI runs by @sid-bruno in #8742
- security(ipc): confine file-write handlers to known collections and api specs by @chirag-bruno in #8274
- refactor(ai): moved AI Assist from floating overlay into request pane and collection/folder settings tab bars by @ravindra-bruno in #8693
- refactor(ai): update API key handling in openai comp providers by @naman-bruno in #8749
- refactor(tests): update data type assertions to use data-selected-type attribute for consistency by @bijin-bruno in #8731
- yml migration rework by @naman-bruno in #8795
- reported how many collections failed to open on workspace load by @ravindra-bruno in #8831
- Added the ignore for the collection nested folders by @ravindra-bruno in #8725
- Added the fix for bru.runner.stopExecution() while running collection run from tests by @ravindra-bruno in #8720
- ci: move all linux to self hosted by @sid-bruno in #8791
- ci(tests-macos): disable mac runners on each PR by @sid-bruno in #8752
- test: fix the draft indicator tests for collection client certs by @morsh-bruno in #8824
- test(converters): add round trip tests for Postman <-> Bruno converters by @morsh-bruno in #8534
- chore: enhance claude rules & skills by @bijin-bruno in #8829
- chore(design-system): added segmented control component with storybook by @sachin-thakur-bruno in #8683
- chore: PR checklist update by @sachin-thakur-bruno in #8806
- chore(eslint): disable autofix for const by @sachin-thakur-bruno in #8760
- chore(eslint): adds eslint config warnings for unused-vars, debuggers, duplicate-imports by @sachin-thakur-bruno in #8505
- chore(pr-decription): updated pr description by @sachin-thakur-bruno in #8786
- chore(coderabbit): adds coderabbit instructions for adding new file as ts/tsx in bruno app by @sachin-thakur-bruno in #8717
- fix(tests): jest mock for css imports and change paste timer by @sid-bruno in #8858
- fix(e2e): Playwright failures from mock server and lazy mount by @sid-bruno in #8835
- added the validations check and added the ux for this by @ravindra-bruno
- feat(telemetry): instrument app lifecycle and monetization events (app_first_launched, first_request_sent, paywall_viewed, monetization_cta_clicked, paid_state_recognized) and stamp event_version on all desktop events via shared capture by @ankit-bruno
- feat(telemetry): add trial flow events with classified failure reasons and trial-window boundaries for session_activity by @ankit-bruno
- fix(tests): pass tmpDir to CLI run commands in integration tests by @sanish-bruno
- fix(test): postman to bruno test assertion by @sachin-thakur-bruno
- fix(RunnerResults): add data-testid attribute to cancel button by @sanish-bruno
New contributors
- @morsh-bruno made their first contribution in https://github.com/usebruno/bruno/pull/8494
- @cyphercodes made their first contribution in https://github.com/usebruno/bruno/pull/8588
- @Gopi-bruno made their first contribution in https://github.com/usebruno/bruno/pull/8328
- @arpit-bruno made their first contribution in https://github.com/usebruno/bruno/pull/8892
Full Changelog: https://github.com/usebruno/bruno/compare/v4.0.0...v4.1.0
v4.0.0
Changelog
Features
- feat(app): migrate ctx API to bru.ctx by @gopu-bruno in #8557
- feat(overview): show human-readable size for unloaded requests by @chirag-bruno in #8580
- feat(description): file binary description implementation by @sid-bruno in #8434
- feat(ai): AI model handling with reasoning support by @naman-bruno in #8539
- feat: variable descriptions by @sid-bruno in #8269
- feat(snapshot): implement active workspace tab type tracking by @sid-bruno in #8487
- feat: Added the option for bruno version edit in the collection overview by @sachin-bruno in #8424
- feat(auth): akamai auth integration by @shubh-bruno in #8199
- feat(ai): add security preferences management to AI settings by @naman-bruno in #8453
- feat: Added collection name and minor UI changes to the generate doc modal by @sachin-bruno in #8391
- feat(cli): persist env, global-env, and collection var changes from scripts by @sanish-bruno in #8387
- feat(import): set yml as a default file format across all types of imports by @sharan-bruno in #8363
- feat(electron): add pkg configuration for installation location by @sid-bruno in #8403
- feat(variables): persist scripted variable changes by default and re-enable disabled scripting APIs by @sanish-bruno in #8315
- feat(ai): mode toggle UI and add AI support for folder & collection by @naman-bruno in #8385
- feat(environments): split variables and secrets into separate tabs by @pooja-bruno in #8191
- feat(ai): add AI chat sidebar with code block and diff view components by @naman-bruno in #8358
- feat(ai): OpenAI-compatible endpoints support by @naman-bruno in #8365
- feat(woof): add WOOF easter egg by @sanish-bruno in #8301
- feat(app): introduce app functionality by @naman-bruno in #8338
- feat(network-ui): added resizable columns in network panel by @sachin-thakur-bruno in #8265
- feat: integrate Markdown into NotificationDetail by @naman-bruno in #8335
- feat(ai): implement AI autocomplete by @naman-bruno in #8300
- feat: add cli offline bundle script by @sid-bruno in #8192
- feat: faster collection mount via file cache (Beta) by @chirag-bruno in #8222
- feat(ai-assist): add docs generation with folder and collection context by @utkarsh-bruno and @ravindra-bruno in #8246
- feat: Choose environments to include and show versions in the Generate Documentation modal by @sachin-bruno in #8268
- feat: variable
data typessupport by @lohit-bruno in #8046 - feat: redesign notification modal by @prateek-bruno in #8140
- feat(websocket): show full message name in a tooltip on hover by @pooja-bruno in #8299
- feat(import): hide File Format option and default collections to Open… by @ravindra-bruno in #8247
- feat: implement file mode by @naman-bruno, @shubh-bruno, and @chirag-bruno in #8258
- feat(openapi-sync): preserve user-configured request values on sync by @sundram-bruno in #8204
- feat(app): scroll to and highlight error line on script error by @pooja-bruno in #8183
- feat(dev-tools-rquest-resize): dev tools details panel can be resized horizontally via a drag handle by @sachin-thakur-bruno in #8234
- feat(dev-tools): adds sorting on columns with verticle borders by @sachin-thakur-bruno in #8238
- feat(workspace): move external collections into the workspace by @gopu-bruno in #8196
- feat: integrate AIAssist for script editing by @naman-bruno in #8220
- feat(ws): multiple messages support in websockets by @pooja-bruno in #8115
- feat(ai): implement organization policy checks for AI features by @naman-bruno
- feat: add trial upgrade dynamic url flow by @prateek-bruno
- feat(telemetry): add per-generation documentation telemetry (BRU-3673) by @arpit-bruno
- feat: secrets managers ui revamp by @lohit-bruno
- feat(telemetry): track v2 collection mount (file cache) usage by @chirag-bruno
- feat(notifications): enhance notification handling by @naman-bruno
- feat(runner): revamp runner results table by @chirag-bruno
- feat(mount): support js files in collection parsing and tree building by @chirag-bruno
- feat(electron): add pkg configuration for installation location by @sid-bruno
Fixes
- fix(app): point generated docs to api-docs CDN path by @sundram-bruno in #8633
- fix(variable-tooltip): mask secret variables of non-string dataType by @pooja-bruno in #8606
- fix(description): bulk edit round trip looses description information by @sid-bruno in #8595
- fix: remove broken markdown in README_pt_br by @BraianS in #8375
- fix(ui): Added Horizontal Scroll On CollectionHeader to avoid overlapping and squeezing of contents by @ravindra-bruno in #8511
- fix(ui): websocket and grpc tooltip overflow fixed in request panel by @sachin-thakur-bruno in #8544
- fix: handle missing location header in redirect error response by @Pragadesh-45 in #7725
- fix(oauth2): prevent code injection in OAuth2 callback handling by @abhishekp-bruno and @kOaDT in #8405
- fix: system proxy refresh by @abhishekp-bruno and @sid-bruno in #8535
- fix(ui): fixed overflow size column issue on first load by @sachin-thakur-bruno in #8525
- fix(ToggleSwitch): correct onChange handler for response pane by @sid-bruno in #8520
- fix(openapi): validate API spec imports by @adwait-bruno in #8322
- fix(app): scope env variable/secret search per tab by @pooja-bruno in #8491
- fix(request-panel): changed request panel static width to percentage width of screen width by @sachin-thakur-bruno in #8499
- fix(snapshot): active workspace restoration from snapshot by @sid-bruno in #8392
- fix(variables): correct scripted-variable persistence races and cross-request propagation by @sanish-bruno in #8406
- fix: Draft icon indicator on Workspace Environment tab by @adwait-bruno in #8342
- fix(app): move env save-all icon to header actions by @pooja-bruno in #8449
- fix(import): linting issue in Import fails for gRPC request without URL in exported collection by @sharan-bruno in #8462
- fix: serialize object variable values before copying to clipboard by @adwait-bruno in #8362
- fix(import): Import fails for gRPC request without URL in exported collection by @sharan-bruno in #8367
- fix(lang): filter multipart multi file by @sid-bruno in #8444
- fix(workspace-watcher): use workspace-environment IPC channels so env file changes hot-reload by @sanish-bruno in #8370
- fix(openapi): copy cURL icon now respects the theme variables by @adwait-bruno in #8314
- fix: prevent redundant workspace switch toast by @DeviSriSaiCharan in #8229
- fix(transient): scope bruno- lookup to transient base, not full path by @chirag-bruno in #8273
- fix: correctly parse insomnia exported yaml by @prateek-bruno in #7966
- fix(import): Postman import: OAuth2 tokenPlacement not set correctly, Header Prefix field hidden and value lost by @rajashreehj-bruno in #8197
- fix(request-parser): preserve literal colon path segments without path param value by @utkarsh-bruno in #8157
- fix(ui): open response pane at a minimum height on expand by @gopu-bruno in #8236
- fix: Preserve folder order from seq attribute by @sachin-bruno in #8213
- fix(sse): sse response body is empty in res.getBody() for app and cli by @sachin-thakur-bruno in #8212
- fix: open panes at default size on expand from collapsed state by @gopu-bruno in #8133
- fix(ui): prevent empty header row from persisting state and crashing CLI by @sharan-bruno in #8167
- fix(cli): use path name for classname in JUnit reports instead of request URL by @sharan-bruno in #8169
- fix(grpc): gRPC request loses all messages except the first on save for yaml collection by @sharan-bruno in #8203
- fix(generate-code): generate code URL issues by @shubh-bruno in #8136
- fix(ui): correct “modified” indicator state across collection, folder, request, and presets/auth tabs (#3386) by @sharan-bruno in #8027
- fix: show correct New Request shortcut in response placeholder by @gengjiawen in #8116
- fix(postman-import): OAuth2 Implicit Grant Type Silently Converted to Client Credentials on Import by @rajashreehj-bruno in #8113
- fix(ui): use primary accent in OpenAPI Sync settings modal by @sundram-bruno in #8161
- fix: Remove Beta badge from openAPI sync by @sachin-bruno in #8250
- fix(ui): Version edit modal minor UI fixes by @sachin-bruno in #8549
- fix(sidebar): remove deleted JS files from the sidebar by @pooja-bruno
- fix(mount): build js items as script nodes instead of request nodes by @chirag-bruno
- fix: with email open upgrade url by @prateek-bruno
- fix: refresh full-git when git-ui is active tab by @prateek-bruno
- fix(environments): keep env row's secret flag in sync with active tab by @shubh-bruno
- fix(watcher): added a value to the present param on collection addWatcher method by @utkarsh-bruno
- fix(mountv2): attach git watcher after collection watcher by @chirag-bruno
- fix(environments): remove draft indicator from variable & secret tabs by @pooja-bruno
- fix: update tab state structure for environment tabs and enhance tests by @sid-bruno
- fix: throttle git calls to an acceptable amount by @sid-bruno
- fix(cli): swap persistPaths / bailAbortSignal args in runSingleRequest calls by @sanish-bruno
- fix(runner): Remove iteration data from runtime variables by @rajashreehj-bruno
- fix: use portal to prevent z-index issues by @prateek-bruno
- fix: Added file js as well in the doc generation order by @sachin-bruno
- fix(git-provider): cache settings page for revisits by @gopu-bruno
- fix(ui): OpenAPI sync "Syncs Used" counter not updating after sync by @sundram-bruno
- fix: style responsiveness by @Pragadesh44-Bruno
- fix: update lodash version to 4.18.1 across multiple packages by @sid-bruno
Others
- test(sidebar): move sidebar locators to a dedicated file by @pooja-bruno in #8634
- test(folder): folder no auth test description by @pooja-bruno in #8560
- test: update openFolderRequest function for tests by @shubh-bruno in #8506
- test(e2e): update runner to run on self-hosted instances by @sid-bruno in #8524
- test: flaky bound action tests by @shubh-bruno in #8071
- test: await the websocket visibility assertion so it actually runs by @voidmatcha in #8317
- test: fix flaky tests by @bijin-bruno in #8319
- test: update timeline item locators and improve response status code assertion by @sharan-bruno in #8202
- test: update locators for save button in presets indicator tests by @sharan-bruno in #8201
- docs: update guidelines on 'Readability and Abstractions' section by @gopu-bruno in #8623
- test(tabs): enhance tab migration tests and add restoreTabs functionality by @utkarsh-bruno in #8609
- refactor: separate app items from requests in sidebar & sorting logic by @naman-bruno in #8577
- chore(electron): update notarization team ID and add app requirements by @sid-bruno in #8578
- test(auth): fix modified-indicator inherit spec test by @pooja-bruno in #8550
- refactor(environments): use tabState.environment.tab for env tabs by @pooja-bruno in #8528
- style(app): app mode toggle button styling by @naman-bruno in #8523
- chore: update coding conventions and best practices for this repo by @bijin-bruno in #8482
- CDN docs url change by @sachin-bruno in #8466
- chore: update lodash to version 4.18.1 across all packages by @sid-bruno in #8455
- chore: improve bug report issue template by @rreyn-bruno in #8369
- ci: use env vars instead of hard coded paths by @sid-bruno in #8389
- test: workspace import and validation testcase by @mohit-bruno in #8349
- chore: change app builder to bruno team by @sid-bruno in #8218
- ci: group the runner to PR by @sid-bruno in #8343
- test(preferences): set default preferences values by @bijin-bruno in #8321
- test: fix test and update default retry in local to 0 by @bijin-bruno in #8316
- test: run playwright e2e fully parallel by @bijin-bruno in #8313
- add: change log tab by @naman-bruno and @utkarsh-bruno in #8289
- test(core): current mount pipeline by @chirag-bruno in #7466
- docs: update README to include Bruno CLI and Docker usage instructions by @abhishek-bruno in #8184
- chore: remove deps array from playwright test by @pooja-bruno in #8181
- test: import buildPreferencesLocators from its source module by @lohit-bruno
- test: update test for externally added remotes by @sid-bruno
- test: make git tests less flaky by @prateek-bruno
- test(e2e): fix git-providers tests on local and CI by @Pragadesh44-Bruno
- test(cli): use bru.runner.iterationData in bail-iter fixtures by @sanish-bruno
- chore: fix typo by @prateek-bruno
- switch file-mode sync e2e tests to shared helpers and retrying assertions by @ravindra-bruno
- Telemetry tracking for AI and app features by @naman-bruno
- import-workspace-limit: unlicensed user is blocked with the by @mohit-bruno
- test(cli): cover persistence for iteration-count, bail, and parallel by @sanish-bruno
- Added file-mode sync e2e tests to use view-mode toggle after upstream UI sync by @ravindra-bruno
- File Format toggle for Bulk collection import by @ravindra-bruno
- test: fix data test it for failing tests by @bijin-bruno
- perf(runner): virtualize iterations table for high iteration counts by @chirag-bruno
New contributors
- @rajashreehj-bruno made their first contribution in https://github.com/usebruno/bruno/pull/8113
- @gengjiawen made their first contribution in https://github.com/usebruno/bruno/pull/8116
- @sachin-thakur-bruno made their first contribution in https://github.com/usebruno/bruno/pull/8212
- @sachin-bruno made their first contribution in https://github.com/usebruno/bruno/pull/8213
- @bhavik168 made their first contribution in https://github.com/usebruno/bruno/pull/8245
- @ravindra-bruno made their first contribution in https://github.com/usebruno/bruno/pull/8247
- @utkarsh-bruno made their first contribution in https://github.com/usebruno/bruno/pull/8253
- @abhisekm-bruno made their first contribution in https://github.com/usebruno/bruno/pull/8270
- @vijayh-bruno made their first contribution in https://github.com/usebruno/bruno/pull/8278
- @adwait-bruno made their first contribution in https://github.com/usebruno/bruno/pull/8314
- @voidmatcha made their first contribution in https://github.com/usebruno/bruno/pull/8317
- @mohit-bruno made their first contribution in https://github.com/usebruno/bruno/pull/8349
- @BraianS made their first contribution in https://github.com/usebruno/bruno/pull/8375
Full Changelog: https://github.com/usebruno/bruno/compare/v3.5.3...v4.0.0