Skip to content

Releases: stormhop/kurlo

v2.2.2

Choose a tag to compare

@github-actions github-actions released this 04 Oct 17:27

Kurlo 2.2.2

Fixed

  • A fresh install opened on "Folder missing". Kurlo creates its default workspace folder on the first save, but the storage status already called the not-yet-created folder missing, so a new install — most visibly on Windows — greeted you with a recovery screen. A default folder that does not exist yet now counts as empty, not missing.
  • Kurlo could not be closed while its changes could not be saved. Quitting saves first and stays open if that fails, so a missing workspace folder kept the window open for good. Kurlo now asks whether to quit without saving or stay and fix the problem.
  • Moving Kurlo's data folder left the workspaces "missing". The default workspace folder was saved as a full path, so after the app's data folder moved — restored from a backup, copied to a new Mac under another user name, or renamed — Kurlo kept looking in the old place and offered only to create that folder again. The default folder is now saved as "the default" and found again wherever the data folder lives; folders you chose yourself still keep their full path. When a workspace folder does go missing, Use Kurlo's app storage switches back to the built-in workspaces in one click.

v2.2.1

Choose a tag to compare

@github-actions github-actions released this 04 Oct 13:23

A steadier macOS installer

Fixed

  • The disk image window no longer scrolls when Finder shows hidden files. The folder that holds the background sat outside the window, so Finder made room to reach it. It now sits inside the window, and the background fills the window's full height, so no blank strip shows under it.
  • The download buttons on kurlo.dev show a new release as soon as it is published. They used to keep offering the previous version for up to half an hour.

v2.2.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 11:32

A new icon, and a quieter installer

A pigeon for Kurlo

Kurlo has a new app icon: a pigeon in Kurlo's blue. It replaces the chevron mark everywhere it appears — the app and its Dock icon, the Windows icons, the browser extension, and the favicon and social preview on kurlo.dev.

Installers

  • macOS: the disk image window keeps only what the drag needs — a small wordmark, a dotted arrow from Kurlo to Applications and one line of instructions. Its background ships at 1× and 2× in one HiDPI image, so it stays sharp on a Retina screen.
  • Windows: the installer artwork follows the new icon.

Site

The documentation lives only at kurlo.dev; the copy GitHub Pages used to serve is gone.

v2.1.1

Choose a tag to compare

@github-actions github-actions released this 03 Oct 21:25

AI assistants can use Kurlo, and the installers look like Kurlo

kurlo mcp: your requests as tools for Claude, Cursor and other assistants

The desktop binary now also runs as a Model Context Protocol server. Connect it once:

claude mcp add kurlo -- /Applications/Kurlo.app/Contents/MacOS/kurlo mcp --env Local

An assistant can then list your saved requests and environments, read how a request is defined, run it and read the status, headers, body and test results, run a whole collection, or send a one-off call that uses your {{variables}}. It uses the same engine as kurlo run, so collection defaults, auth, OAuth and scripts behave the same.

  • Without an argument it serves the workspace the app has open, and it re-reads that workspace on every call, so an edit in the app is what runs next.
  • A value a script sets carries over to later calls, so a login request hands its token to the requests after it. These values stay in memory and are never written back.
  • Environment values marked secret are used when sending, but masked as [secret] in everything the assistant gets back, even when a server echoes the token.

Setup for Claude Desktop and Cursor is in the MCP server guide.

Installers

The Windows installer is a modern wizard with Kurlo's artwork and a quieter install. The macOS disk image has a branded background, laid out for dragging the app to Applications.

Fixed

  • Importing a .env file keeps backslashes, so Windows paths survive.
  • kurlo run no longer crashes on a very large --iterations.
  • Swift snippets encode multipart field names with a backslash or quote the way browsers do.
  • The cookie-sync dialog's guide link opens Connecting a browser.

Security

  • Save as default no longer stores a client key passphrase in plain text. A passphrase an earlier version stored is removed on the next launch.

Full list in the changelog.

v2.1.0

Choose a tag to compare

@github-actions github-actions released this 03 Oct 08:47

One look across the app, zoom, and browser emulation that follows redirects

The same control looks the same everywhere

Text came in 21 sizes and 9 weights, and the same kind of button was 26, 30, 32 or 36 pixels tall depending on the screen. Kurlo now draws every screen from one set of sizes, weights, corners, spacing and components:

  • Six text sizes and three weights; buttons and tabs share one medium weight, and fields beside a button share its height.
  • One button, menu, field, segmented switch, tab bar, dialog frame, checkbox and empty state, used everywhere.
  • Destructive actions, statuses, SSE badges and Git states take the theme's colours, so monochrome and pastel themes stay consistent.
  • The last system checkboxes and radio buttons are gone, and dialogs dim the window with one shade — lighter in light themes.

Zoom

Cmd/Ctrl = and Cmd/Ctrl − make the whole window larger or smaller, from 80% to 150%, and Cmd/Ctrl 0 goes back to 100%, as in Postman. On macOS the same commands are in the new View menu, and the command palette has them too. The size is remembered, and widths you dragged keep their proportions.

Kurlo opens on the request editor

Kurlo used to reopen whatever screen the last session ended on. It now opens your tabs on the request editor, or a new request when there are none. Settings → General → On launch brings back Where you left off, or always starts on the Workspace overview.

Browser emulation

  • CORS follows every redirect. The redirect response must pass CORS, a non-simple request is preflighted at the new origin, a chain across origins sends Origin: null, and cookies and Authorization are dropped as a browser drops them.
  • Header values are checked as the Fetch standard does, so Range: bytes=-500, a quoted boundary or a long Accept now preflight, as in Chrome.
  • Headers page code cannot read are marked in the Headers tab — the classic X-Total-Count that reads as null in the app.
  • Mixed content is blocked or warned about, and a request from a public page to a loopback or private address warns about Local Network Access.

Variables

  • Globals now reach {{...}}.
  • A value stored by a pre-request script is used in the same send, not the next one.
  • Names with non-Latin letters, spaces or colons resolve, and kurlo run resolves a variable built from other variables.
  • The Collection Runner hands scripts the data row and the iteration.

Fixed

  • A same-host redirect keeps Authorization; a request timeout of 0 waits as long as the server takes, in the app and in kurlo run.
  • Large responses scroll without blank frames, and arrow keys in a response, a dialog or Settings no longer switch the request in the sidebar.
  • A POST to a streaming endpoint shows the stream; SSE follows the event-stream specification; a quiet WebSocket with keep-alive off stays open; handshake headers copied from DevTools no longer break WebSocket and Socket.IO; Socket.IO binary events appear.
  • Pasted cURL commands keep their body, and generated code snippets run as generated.
  • The mock server replays compressed examples, a hand-written multipart Content-Type keeps its boundary, force push refuses to overwrite commits it has not seen, and common legacy Postman script helpers work.

Full list in the changelog.

v2.0.3

Choose a tag to compare

@github-actions github-actions released this 01 Oct 18:34

Requests without the detour, shortcuts that work everywhere, and a Windows install without admin rights

A new request opens straight away as HTTP

The + in the tab bar, Cmd/Ctrl N and Add request no longer stop at a dialog asking for the protocol — almost every new request is HTTP. Pick another protocol in the menu at the start of the address bar: a draft can switch at any time, and a saved request until it has a URL. The command palette also has New GraphQL request, New WebSocket request, New Socket.IO request, New gRPC request and New MCP request.

Shortcuts work on Windows, Linux and any keyboard layout

  • Shortcuts with two modifiers never fired on Windows and Linux — Reopen closed tab (Ctrl+Shift+T), Toggle right sidebar (Ctrl+Alt+\), Switch to next/previous tab and Force close tab. They work now.
  • With a Russian or other non-Latin layout active, letter shortcuts did nothing. They follow the physical key now.
  • Cmd/Ctrl+Enter in a WebSocket or Socket.IO message sent it and then dropped the connection; in a gRPC message it invoked the method twice. It sends once.
  • Hints across the app showed the default keys even after you rebound a shortcut. They show your binding now.
  • Shortcuts are drawn as keys — ⌘ ⇧ ⌥ on macOS; Ctrl, Alt, ⇧ Shift and the Windows logo on Windows.

Windows

  • No administrator rights. The installer installs for you alone into %LOCALAPPDATA%\Programs\Kurlo, so there is no UAC prompt and the in-app updater can replace the app — an install in Program Files could not update itself. If an older all-users copy is found, the installer offers to remove it; your requests and settings are kept.
  • The MSIX package updates. A Kurlo installed from the MSIX package could never update itself. It now offers the new .msix for your machine, and App Installer upgrades Kurlo in place. App Installer also lists just one permission now.
  • A full-size icon on the taskbar and in the Start menu, instead of the macOS artwork with its wide margin.

Themes

  • Text that inherited its colour — the Mock server heading among it — kept the colour of the theme Kurlo started with, so switching from a light theme to Nord left it black on a dark background.
  • Nord, the dark Catppuccin flavours, Dark Pastel and Dark Monochrome drew white text on their pale accent buttons. They use dark text now, and muted text in several themes is easier to read.

Also

  • Full release notes in What's new opens the release page again.
  • The website has a new home page and the documentation a new look.

v2.0.2

Choose a tag to compare

@github-actions github-actions released this 01 Oct 09:01

Windows on Arm, and two small things the keyboard and mouse should have done all along

Kurlo runs on Windows on Arm

The Windows installer was built for x64 only, and on a Snapdragon laptop it refused to start with This product can't be installed on the current Windows architecture. Releases now carry an Arm64 build beside the x64 one:

  • kurlo-2.0.2-windows-arm64-installer.exe — the NSIS installer
  • kurlo-2.0.2-windows-arm64.msix — the MSIX package

It runs natively rather than under emulation and updates itself from its own signed package. Intel and AMD machines keep using the amd64 files. Thanks to @dhf for the report (#34).

Enter in the URL field sends the request

The address bar swallowed Enter without sending anything; only Cmd/Ctrl Enter worked. Enter now sends the request, or connects a WebSocket, Socket.IO or SSE request. It never cancels a request already in flight or drops a live connection, and it still picks a suggestion while the variable list is open.

A middle click closes a tab

As in a browser — request tabs and the Runner, Git, Mock, collection and History tabs. A tab with unsaved changes still asks first.

v2.0.1

Choose a tag to compare

@github-actions github-actions released this 01 Oct 07:55

The new icon, for everyone who updated

A fix for macOS. Kurlo 2.0 shipped a new icon, but nobody who updated in place ever saw it.

An update replaced the program and left the app around it

The updater swapped only the program inside Kurlo.app. The icon, the version that Finder and About This Mac report, and the app's declared macOS requirement all stayed as they were on the day Kurlo was first installed. Restarting the Dock could not help, because the old icon was still the one inside the app.

Releases now publish the whole signed app too, and an update swaps the app's contents in one step, keeping the previous version if anything goes wrong.

Copies that already updated repair themselves

A copy updated the old way notices on start that its bundle describes a different version than the one running. It fetches the signed app for its own version and puts the missing pieces back, so the new icon appears from the following launch. There is nothing to reinstall.

Every release called itself 1.0.0

The release build stamped its real version into the program but never into the app's own description, so Finder and About This Mac on macOS, and the file properties and Apps & features on Windows, showed 1.0.0 whatever version was installed. They show the actual version now.

Linux is unchanged.

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 30 Sep 21:06

Kurlo 2.0 is a new look — the Graphite design, from the window chrome to every screen, menu and dialog — plus MCP requests, a command palette, a page for each history entry, the last run of each collection, and environments side by side.

Kurlo 2.0 needs macOS 12 Monterey or later, with the system WebKit from Safari 16.2 or newer. Windows and Linux are unchanged.

Added

  • MCP is a request type. Point Kurlo at a Model Context Protocol server, press Discover, pick a tool, fill the arguments from its schema and send — then read the raw JSON-RPC exchange that went over the wire. An MCP call is an ordinary saved request: diffed in review, run by the collection runner, asserted on by a test script. Request types → MCP
  • A command palette. Cmd/Ctrl K finds a saved request and runs Kurlo's commands — send, save, duplicate, copy as cURL, create, import, jump to any view, change the layout or theme. Command palette
  • Environments side by side. A Matrix view puts every variable in a row and every environment in a column, edited in place. Comparing environments
  • A page for each history entry, with what was sent next to the stored response. History
  • Each collection remembers its last run, shown in the runner and on the collection's page. Last run

Changed

  • The Graphite design. Neutral greys with hairline borders, colour kept for what carries meaning — methods, status codes, variables — and the accent only on the primary action. An activity rail replaces the sidebar's section labels, tabs sit in the title bar, the method lives inside the URL field, and the response opens beside the request in a wide window.
  • A new app icon — two offset chevrons in the brand blue — on the Dock, the installer, the start-up screen and the docs.
  • Theme previews in Settings are miniatures of Kurlo in each theme's own colours; What's new, updates, About and Support were rebuilt to match.

Fixed

  • A dropdown inside a labelled field reopened after an option was picked on macOS. The end-to-end suite now also runs in WebKit, the engine Kurlo uses there.
  • A stored history response over 2 MB could not be read back.
  • Response line numbers fell behind the text while scrolling fast, and a sideways scroll could strand them in the middle of a wide response.

The full list is in CHANGELOG.md.

v1.8.1

Choose a tag to compare

@github-actions github-actions released this 12 Sep 11:55

One icon, and documentation worth reading

A maintenance release. Nothing in the app changed except its own mark; the rest of the
work is the documentation, which had quietly fallen four releases behind.

Kurlo was drawing its icon five different ways

The app icon Wails bundles, a redrawn SVG in the documentation, a second copy as the
favicon, a third inlined in the desktop sidebar over a CSS gradient of its own, and a
fourth in the browser extension — three different gradients, four different corner radii,
and two different glyphs. The docs then clipped theirs with border-radius, so the same
icon appeared as a squircle, a rounded square and a circle on one page.

Every mark is now generated from the icon that ships in the Dock, the taskbar and the
installer. The icon you launch is unchanged — everything else caught up to it.

The documentation site was rebuilt around reading

The stock type scale set headings at 42px and 35px against a 16px body, which reads as a
landing page on every page, including a reference table of key bindings. The scale, the
rhythm around headings, tables, code, callouts, navigation and the previous/next row are
one system now. The landing page is a full-bleed hero the header sits on rather than a
dark card floating under a white strip, and search — a widget that had been passed through
almost unstyled — matches the rest, keeping the query row in place while results scroll.

Screenshots are captured at twice the pixel density, so the app's own text stays legible
when a shot is scaled into the page, and dialogs are cropped to themselves rather than
shown as a smudge inside a full window. Every guide that shows a Kurlo window now has one,
including response examples and the mock server, which shipped without any.

Corrections

The README and the landing page were missing saved examples, the cookie jar and cookie
sync, the response diff and timeline, browser emulation and bulk edit; Digest auth was
described as MD5-only when it has done SHA-256 and SHA-512-256 for releases; the landing
page named two of the four OAuth grants. Both spelled the keyboard defaults with ⌘,
which is wrong on two of the three platforms Kurlo ships on.

Two guides illustrated their feature with the same broken screenshot — an earlier
scroll had pushed the app out of frame, leaving a third of the image empty. The FAQ
pointed at an issue label that does not exist. The privacy page described the cookie-sync
bridge but neither of the other two local listeners Kurlo can open, including the mock
server, which serves recorded responses to anything on the machine that can reach its
port.


Full notes: CHANGELOG.md
Documentation: https://stormhop.github.io/kurlo/