Changelog

All notable changes to this project will be documented in this file.

[0.14.0] - 2026-09-04

Added

  • feat(errors): type 429 and 502/503/504 as RequestError subclasses

Style

  • style(client): use the disable-next directive rubocop expects
  • style(client): scope the ParameterLists directive to its statement

[0.13.0] - 2026-08-13

Added

  • feat(appcenter): add user and client lookup helpers

CI

  • ci: forward the release bot key on codequality-pr
  • ci: drop wrapper comments duplicated from the ci-workflows docs
  • ci: migrate to ci-workflows@v6 config file
  • ci(workflows): bump ci-workflows pins to @v5 + drop github.actor
  • ci: bump ci-workflows to @v5 (multi-gem-capable reusables)
  • ci: retrigger checks against updated @v3
  • ci: bump ci-workflows v2 → v3, drop namespace :doc Rakefile boilerplate
  • ci: migrate dev/CI tools to fluence-ci-tools meta-gem
  • ci: grant packages: read on @v2 wrappers (fix startup_failure)
  • ci: bump remaining ci-workflows wrappers from @v1 to @v2
  • ci: add workflow_dispatch to publish.yml for manual republish
  • ci: bump release.yml to @v2 and forward RELEASE_APP_PRIVATE_KEY
  • ci: pin reek/flog/flay versions to stabilize codequality deltas
  • ci: add codequality workflow (reek + flog + flay, advisory)
  • ci: pin yard/yardstick versions to stabilize docs deltas
  • ci: forward FLUENCE_CI_BOT_PRIVATE_KEY to author sticky comments as App
  • ci: drop FLUENCE_CI_BOT_PRIVATE_KEY forwarding (no longer needed)
  • ci: fix docs-pr startup by adding 'actions: read' permission
  • ci: add rubocop-measure.yml + rubocop-pr.yml, drop 4.0 from matrix
  • ci: add coverage-measure.yml + coverage-pr.yml (symmetric with docs)
  • ci: add docs-measure.yml for yardstick baseline on main push
  • ci: forward FLUENCE_CI_BOT_PRIVATE_KEY to docs-pr + coverage-pr
  • ci: pin reusable workflow refs to @v1 instead of @main
  • ci: drop secrets: inherit — forward only what each workflow needs
  • ci(publish): add thin publish.yml listening on release: published
  • ci(release): drop version_file input (read via gemspec upstream)
  • ci(release): scope push trigger to version-file changes

Documentation

  • docs(readme): document AppCenter lookup helpers
  • docs(contributing): refresh CI section to match the real workflow set
  • docs: route yard doc through fluence-ci docs --build
  • docs: standardise dev commands on fluence-ci

Fixed

  • fix: use git source type for graphiti marketplace

Other

  • chore: enable graphiti plugin via fluence marketplace
  • chore(deps): bump actions/checkout from 6 to 7
  • chore: migrate to ci-workflows v4 (FLUENCE_BOT naming)
  • chore: shorten step name (rubocop context already in matrix comment)

Refactored

  • refactor(client): make the instance-level HTTP surface private
  • refactor(appcenter): make appcenter_get private on Client
  • refactor(ci): migrate coverage PR comment to centralized workflow
  • refactor(ci): migrate docs to centralized workflows
  • refactor(ci): split release into prepare + release — one trigger per file
  • refactor(ci): use centralized reusable workflows from fluence-eu/ci-workflows

[0.12.0] - 2026-04-24

Added

  • feat(configuration): add profile enum for environment defaults

Style

  • style(spec): remove extra blank line to satisfy RuboCop

[0.11.0] - 2026-04-23

Added

  • feat(configuration): add ssl_verify, ssl_ca_file, and ssl_options
  • feat(configuration): add ENV fallback for settings
  • feat(client): support multi-tenant gateways with preconfig for Mosaic

CI

  • ci(release): recognise squash-merged release commits and allow manual publish (#43)
  • ci(release): recognise squash-merged release commits and allow manual publish

Documentation

  • docs(readme): refresh for multi-tenant, ENV fallback, Monitor
  • docs(client): correct access_token_for thread-safety note (Monitor, not Mutex)
  • docs(client): fill YARD gaps flagged by the PR yardstick report
  • docs(client): document ServiceNotAllowedError on HTTP verbs

Fixed

  • fix(configuration): deep-freeze every TenantConfig field, not only ssl_options
  • fix(http_client): harden SSL plumbing after PR review
  • fix(configuration): align YARD examples and isolate specs from ENV
  • fix(configuration): address PR review feedback
  • fix(client): harden multi-tenant — deep-freeze, string names, thread-safety, kwarg sentinel, docs

Other

  • chore(cliff): skip all merge commits from the changelog

Refactored

  • refactor(configuration): address TenantConfig review — deep-freeze, strict []
  • refactor(configuration): return a Data-based TenantConfig value object
  • refactor(client): centralize ServiceNotAllowedError message in the class
  • refactor(client): extract current_tenant_settings for readability

Tests

  • test(configuration): isolate class_attribute state in the around hook

[0.9.0] - 2026-04-20

Added

  • feat(client): reject backend service routing on SSR tenants

Fixed

  • fix(client): fail fast on SSR tenant before touching OAuth and thread-local

[0.8.0] - 2026-04-20

Fixed

  • fix(client): route API calls to gateway_url, fetch token from appcenter_url

[0.7.0] - 2026-04-20

Added

  • feat(config)!: add OAuth2 scope configuration with 'public' default

Other

  • chore(docs): hide instance methods, keep class-level as public API

[0.6.0] - 2026-04-20

Added

  • feat(response): fall back to body for non-JSON, add raw: kwarg
  • feat(errors): wrap Faraday and OAuth2 errors on HTTP verbs

Build

  • build(deps): bump actions/upload-pages-artifact from 3 to 5
  • build(deps): bump actions/deploy-pages from 4 to 5

Documentation

  • docs: address review feedback on PR 26
  • docs(errors): add summaries and @api tags to RequestError members

Fixed

  • fix(response): key body fallback on Content-Type, not truthiness

[0.5.0] - 2026-04-17

Added

  • feat(config)!: switch default URLs to fluence.eu domain

Documentation

  • docs(contributing): add running tests, architecture, and CI sections

[0.4.0] - 2026-04-16

Added

  • feat(client): add service kwarg and with_service block helper

Build

  • build(deps): bump actions/create-github-app-token from 2 to 3

CI

  • ci(coverage): show before/after diff vs base in PR comment
  • ci(coverage): surface undercover-flagged blocks in PR comment
  • ci(coverage): use undercover simplecov formatter
  • ci(release): create release PR via GitHub App token

Documentation

  • docs: rewrite README and fix coverage scope
  • docs: add YARD + yardstick documentation pipeline

Fixed

  • fix(client): only normalize symbol service names, leave strings untouched

Other

  • chore(gitignore): ignore .DS_Store

[0.3.0] - 2026-04-07

Added

  • feat(client): forward end-user bearer token to the gateway

CI

  • ci(coverage): point undercover at simplecov resultset
  • ci(coverage): add benchmark gem for ruby 4.0 compatibility

[0.2.0] - 2026-04-03

Added

  • feat: add hyphenated require path

Other

  • chore: remove Gemfile.lock and .idea/ from version control

Style

  • style: exclude hyphenated require file from Naming/FileName

Tests

  • test: add spec for hyphenated require path

[0.1.1] - 2026-04-03

Added

  • feat: add default URLs for gateway and appcenter
  • feat: add singleton Client with OAuth2 client_credentials
  • feat: add error classes
  • feat: add configuration module with Settings singleton

Build

  • build(deps): bump upload-artifact to v7 and download-artifact to v8

CI

  • ci: unify release system with Fluence gems
  • ci: add release system with GitHub Actions, changelog, and coverage

Documentation

  • docs: use source block syntax for GitHub Packages installation
  • docs: add YARD documentation and CONTRIBUTING.md
  • docs: add README with usage examples

Other

  • chore: rubocop config and auto-corrections
  • init: scaffold fluence-gateway-client gem

Refactored

  • refactor: remove Style/DoubleNegation, use explicit expired? check
  • refactor: rename token_url to appcenter_url with fixed /oauth/token path

Style

  • style: add name to all workflow steps for consistency