Variables
A single panel that tells you everything the next hurl invocation can see. Open it from the toolbar ($ icon) or with ⌘⇧V.
The table merges three sources:
| Source | Where it comes from | Persists? |
|---|---|---|
| Env file | Every key from each currently-active env file. The Source column shows which file each key originated from. | On disk, in the env file. |
| Captured | Anything a [Captures] block has produced this session. | Across launches — see Run history for re-applying older runs. |
| Ad-hoc | Type a name and value in the row at the bottom of the table. | Workspace-only, in .gurl/state/. |
Override order
Variables resolve in two passes:
- Env files first, in the order they're listed under the active environment in
settings.toml. Later files override earlier ones when they redeclare the same key — same behaviour as passing multiple--variables-fileflags tohurl. - Captures and ad-hocs override env-file values by name. Within captures and ad-hocs themselves, the most recently captured (or most recently edited) value wins.
So: env-file layering settles first, then anything captured or typed into the panel takes precedence over that baseline.
Overridden rows are shown with strikethrough in the Variables panel, so you can see at a glance which value is actually live for any given name.
Editing values
Double-click the Value column to edit a row inline:
- Env-file rows write back to the underlying
.envfile on disk — the same file the panel's Source column points at. - Captured rows override the captured value in memory until the next run replaces it (or until you clear the override).
- Ad-hoc rows are stored under
.gurl/state/so they survive the workspace closing.
Complex captured values
If a [Captures] block captures an object or array (JSON path expressions that don't resolve to a scalar), Gurl JSON-stringifies the value at capture time and stores it as a string. That string is what gets passed to hurl as --variable KEY=<json> on the next run, so downstream requests see a serialized form rather than a structured value. You'll see a single-line JSON snippet in the Value column for these.
Hover popover
Hovering any {{varname}} reference in an editor tab shows the value that the next run will resolve to. ⇧⌘C while the popover is open copies the value.
If the reference is undefined the popover instead reads "(undefined)" and the variable token gets a red background — no run-time error yet, but it's a visible cue something's missing.