v1.21.0
trvl 1.21.0
This release focuses on privacy, safer provider boundaries, booking-readiness evidence, and reliability under long-running searches. Default search still works without personal API keys.
Privacy and security
trvl share --format linkno longer creates a public GitHub gist. It now prints or copies the trip card, leaving you in control of where it is shared. Existing gists remain in your GitHub account; usegh gist listandgh gist delete <id>to review or remove them.- Browser controls now make the coverage trade-off explicit. Cookie access remains enabled by default because protected hotel and rail sources rely on it; disabling it can materially reduce results. The headless fallback uses an empty profile only when a challenged source needs fresh cookies, without reading your existing browser sessions or taking focus.
TRVL_NO_BROWSER_COOKIESdisables access to your browser sessions, whileTRVL_NO_TIER2_CDPdisables the separate headless process. Visible-browser recovery remains a separate, provider-specific opt-in. - Provider definitions are now reviewed source embedded in the binary. Files under
~/.trvl/providersare left in place but no longer loaded or executed. - Private proxies can be enabled without allowing private destination addresses.
- Local logs and error messages now sanitize optional webhook URLs when a service token is encoded in the URL.
Hotel booking evidence
trvl pricesnow distinguishes its source-level booking-readiness ceiling from property-specific downgrade reasons.trvl roomscan reachreadywhen the source provides an exact room, a durable seller link, and explicit refundability evidence.- Seller cancellation terms and the upstream official-property-site flag are preserved when supplied. Missing evidence stays unknown rather than being inferred.
This work was based in part on feedback from Roberto Reale.
Reliability and correctness
- Price watches now use a transactional database with bounded retention, cross-process locking, and a dry-run migration preview. Legacy files are backed up and retained.
- Provider recovery, credential helpers, cookie extraction, and hack detection are bounded so they cannot stall later searches indefinitely.
- Mixed-currency savings and cheapest-option comparisons now fail closed instead of attaching the wrong currency label or ranking incomparable values.
- Wizz Air search uses the provider's current API version again.
- Release automation and Homebrew checksum handling were hardened.
Before upgrading
If you use price watches, preview the migration first:
trvl watch migrate --dry-runIf you previously used custom provider JSON, move the provider definition into a reviewed source contribution or your own fork. The old files are not deleted, but v1.21.0 ignores them.
Install or upgrade
brew update
brew upgrade MikkoParkkola/tap/trvl
trvl versionOther published channels: GitHub binaries, npm (trvl-mcp), GHCR, the Go module proxy, and the official MCP Registry.
See the full changelog for all changes and migration details.