Repository navigation
Releases: hojttaler/Resolvr
Release list
Resolvr v0.3.0
Resolvr 0.3.0
Flows grow up: one scenario runs on anyone's data, a whole set runs in one command, and a workspace can refuse writes.
Variables and constants
A step used to need a first request just to find the id of your own client, so the same scenario could not be reused by another person or run against a list of clients.
A flow now carries Constants — the starting context, available to steps as {{name}} — and a run may pass its own values on top:
flow_run(workspaceId, flowId, variables: { clientId: "…" })
Run values win over constants. Constants are expanded once per run, so {{$uuid}} in a constant is one identifier for the whole flow.
Value generators
Templates — step variables, headers, constants — understand generators: {{$uuid}}, {{$timestamp}}, {{$unix}}, {{$isoDate}}, {{$date}}, {{$randomInt}} ({{$randomInt:1:100}}), {{$randomString}} ({{$randomString:12}}) and {{$randomEmail}}. Without them a second run of a flow with idempotency keys, emails or other unique fields failed on the values left behind by the first.
Protection against accidental writes
A workspace named “development” may well point at a production API, and until now only a hook on the agent's side stood in the way. Workspace settings now offer Protection:
- Confirmation for every mutation — the app asks before a mutation or a flow run; through MCP
run,flow_runandflow_run_manyrefuse the call until the agent passesconfirm: true, which it should do only after asking you. - Read only — mutations are refused, confirmation or not.
The check lives in the run engine, so it holds for manual work, for flow steps and for agents alike. Reads are never restricted, and the current mode is visible in workspace_list.
A whole set in one command
MCP flow_run_many runs a set of flows selected by id prefix (smoke-billing-), by tag or by an explicit list — sequentially, or in parallel when the scenarios are independent. The answer is a table: outcome, duration and the step a flow stopped at. A failing flow does not cancel the rest, because a regression run is only useful whole.
The registry lives with the flows
A flow carries Tags and Preconditions, so the list of smoke tests no longer lives in a separate document that drifts away from them. The outcome of every run is kept outside the repository, so running a flow never produces a diff: flow_list reports lastGreenAt, and in the sidebar a flow that passed is marked with a ✓ and the date.
Checks and step errors
eqNumcompares numbers regardless of notation, so"10.000000"equals10— money-like fields arrive as strings, and stricteqused to fail on them.lenchecks the length of an array, a string or the number of object fields.- A step result carries the response
errorseven when the step is green: with Any response the GraphQL errors inside an HTTP 200 body used to stay invisible.
Parallel agents
operation_get and flow_get return a version — a fingerprint of the file contents. Passing it back as expectedVersion to operation_save or flow_save turns a silent overwrite into a refusal when someone has changed the file in the meantime. Without the field, writes behave as before.
Everything else is identical to 0.2.9.
Downloads
| Platform | File |
|---|---|
| macOS (Apple Silicon + Intel) | Resolvr_0.3.0_universal.dmg — not notarized; on first launch right-click → Open |
| Linux | Resolvr_0.3.0_amd64.AppImage, Resolvr_0.3.0_amd64.deb, Resolvr-0.3.0-1.x86_64.rpm |
| Windows | Resolvr_0.3.0_x64-setup.exe, Resolvr_0.3.0_x64_en-US.msi |
Resolvr v0.2.9
Resolvr 0.2.9
A fix for the crash on Linux.
Fixed
Linux: crash with malloc(): unaligned tcache chunk detected. Resolvr could close by itself after a few minutes of work on Linux. Backtraces with symbols (added in 0.2.8) showed every crash at the same spot: the webview answering a call from the interface through the ipc:// URI scheme. On Linux the interface now talks to the app through postMessage instead — the fallback transport built into Tauri, which answers on the main thread. macOS and Windows are unchanged.
If Resolvr still crashes on Linux after updating, please open an issue with the log (Resolvr → Open Logs) and, if you can, a backtrace:
gdb -batch -ex "handle SIGUSR1 nostop noprint pass" -ex run -ex "thread apply all bt 25" --args resolvr > resolvr-crash.txt 2>&1
Everything else is identical to 0.2.8.
Downloads
| Platform | File |
|---|---|
| macOS (Apple Silicon + Intel) | Resolvr_0.2.9_universal.dmg — not notarized; on first launch right-click → Open |
| Linux | Resolvr_0.2.9_amd64.AppImage, Resolvr_0.2.9_amd64.deb, Resolvr-0.2.9-1.x86_64.rpm |
| Windows | Resolvr_0.2.9_x64-setup.exe, Resolvr_0.2.9_x64_en-US.msi |
Resolvr v0.2.8
Resolvr 0.2.8
Negative tests in flows, and better crash diagnostics.
Negative tests in flows
A flow step used to pass only when the server answered without errors — so a check like "without a token the API refuses" failed on the very error it expected and stopped the flow.
Each step now has an Expected result:
- Success — the default, as before: a response without errors, and the checks pass.
- Error — the server returns an error (HTTP not 2xx or GraphQL errors), and the checks pass. The flow goes on to the next step. If the request unexpectedly succeeds, the step fails.
- Any response — only the checks decide.
With Error, add a check that pins down which error you expect — for example errors.0.message contains Unauthorized, or errors.0.extensions.code equals FORBIDDEN — otherwise any failure, including a server crash, would count. Agents set the same field through MCP flow_save (expect).
Crash diagnostics
Release builds now keep the symbol table, so a native crash backtrace (gdb, system crash reports) names the function instead of showing ???. This helps track down a rare crash on Linux. The app is about 1.5 MB larger.
Everything else is identical to 0.2.7.
Downloads
| Platform | File |
|---|---|
| macOS (Apple Silicon + Intel) | Resolvr_0.2.8_universal.dmg — not notarized; on first launch right-click → Open |
| Linux | Resolvr_0.2.8_amd64.AppImage, Resolvr_0.2.8_amd64.deb, Resolvr-0.2.8-1.x86_64.rpm |
| Windows | Resolvr_0.2.8_x64-setup.exe, Resolvr_0.2.8_x64_en-US.msi |
Resolvr v0.2.7
Resolvr 0.2.7
AI agents can now build flows through MCP.
Flows through MCP
An agent connected to Resolvr's MCP server could list and run flows but not create them. Three new tools close the gap:
flow_savecreates or overwrites a flow. Each step is a saved operation (operationRef) or an inline query, with variables ({{token}}takes a value extracted by an earlier step or from the environment),extractto pass values on,assertto check the response andcontinueOnFailure.flow_getreturns a flow in full, so an agent can extend it without losing steps.flow_deleteremoves a flow.
Before a flow is written, Resolvr checks that every referenced operation, environment and endpoint exists and reports all problems at once — a typo in a reference no longer shows up only when the flow runs. Flows created by an agent appear in the app immediately, like operations.
Connect the agent: Settings → About → Agent via MCP, or
claude mcp add resolvr -s user -- node "/Applications/Resolvr.app/Contents/Resources/mcp/index.js"
Everything else is identical to 0.2.6.
Downloads
| Platform | File |
|---|---|
| macOS (Apple Silicon + Intel) | Resolvr_0.2.7_universal.dmg — not notarized; on first launch right-click → Open |
| Linux | Resolvr_0.2.7_amd64.AppImage, Resolvr_0.2.7_amd64.deb, Resolvr-0.2.7-1.x86_64.rpm |
| Windows | Resolvr_0.2.7_x64-setup.exe, Resolvr_0.2.7_x64_en-US.msi |
Resolvr v0.2.6
Resolvr 0.2.6
The MCP server bundled with the app now starts on Node.js 20.
Fixed
MCP server: "Cannot use import statement outside a module". The server inside the app is an ES module, but the app did not mark it as one, so Node.js 20 refused to load it and Claude Code reported the server as failed to connect. Node.js 22 guessed the format by itself, which is why not everyone saw it. The app now ships the server as an ES module package; the command stays the same:
claude mcp add resolvr -s user -- node "/Applications/Resolvr.app/Contents/Resources/mcp/index.js"
Settings → About → Agent via MCP copies the command with the right path for your system.
Everything else is identical to 0.2.5.
Downloads
| Platform | File |
|---|---|
| macOS (Apple Silicon + Intel) | Resolvr_0.2.6_universal.dmg — not notarized; on first launch right-click → Open |
| Linux | Resolvr_0.2.6_amd64.AppImage, Resolvr_0.2.6_amd64.deb, Resolvr-0.2.6-1.x86_64.rpm |
| Windows | Resolvr_0.2.6_x64-setup.exe, Resolvr_0.2.6_x64_en-US.msi |
Resolvr v0.2.5
Resolvr 0.2.5
A stability fix for Linux.
Fixed
Crash on Linux with malloc(): unaligned tcache chunk detected. The native menu was rebuilt every time the app started and every time a setting changed — theme, font size, opacity. Replacing a GTK menu tears down its keyboard shortcuts and could corrupt memory, which ended in a crash some time later. The menu is now built once, in the language from your settings, and rebuilt only when you switch the interface language.
Everything else is identical to 0.2.4.
Downloads
| Platform | File |
|---|---|
| macOS (Apple Silicon + Intel) | Resolvr_0.2.5_universal.dmg — not notarized; on first launch right-click → Open |
| Linux | Resolvr_0.2.5_amd64.AppImage, Resolvr_0.2.5_amd64.deb, Resolvr-0.2.5-1.x86_64.rpm |
| Windows | Resolvr_0.2.5_x64-setup.exe, Resolvr_0.2.5_x64_en-US.msi |
Resolvr v0.2.4
Resolvr 0.2.4
Fixes for Linux: copying works, and the interface no longer crashes on the NVIDIA driver.
Fixed
Copying on Linux. Every copy action — the response Copy button, "Copy value", links, curl — did nothing: WebKitGTK does not let the page write to the clipboard. Copying now goes through the app itself on every platform.
Crashes and a blank window with the NVIDIA driver. With the proprietary NVIDIA driver the WebKitGTK DMA-BUF renderer could crash the interface or leave the window empty, without a trace in any log. Resolvr now turns this renderer off when it detects the NVIDIA driver. If you set WEBKIT_DISABLE_DMABUF_RENDERER yourself, your value is kept.
Recovery instead of an empty window. If the WebKit page process still dies on Linux, the reason — crashed or exceeded the memory limit — is written to the log (Resolvr → Open Logs) and the interface reloads with your tabs and drafts.
Everything else is identical to 0.2.3.
Downloads
| Platform | File |
|---|---|
| macOS (Apple Silicon + Intel) | Resolvr_0.2.4_universal.dmg — not notarized; on first launch right-click → Open |
| Linux | Resolvr_0.2.4_amd64.AppImage, Resolvr_0.2.4_amd64.deb, Resolvr-0.2.4-1.x86_64.rpm |
| Windows | Resolvr_0.2.4_x64-setup.exe, Resolvr_0.2.4_x64_en-US.msi |
Resolvr v0.2.3
Resolvr 0.2.3
One environment for every tab, response values that land in variables by themselves, flows that survive renames — plus a log file to report crashes with, and fixes for the Linux menu.
One environment per workspace
The environment and endpoint in the title bar used to belong to the tab, so two tabs could quietly send requests to different environments. The choice is now shared by all tabs of a workspace. After the update the environment of your active tab becomes the workspace choice. Opening a saved operation or a history entry no longer switches it.
Response values in the environment
Right-click any value in the response — a string, a number, an object — and Save to environment variable…. Tick Save after every run to turn it into a rule of the operation, or manage the rules on the To environment tab of a saved operation. The rule is "after a successful run, store data.login.token in {{token}}". Rules run only on successful responses, can store the value as a secret, and apply to runs through MCP as well. A note above the response lists what was saved.
Environment variables in requests
Type {{ in the variables editor to pick a variable of the active environment or of the operation's prerequisite flow. Secret values stay masked. Names the environment does not define are underlined, and unknown names in headers are listed under the header editor.
Collections
Operations are reordered by drag and drop, within a collection or into a specific position of another one. Renaming or moving an operation now updates the flows and login profiles that use it, and the operation keeps its place in the list.
Response pane
- Copy copies the whole Response, Raw, Headers or Trace tab — the full text, not only the visible rows.
- ⌘A / Ctrl+A selects the tab content; in the JSON tree ⌘C then copies the full response.
- Huge responses: the Raw tab shows the first megabyte with Show all, bodies over 5 MB are not re-formatted, and search no longer blocks typing.
Editor search
⌘F opens a redesigned find/replace panel with a match counter, case / regexp / whole-word toggles and a replace row behind the chevron. Enter and Shift+Enter move between matches, Esc closes.
Unsaved changes
Closing a tab with unsaved changes asks Save / Don't save / Cancel. A new draft opens the save dialog and closes once saved.
Logs
The app now writes a log file. It records crashes, unhandled interface errors and HTTP, Keychain and file-watcher failures. Tokens, header values and request or response bodies are never written. Open the folder from Settings → About → Logs or Resolvr → Open Logs, and attach the file to a bug report. If the interface fails to render, a recovery screen replaces the blank window.
Fixed
- Linux: the Window menu did nothing, and About Resolvr showed an empty dialog with a broken icon. Window now minimizes, maximizes and closes, F11 toggles full screen, and About shows the version, license and icon.
- Saving over an existing operation, in the app or through MCP
operation_save, dropped its description and prerequisite flow.
Downloads
| Platform | File |
|---|---|
| macOS (Apple Silicon + Intel) | Resolvr_0.2.3_universal.dmg — not notarized; on first launch right-click → Open |
| Linux | Resolvr_0.2.3_amd64.AppImage, Resolvr_0.2.3_amd64.deb, Resolvr-0.2.3-1.x86_64.rpm |
| Windows | Resolvr_0.2.3_x64-setup.exe, Resolvr_0.2.3_x64_en-US.msi |
Resolvr v0.2.0
Resolvr 0.2.0
The schema becomes a place you can read, not only autocomplete against — plus import from Postman and Insomnia, an example workspace on first launch, and a response tree that stays fast on very large payloads.
Schema browser
Click any type — in the sidebar, in a field's type, in "used in" — and it opens as a documentation page: description, fields with arguments and default values, deprecations with reasons, enum values, interfaces and implementations, and every place the type is used. Type names are links; the tab keeps back/forward history like a browser. Root fields have Insert query, which builds an operation with a selection set and variables. The sidebar lists root fields, searches fields across all types and groups the rest by kind (objects, inputs, enums, interfaces, unions, scalars).
Large responses
The response tree now renders only the rows in view. Expanding an array of 20 000 objects keeps a few dozen DOM nodes instead of hundreds of thousands; search and expand/collapse work the same.
Import
Settings → Collections + → Import from Postman or Insomnia. Supported: Postman Collection v2.1, Postman Environment, Insomnia export v4. Folders become collections, nested folders prefix the operation name, only GraphQL requests are taken (the rest are counted as skipped), and {{ _.var }} templates become {{var}}. A preview shows what will be created before anything is written; existing collections are never overwritten.
First launch
The welcome screen offers Open the example: a workspace on a public countries API with three queries, an environment variable and a smoke flow with extraction and an assertion. Import is available from the welcome screen as well.
History and tabs
A history entry now opens with its response — status, timing, headers and body — as if the request had just run (bodies are stored up to 512 KB). Entries are labelled by the saved operation name, or the operation name, or the first root field. Clicking a saved operation in a collection focuses its open tab instead of opening a duplicate.
Performance
HTTP connections are pooled — previously every request paid a fresh TCP and TLS handshake. Collections and drafts are read in parallel, typing no longer re-renders the header and sidebar per keystroke, and history is appended instead of rewritten.
Also
- Environments and endpoints can be added, removed and set as default in workspace settings.
- README with screenshots and an animated tour.
Downloads
| Platform | File |
|---|---|
| macOS (Apple Silicon + Intel) | Resolvr_0.2.0_universal.dmg — not notarized; on first launch right-click → Open |
| Linux | Resolvr_0.2.0_amd64.AppImage, Resolvr_0.2.0_amd64.deb, Resolvr-0.2.0-1.x86_64.rpm |
| Windows | Resolvr_0.2.0_x64-setup.exe, Resolvr_0.2.0_x64_en-US.msi |
Installed copies of 0.1.x update themselves: a banner appears shortly after launch.
Resolvr v0.1.1
Resolvr 0.1.1
A follow-up to the first release: the interface now speaks English and Russian, keyboard shortcuts match the platform, and the window is opaque by default everywhere.
This is the first version delivered through the built-in updater — Resolvr 0.1.0 shows an update banner a few seconds after launch; one click downloads, verifies the signature and restarts.
What's new
Interface language. Settings → Appearance → Language: System, English or Russian. "System" follows the OS language. The choice applies immediately, including the native menu bar. Plural forms follow each language's rules.
Platform-aware shortcuts. Menu accelerators use Cmd on macOS and Ctrl on Windows and Linux; every shortcut label in the interface — buttons, tooltips, command palette — shows the right modifier for the current platform. Previously several shortcuts did not fire on Windows at all.
Opaque window by default. On Windows and Linux the window (including the menu bar) was transparent, because the transparency was designed around macOS vibrancy. The window is now opaque on every platform; transparency and the blur material remain available as a macOS-only setting.
Fixes
- Deferred draft and session writes no longer run outside the app process (this made the test suite flaky on slower machines).
- Icons for Linux and Windows installers are now part of the bundle.
Downloads
| Platform | File |
|---|---|
| macOS (Apple Silicon + Intel) | Resolvr_0.1.1_universal.dmg — not notarized; on first launch right-click → Open |
| Linux | Resolvr_0.1.1_amd64.AppImage, Resolvr_0.1.1_amd64.deb, Resolvr-0.1.1-1.x86_64.rpm |
| Windows | Resolvr_0.1.1_x64-setup.exe, Resolvr_0.1.1_x64_en-US.msi |
Full changelog: CHANGELOG.md.