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 #8494
- @cyphercodes made their first contribution in #8588
- @Gopi-bruno made their first contribution in #8328
- @arpit-bruno made their first contribution in #8892
Full Changelog: v4.0.0...v4.1.0