Releases: Flexi-PHP/flexi-core
Release list
v3.1.0
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
What's Changed
- chore: add empty modules directory for framework structure by @cbatista8a in #77
- chore: tests improvement and coverage by @cbatista8a in #78
- feat: improve modules management by @cbatista8a in #79
- refactor: updates namespace to flexi by @cbatista8a in #80
- feat: improve modules management and namespace update to Flexi by @cbatista8a in #82
- feat: improve modules management by @cbatista8a in #83
Full Changelog: v2.0.0...v3.0.0
v2.0.0
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...
v1.5.1
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
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
v1.3.0
v1.2.0
v1.1.0
v1.0.0
What's Changed
- [fix] - Session cannot be started after headers have already been sent by @cbatista8a in #7
- [fix] - Missing class CliDTOInterface #9 by @cbatista8a in #10
- [fix] - Incorrect normalization of absolute paths in Windows by @cbatista8a in #8
- [refactor][utils] - parameterize file creation by @cbatista8a in #12
- [doc] - Create bug_report.md by @cbatista8a in #16
- feat: add Action for automate releases by @cbatista8a in #17
- doc: add security policy by @cbatista8a in #14
- [doc] - Create pull_request_template.md by @cbatista8a in #15
- feat: add issue templates by @cbatista8a in #18
- Unit test implementation by @Qupiter in #13
- ci: Automatic Releases Update by @cbatista8a in #21
- fix: add write permissions and configure git user by @cbatista8a in #22
- fix: add tag prefix by @cbatista8a in #23
- fix: comment git user config and remove tag_prefix parameter because … by @cbatista8a in #24
- 19 bug automatic releases dont work properly by @cbatista8a in #25
- 19 bug automatic releases dont work properly by @cbatista8a in #26
- 19 bug automatic releases dont work properly by @cbatista8a in #27
- fix: use ${{ !failure() }} that returns true when any previous step o… by @cbatista8a in #28
- fix: use needs with condition because this issue https://github.com/a… by @cbatista8a in #29
- fix: testSave fail #20 by @cbatista8a in #30
- fix: missing .env file during tests by @cbatista8a in #31
- Fix automatic tests by @cbatista8a in #32
- Update composer.json version by @cbatista8a in #33
- Update composer.json version by @cbatista8a in #34
- Grant Github Action permissions to push to protected branch by @cbatista8a in #35
- chore(ci): fix git permissions by @cbatista8a in #36
New Contributors
- @cbatista8a made their first contribution in #7
- @Qupiter made their first contribution in #13
Full Changelog: https://github.com/CubaDevOps/flexi/commits/v1.0.0