All notable changes to this project are documented here. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

Added

  • Compute REST client layer.

Security

  • Cleartext bearer tokens rejected. GcpCompute.Config.new/1 now requires an https:// base_url unless you explicitly pass allow_insecure: true (for a local emulator/proxy on a trusted network). Gating on that flag rather than the token provider means even a Static provider holding a real out-of-band token stays TLS-only by default. local/1 sets allow_insecure: true for you. The scheme check is case-insensitive. Applies to from_env/2 and any direct new/1 use, not just production/1.
  • req_options can no longer override auth or URL. The request :method, :url, and :auth are always computed by the library and layered on top of the app-supplied req_options, which is treated as trusted transport config.
  • Fail closed on a missing token. A nil/empty token now returns {:error, %GcpCompute.Error{reason: :missing_token}} before any request goes out, instead of sending an unauthenticated call.
  • No secrets in error messages. Token-fetch failures use a fixed "token fetch failed" message; the raw reason is kept only in :body, which GcpCompute.Error's Inspect implementation redacts.

Changed

Notes

  • The Compute Engine API is REST/JSON only (no gRPC); transport is Req.
  • A higher-level sandbox orchestration layer (gen_statem, DynamicSupervisor, reaper, profiles) is planned on top of this client.