Changelog

All notable changes to hurlx are documented here. View all releases on GitHub β†’

v1.0.12

Latest2026-04-17GitHub Release β†—

Bug fixes for base64 decoding, runner state isolation, and assert value handling.

πŸ›Bug Fixes

  • –filter: base64 decode now strips trailing = padding before NoPadding decode β€” fixes decoding of any standard padded base64 string (e.g. SGVsbG8=, AA==)
  • –runner: reset redirect recorder per-entry β€” prevents redirect history leaking into subsequent chain steps
  • –runner: on template render error, write to entry-scoped vars instead of shared runner vars β€” prevents cross-entry state pollution
  • –runner: save/restore Verbose and client.Timeout in applyRequestOptions β€” per-entry option overrides no longer bleed into later entries
  • –runner: contains, startsWith, endsWith, matches asserts now use formatAssertValue β€” numeric and boolean assert values now work correctly
  • –runner: optsToEntry off-by-one fix β€” --to N now correctly includes entry N (was N-1)

βœ…Tests Added

  • –TestBase64RoundTrip β€” encodeβ†’decode round-trip for various byte lengths
  • –TestBase64DecodePadded β€” verify padded base64 input is accepted
  • –TestBase64UrlSafeRoundTrip β€” URL-safe variant round-trip

v1.0.11

2026-04-17GitHub Release β†—

Repository housekeeping β€” no functional changes.

🧹Housekeeping

  • –Untrack .claude/, .workbuddy/memory/, .github/workflows/CLAUDE.md, and hurlx_test_bin from version control
  • –Add above paths to .gitignore β€” they are now kept local-only
  • –.github/workflows/build.yml continues to be tracked (CI requires it)

v1.0.10

2026-04-16GitHub Release β†—

Template engine error propagation, runner state isolation, and security hardening.

✨Improvements

  • –tmpl: Render() now returns (string, error) β€” errors propagate cleanly instead of panicking
  • –tmpl: generateUUID and generateRandomHex return errors instead of panic on crypto failures
  • –tmpl: merged getEnv/getenv branches; added uuid as alias for newUuid
  • –runner: per-entry variable cloning prevents shared-state mutation across chain steps
  • –runner: template render errors are now propagated for URL, headers, query, form, cookies, basicAuth, and multipart fields

πŸ”’Security

  • –runner: path-traversal guard added for body-file and multipart-file paths
  • –importer: circular-import detection via an in-progress resolving set
  • –importer: path-traversal guard for body file paths

πŸ”§Code Quality

  • –cli: filepath.WalkDir replaces deprecated filepath.Walk
  • –cli: errors from os.WriteFile and json.MarshalIndent are now handled and reported

v1.0.9

2026-04-16GitHub Release β†—

New template functions, runner improvements, and stdlib base64.

πŸš€New Features

  • –tmpl: new uuid alias for newUuid
  • –tmpl: date "format" supports Java-style and strftime format patterns
  • –tmpl: randomHex N generates N random hex bytes
  • –tmpl: getenv as case-insensitive alias for getEnv
  • –runner: ConnectTimeout and Proxy options support

πŸ›Bug Fixes

  • –filter: replaced hand-rolled base64 implementation with Go stdlib encoding/base64
  • –runner: fix multipart file close order
  • –runner: fix gzip/deflate reader scope
  • –runner: remove br from Accept-Encoding (brotli not supported)

v1.0.8

2026-04-12GitHub Release β†—

✨Improvements

  • –Improve test pass rate from 89% to 96%
  • –Fix 6 major issues across parser, runner, and filter packages
  • –Fix integration tests: use jsonpath for headers
  • –Replace xpath string() with //title/text()

hurlx follows Semantic Versioning. All releases are available on GitHub Releases.