Skip to content

Releases: Flexi-PHP/flexi-core

v3.1.0

Choose a tag to compare

@cbatista8a cbatista8a released this 11 Dec 11:11
2aa185a

What's Changed

  • feat: adds cache to LocalModuleDetector by @cbatista8a in #90
  • fix: use rebase instead of pull for syncing develop branch with main by @cbatista8a in #91

Full Changelog: v3.0.0...v3.1.0

v3.0.0

Choose a tag to compare

@cbatista8a cbatista8a released this 19 Nov 22:52

What's Changed

Full Changelog: v2.0.0...v3.0.0

v2.0.0

Choose a tag to compare

@cbatista8a cbatista8a released this 06 Nov 12:25

2.0.0 (2025-11-06)

Bug Fixes

  • comment out unnecessary permission setting step in release workflow (69e98be)
  • improve Git permissions handling and streamline version bump process in release workflow (ce4dab7)
  • improve Git permissions handling and streamline version bump process in release workflow (#76) (a6fdbb7)
  • improve release building (#70) (a1ead17), closes #67 #68
  • remove unnecessary space in webhook_secret in .env.testing.example (3b144fd)
  • remove unnecessary space in webhook_secret in .env.testing.example (db2c3d7)
  • remove unnecessary spaces in .env.example and update semver.yml to configure environment file before composer install (4bb0334)
  • reorder format code step for proper execution in release process (6074770)
  • reorder format code step for proper execution in release process (4fe5b3f)
  • uncomment permission setting step in release workflow and add GitHub token to PHP setup (8806b74)
  • update checkout action to v4 and clean up release job steps (d7457b6)
  • update checkout action to v4 and clean up release job steps (#75) (d3d1ad1)
  • update composer install command to prevent script execution during pipeline (4480d13)
  • update composer install command to prevent script execution during pipeline (16d2e48)
  • update dispatch_mode to synchronous and improve dotenv fallback logic in bootstrap testing (f05c901)
  • update GitHub Actions to use checkout@v4 and improve permission handling in release workflow (58c2589)

Features

  • add .editorconfig and .gitattributes for consistent coding styles and line endings (7da75d0)
  • core and modules separation (#68) (39541fe)
  • It introduces full compatibility with the PSR standard, allowing separation between the responsibilities of the kernel and the modules. (#67) (ae5121a)
  • separates core and modules (#69) (f0df4ac), closes #67 #68

BREAKING CHANGES

  • HttpHandler now requires ResponseFactoryInterface injected via constructor

Changes:

  • HttpHandler: Changed from 'new HttpFactory()' to injected ResponseFactoryInterface parameter
  • All 4 controllers updated: HomeController, WebHookController, HealthController, NotFoundController
  • New test doubles: DummyStream, DummyResponse, DummyResponseFactory (pure PSR implementations)
  • Updated test files: RouterTest, JWTAuthMiddlewareTest, WebHookControllerTest
  • Contracts package now truly PSR-only (no GuzzleHttp imports)
  • Tests now Guzzle-independent (use pure PSR test doubles)
  • All 168 tests passing (328 assertions)

Benefits:
✅ Dependency Inversion: High-level modules depend on PSR interfaces, not concrete implementations
✅ Testability: Easy to inject test doubles or mock implementations
✅ Package Purity: Contracts contains only PSR standard interfaces
✅ Flexibility: Different ResponseFactoryInterface implementations can be used

Architecture:

  • HttpHandler now uses constructor injection for ResponseFactoryInterface
  • TestHttpHandler has optional parameter with DummyResponseFactory default
  • Pure PSR test doubles eliminate external library dependencies from tests
  • Clear separation between production (Guzzle) and test (Dummy) implementations

Files modified: 8
Files created: 5 (3 test doubles + 2 docs)

  • fix: update LogLevel import to use the correct namespace

  • refactor: Move AuthenticatedController to Auth module

Move AuthenticatedController from Home to Auth module where it logically belongs.
This controller demonstrates authentication with the AuthCheckMiddleware.

Changes:

  • Moved: modules/Home/Infrastructure/Controllers/AuthenticatedController.php
    → modules/Auth/Infrastructure/Controllers/AuthenticatedController.php
  • Created: modules/Auth/Config/routes.json with auth-example route
  • Updated: modules/Home/Config/routes.json (removed auth-example route)
  • Updated: AuthenticatedController now properly injects ResponseFactoryInterface

Benefits:
✅ Better module organization: Authentication examples in Auth module
✅ Cleaner separation of concerns: Home module focuses on homepage only
✅ Consistent with new dependency injection pattern

Tests: All 171 tests passing (333 assertions)

  • feat: Implement Auth Module with Basic Authentication and Middlewares
  • Added comprehensive documentation for the Auth module, detailing its features, components, and usage.
  • Introduced BasicAuthMiddleware for handling HTTP Basic Authentication.
  • Created LoginController for managing login requests and responses.
  • Developed DefaultCredentialsVerifier for secure password verification.
  • Implemented tests for DefaultCredentialsVerifier to ensure correct password handling and timing attack prevention.
  • Added BasicAuthMiddlewareTest to validate authentication flow, including handling of valid and invalid credentials.
  • Established event dispatching for authentication events to enhance monitoring and logging.
  • Included examples for configuring credentials and authenticating users via cURL and PHP.
  • fix: Update middleware reference in routes and add test for middleware handling

  • refactor: Update event logging to include detailed request and response information

  • test: Update log message format and adjust expectations in RouterTest

  • refactor: moves LoggerEventListener to Logging module for event logging

  • Introduce ConfigurationInterface and refactor PsrLogger to use it
  • refactor: replace Configuration class with ConfigurationInterface in ContainerTest
  • removes old EventListener class
  • feat: Implement Cache Module with File and InMemory drivers, update service configuration

  • refactor: Replace Configuration class with ConfigurationInterface in Application

  • fix: Add missing return type annotation for get method in InMemoryCache

  • feat: Implement ConsoleExceptionFormatter for improved error handling in CLI

  • adds some service alias on modules for console commands discovering
  • refactor: moves DTOFactory to the Cli namespace

  • feat: introduce composer.json into modules

  • Add use cases for module management

  • Update dependency injection and service definitions

  • Modify ContainerFactory to check for installed modules before initializing services.

  • Adjust Container to handle missing services gracefully.

test: Remove obsolete tests and update class factory tests

  • feat: Implement installed modules filtering in Core

feat(event): Introduce RouteNotFoundEvent and RouteNotFoundListener on module to avoid direct dependencies

  • Created RouteNotFoundEvent to handle 404 scenarios with custom responses.
  • Implemented RouteNotFoundListener to manage route not found events and redirect to a 404 page.
  • Updated EventBus to register and execute event listeners without module dependencies.

chore(tests): General updates to tests for improved reliability

    • refactor: it separates core testing from module testing.

This allows each module to test its functionality independently, while the core validates the correct functioning of the entire application.

  • HttpHandler now requires ResponseFactoryInterface injected via constructor

Changes:

  • HttpHandler: Changed from 'new HttpFactory()' to injected ResponseFactoryInterface parameter
  • All 4 controllers updated: HomeController, WebHookController, HealthController, NotFoundController
  • New test doubles: DummyStream, DummyResponse, DummyResponseFactory (pure PSR implementations)
  • Updated test files: RouterTest, JWTAuthMiddlewareTest, WebHookControllerTest
  • Contracts package now truly PSR-only (no GuzzleHttp imports)
  • Tests now Guzzle-independent (use pure PSR test doubles)
  • All 168 tests passing (328 assertions)

Benefits:
✅ Dependency Inversion: High-level modules depend on PSR interfaces, not concrete implementations
✅ Testability: Easy to inject test doubles or mock implementations
✅ Package Pur...

Read more

v1.5.1

Choose a tag to compare

@cbatista8a cbatista8a released this 26 Oct 14:15

1.5.1 (2025-10-26)

Bug Fixes

  • add unversioned modules (6689cb3)
  • adds unversioned modules (6dbbda6), closes #64
  • test data reference (7ad209c), closes #65
  • update EventBusTest to include Configuration in PsrLogger initialization (d3dbc05)
  • update log path in InFileLogRepositoryTest to use test log file (61626ac)
  • update service retrieval logic to use instanceof for cache and factory services (9c80921)

v1.5.0

Choose a tag to compare

@cbatista8a cbatista8a released this 23 Oct 13:36

1.5.0 (2025-10-23)

Bug Fixes

  • add missing use statements for CacheInterface and CacheKeyGeneratorTrait in ObjectBuilder (ba41edb)
  • adds missing env variable (7c36c32)
  • inject cache dependency into ObjectBuilder instantiation (982d18f)
  • remove extra space in webhook_secret assignment in .env.testing and .env.testing.example (8e923fb)
  • replace instantiation of TestHttpHandler with a mock in JWTAuthMiddlewareTest (ac94a59)
  • update ClassFactoryTest to inject cache dependency and modify JWTAuthMiddlewareTest to use TestHttpHandler directly (89aa327)
  • update environment configuration file path in semver workflow (10759db)
  • wrong namespace used to instantiate ContainerFactory in Router class (#55) (9d143a3)
  • wrong namespace used to instantiate ContainerFactory in Router class (#55) (041dcd2)
  • wrong namespace used to instantiate ContainerFactory in Router class (#55) (6137e87)
  • wrong namespace used to instantiate ContainerFactory in Router class (#55) (a656ece)

Features

  • add example environment configuration file (df4c852)
  • adds a simple in memory cache implementing Psr standard (902e257)
  • adds a simple in memory cache implementing Psr standard (8e01a6c)
  • adds a simple in memory cache implementing Psr standard (967fed8)
  • adds a simple in memory cache implementing Psr standard (4cf659c)
  • adds a simple in memory cache implementing Psr standard (6336124)
  • container refactor to lazy loading (#56) (bb49bd7)
  • container refactor to lazy loading (#56) (e81462f)
  • container refactor to lazy loading (#56) (498de73)
  • container refactor to lazy loading (#56) (0c01228)
  • container refactor to lazy loading (#56) (10e0925)
  • container refactor to lazy loading (#56) (6ad28ee)
  • implements webhook for receiving events from external systems in flexi (#50) (88d52c9)
  • implements webhook for receiving events from external systems in flexi (#50) (24f8f1b)
  • implements webhook for receiving events from external systems in flexi (#50) (e3cbcf3)
  • implements webhook for receiving events from external systems in flexi (#50) (68a349b)
  • includes webhook for external events and lazy loading containers with cache. (#57) (beb7eb9), closes #50
  • includes webhook for external events and lazy loading containers with cache. (#57) (f4b9e7e), closes #50
  • includes webhook for external events and lazy loading containers with cache. (#57) (439df3e), closes #50
  • includes webhook for external events and lazy loading containers with cache. (#57) (75d288a), closes #50
  • use the psr cache implementation on flexi container and classfactory (#53) (9dca0f2)
  • use the psr cache implementation on flexi container and classfactory (#53) (875affa)
  • use the psr cache implementation on flexi container and classfactory (#53) (b2dd2e1)
  • use the psr cache implementation on flexi container and classfactory (#53) (9ceb0ec)
  • use the psr cache implementation on flexi container and classfactory (#53) (d2cbdb3)
  • use the psr cache implementation on flexi container and classfactory (#53) (033b801)
  • use the psr cache implementation on flexi container and classfactory (#53) (e48bcd4)
  • use the psr cache implementation on flexi container and classfactory (#53) (508ca4b)
  • use the psr cache implementation on flexi container and classfactory (#53) (578101e)
  • use the psr cache implementation on flexi container and classfactory (#53) (225ee16)
  • use the psr cache implementation on flexi container and classfactory (#53) (bbd6831)
  • use the psr cache implementation on flexi container and classfactory (#53) (2235173)

v1.4.0

Choose a tag to compare

@cbatista8a cbatista8a released this 05 Apr 17:44

1.4.0 (2025-04-05)

Features

  • includes webhook for external events and lazy loading containers with cache. (#57) (c84455e), closes #50

v1.3.0

Choose a tag to compare

@cbatista8a cbatista8a released this 08 Oct 16:42

1.3.0 (2024-10-08)

Bug Fixes

  • set right owner to avoid issues with git permissions (c8b7438)

Features

  • add asynchronous eventbus and implement stoppable events (#43) (7a269a0)

v1.2.0

Choose a tag to compare

@cbatista8a cbatista8a released this 01 Oct 15:43

1.2.0 (2024-10-01)

Bug Fixes

  • class factory now implement a cache system and call build method only the first time (b162a55)

Features

  • EventBus introduction to PSR standard (89f2b1c)
  • implement Stoppable Events (ae05e36)

v1.1.0

Choose a tag to compare

@cbatista8a cbatista8a released this 26 Jul 16:07

1.1.0 (2024-07-26)

Features

  • add upgrader package as dependency (1e8aae5)

v1.0.0

Choose a tag to compare

@cbatista8a cbatista8a released this 06 Jul 18:06

What's Changed

New Contributors

Full Changelog: https://github.com/CubaDevOps/flexi/commits/v1.0.0