All notable changes to this project will be documented here. The format follows Keep a Changelog and the versioning reflects gem releases published to RubyGems.
Contract change type: semantic change
- Standardized repository documentation using the PHCDevworks documentation
model established in
phcdevworks/spectre-tokens. - Added AI operating guides for shared agent behavior, Codex, Claude Code, Copilot, and Jules.
- Added roadmap and TODO planning documents for Ruby/Rails workspace stabilization.
- Added GitHub-integrated Codex and Copilot instruction files.
- Breaking (internal only):
RubyApiPackCloudways::Connection::CwConnectnow subclassesRubyApiPackCore::Connection::Base, inheriting shared URL building,200..299status handling (widened from a bare200check), andOj-based JSON parsing with a content-type guard.CwConnectnow only implements#auth_headers(the OAuth bearer token lookup) and an#api_getoverride for the rate-limit retry behavior. The pre-existingcloudways_api_connection/cloudways_api_post_connectionmethod names are kept as aliases toapi_get/api_postfor backward compatibility withCwLists/CwServer, which are unchanged. - Removed the direct
httparty/ojgemspec dependencies — both now come from the newruby_api_pack_core(~> 0.1) runtime dependency. RubyApiPackCloudways.configure/.configurationnow come fromRubyApiPackCore::Configurableinstead of a gem-local implementation; behavior is unchanged.RubyApiPackCloudways::Api::CwServernow extendsRubyApiPackCloudways::Handlers::ResponseValidator(kept local to this gem — itsexpected_keysignature differs fromruby_api_pack_core'sexpected_typevalidator and was not migrated) and validatesserver_list's response shape, matchingCwLists's existing use of the validator (previously onlyCwListsvalidated responses, soCwServerresponses went unchecked).- Removed the hardcoded
debug_output: $stdoutfromCwConnectandCwToken's HTTParty calls — this previously always printed raw HTTP wire traffic (including auth headers) to stdout in every environment, not just when debugging. - Removed debug
putsofCLOUDWAYS_API_*environment variables from the spec suite's globalbeforehook. - Fixed the rate-limit retry spec sleeping for a real 60 seconds on every test
run by stubbing
Kernel#sleepon the connection instance under test. - Reworked README, contributing, security, code of conduct, issue templates, and pull request template around this gem's Cloudways API responsibilities.
- Enabled RuboCop new-cop handling, removed duplicate lint config, and adjusted spec style so the documented validation gate passes.
- Added RubyGems MFA metadata to the gemspec.
0.4.0 - 2024-11-17
Release Title: Phase 0 - Improvements and Fixes
Contract change type: additive
- Added a countries endpoint wrapper.
- Added response validation across Cloudways API responses.
- Improved access-token expiration and caching behavior.
- Improved response parsing and error handling.
- Updated Ruby compatibility in preparation for Rails 8.
- Fixed the monitor-targets and monitor-durations endpoint behavior.
- Fixed SSL communication issues and token-refresh edge cases.
0.3.0 - 2024-11-01
Release Title: Phase 0 - Implemented Cloudways List API Endpoints
Contract change type: additive
- Added Cloudways list endpoint wrappers for applications, backup frequencies, countries, monitor durations, monitor targets, packages, providers, regions, server sizes, and settings.
- Added focused RSpec coverage for the list endpoints.
- Hardened JSON deserialization by parsing Cloudways responses with
Ojin strict mode. - Expanded configuration and endpoint documentation.
0.2.0 - 2024-10-30
Release Title: Phase 0 - Implemented Cloudways Server API Endpoints
Contract change type: additive
- Added Cloudways server endpoint wrappers and focused RSpec coverage.
- Added POST request support through
cloudways_api_post_connection.
- Expanded server endpoint setup and usage documentation.
0.1.0 - 2024-09-25
Release Title: Phase 0 - Official Stable Release
Contract change type: additive
- Initial release.