Skip to content

v4.2.0

Choose a tag to compare

@github-actions github-actions released this 26 Aug 07:45
· 69 commits to main since this release

[4.2.0] - 2026-08-26

πŸš€ Features

  • (storage) Add Azure AD credentials and cross-provider object listing
  • (clock) Add a Quiote\Support\Clock seam and convert every ambient now() read
  • (random) Add a Quiote\Support\Random seam and convert every ambient random_bytes/random_int read
  • (replay) Add quioteframework/replay with the effect-ledger primitives
  • (replay) Add a decorating PDO recorder and isolated-replay stub
  • (replay) Add a Propulsion query observer for the effect ledger
  • (replay) Add an HTTP client recording transport and isolated-replay stub
  • (replay) Add a cache recording decorator and isolated-replay stub
  • (replay) Add a queue-push recording decorator and an assert-only replay driver
  • (env) Add a Quiote\Support\Environment seam and a replay recorder/stub
  • (replay) Add a Doctrine DBAL query recorder for the effect ledger
  • (replay) Add an Eloquent query recorder for the effect ledger
  • (replay) Add a Cycle query recorder for the effect ledger
  • (replay) Add cassette format, recorder middleware, and console commands
  • (replay) Wire DB effects into live requests via a generic EffectSource seam
  • (replay) Wire Doctrine/Eloquent/Cycle DB effects into live requests
  • (replay) Add --as-test/ReplayTestCase test emission from a cassette
  • (replay) Add PDO cassette store and cassette:prune
  • (replay) Add an object-store-backed cassette store for Azure Blob
  • (replay) Add a cassette-index chain to resolve a bare id to a cassette
  • (replay) Build isolated replay mode, and make it the default
  • (replay) Isolate Propulsion by substituting the connection
  • (config) Resolve %env(NAME)% placeholders in compiled config at load time
  • (config) Add Rule::oneOf union schema type
  • (config) Let a plugin's enabled setting defer to the environment
  • (routing) Diagnose the views an action returns, not just the one it declares

πŸ› Bug Fixes

  • (execution) Give slot-rendered views the live ValidationManager
  • (storage) Require quioteframework/storage from the framework itself
  • (plugin) Close plugin-state cleanup gaps found auditing packages/*
  • (test) Distinguish a stored null from a miss in Psr16KeyRecordingCache
  • (replay) Make meta.effects_instrumented a real cassette field
  • (replay) Escape cassette text interpolated into emitted test comments
  • (replay) Redact response headers so Set-Cookie never enters a cassette
  • (replay) Bound cassette inflation against a decompression bomb
  • (replay) Cut truncated bodies and masked values on character boundaries
  • (replay-doctrine) Only snapshot a result set when a ledger is actually active
  • (replay) Refuse a positional ledger match instead of answering with another call's result
  • (replay) Bound effect payloads by bytes and report every truncation in meta
  • (replay) Redact the effect ledger at the one point every recorder shares
  • (replay) Gate live replay on safe methods, and gate emitted tests too
  • (replay) Close the three remaining secret-leak paths in recording
  • (replay) Make the PDO recorder faithful to the connection it decorates
  • (replay) Give a db effect's result one shape, and make the adapters compose
  • (replay) One timestamp rule, resilient index chain, and far fewer store round trips
  • (replay) Anchor the store path, honour the PSR contracts, and stop paying for discarded work
  • (replay) Treat a cassette as untrusted input on the replay path
  • (replay) Select the cassette store by config, not by plugin load order
  • (storage) Read ETags and oversized lengths correctly, and test the package
  • (ci) Scope the framework release notes by range, not by --current
  • (support) Make SystemEnvironmentReader see $_ENV, not just getenv()
  • (runtime) Read framework env vars through the environment seam
  • (ci) Scope package release notes by range, not by --current

🚜 Refactor

  • (storage) Decouple cloud-azure/cloud-s3/cloud-gcs from the framework
  • (filesystem) Extract Quiote\Filesystem* into its own package
  • (replay) Extract cassette projection and test emission

πŸ“š Documentation

  • (replay) Remove internal plan-doc citations from code comments
  • (replay) Add changelogs for the eight replay packages
  • (packages) Add the three missing package changelogs
  • (replay) Make the replay packages 4.0.0-RC1, not 4.0.0
  • (release) Track the pending v4.2.0-RC1 release plan and its open questions
  • (replay) Fold isolated mode into the changelogs and the release plan
  • (release) Correct the replay RC rationale now that isolated mode has landed
  • (replay) Record the Propulsion isolation in the changelogs
  • Add UPGRADING.md and make cloud-azure an RC
  • Prep v4.2.0-RC1
  • (storage) Record the ObjectMetadata fixes in the changelog
  • Refresh the v4.2.0-RC1 changelog for the storage fixes
  • (release) Split the cloud-azure and db-doctrine baselines
  • (upgrading) Correct the RC install recipes against the published versions
  • Prep v4.2.0-RC2
  • Prep v4.2.0
  • Fold the triad scanner change into the v4.2.0 changelog

πŸ§ͺ Testing

  • (config) Document environment-dependent value patterns for PHP-array databases files

βš™οΈ Miscellaneous Tasks

  • (ci) Add new replay packages to package split
  • (release) Bump the framework version to 4.2.0