Releases: nowo-tech/PerformanceBundle
Releases · nowo-tech/PerformanceBundle
Release v2.0.15
Release v2.0.15
Changelog
Added
- Composer –
test-coverage-90script: runstest-coveragethenscripts/check-coverage.phpwith--min-percent=90(statements and elements). Intended for maintainers; CI still enforces 80% (see.github/workflows/ci.yml). - Makefile –
make test-coverage-90runs the same check inside Docker.
Changed
- PHPUnit coverage –
CreateTableCommand.phpandCreateRecordsTableCommand.phpare excluded from the Clover/HTML coverage source again. Their DBAL/SQL surface inflates the denominator and makes a 90% aggregate impractical; they remain exercised by unit (CreateTableCommandTest,CreateRecordsTableCommandTest) and integration CLI tests. - Tests – Dashboard integration follows redirects before asserting status; chart data API coverage;
PerformanceMetricsServiceintegration cases (route params on access records, duplicaterequestId,saveAccessRecordsdisabled); unit tests forrecordMetricsSyncwith closedEntityManager, subscriber environment fallback withoutKernel, and extra schema-command failure paths (metadata/SchemaToolerrors, force + drop). Test docblocks and related comments use English only. - Refactoring – Type hints and assignments aligned for consistency across bundle and tests.
- SetRouteMetricsCommand – Inline help describes actual behaviour (no “worse than before” gate).
Documentation
- README – Entity section for v2 (
RouteDatavsRouteDataRecord); removed obsolete metric columns onRouteData; “How it works” and FrankenPHP note aligned with demos (Caddyfile.devvs worker). Manual metrics section clarifies the recording pipeline. - COMMANDS.md (
nowo:performance:set-route) – Removed incorrect “only update if worse” behaviour; documented v2 recording path. - DEMO-FRANKENPHP.md –
bundles.phpexample aligned with Symfony 8 demo (Doctrine, Web Profiler, UX Twig Component, UX Icons, Twig Inspector). - NOTIFICATIONS.md – Example listener uses
AfterMetricsRecordedEvent::getRequestTime()(v2) instead of removedRouteData::getRequestTime().
Commits
- chore(release): prepare v2.0.15 (da8fc9f)
- Refactor type hinting and variable assignments for consistency (1d6f01b)
- Update configuration and scripts for improved testing and coverage reporting (7900149)
- Add unit tests for NowoPerformanceBundle and DiagnoseCommand (c5d5f24)
- Remove strict types declaration from reference.php for compatibility with auto-generated files (9743dae)
- Refactor test files to improve code consistency (9c77025)
Release v2.0.14
Release v2.0.14
Changelog
Added
- Tests – Unit tests for
CreateTableCommandandCreateRecordsTableCommand(execute with--updatewhen table does not exist in schema manager; failure path shows Doctrine command suggestions). Unit tests forTableStatusCheckerwhen registry returns non-Connection (tableExists,getMissingColumns). Integration test forRouteDataRecordRepository::findOneByRequestIdwhen record exists.
Changed
- Coverage – Removed exclusions of
CreateTableCommandandCreateRecordsTableCommandfrom PHPUnit coverage; allsrc/code is now included in the report. - CI – GitHub Actions now enforces a minimum code coverage of 80% (statements and elements) via
scripts/check-coverage.php --min-percent=80in both the test job (PHP 8.2) and the coverage job.
Commits
Release v2.0.13
Release v2.0.13
Changelog
Added
- Docker and development – Dockerfiles updated to PHP 8.2 Alpine; docker-compose streamlined with consistent HTTP ports across demos; Makefile gains commands for rebuilding images, restarting containers, and updating the bundle; PHP-CS-Fixer configuration enhanced with Symfony conventions; RELEASE.md and SECURITY.md added under docs.
- Demo – FrankenPHP Caddyfile for Symfony 7 and 8 demos; demo Makefiles and READMEs updated with access URLs and setup instructions.
Changed
- CI – GitHub Actions workflow simplified; testing integrated into main docker-compose setup.
- Demo – Removed deprecated
docker-compose.test.yml; demo docker-compose and Makefiles refactored.
Removed
- docker-compose.test.yml – Deprecated test compose file removed; use main docker-compose for tests.
Commits
Release v2.0.12
Release 2.0.12
Changelog
Added
- BEHAVIOUR_AND_CHANGES.md – New doc explaining notable behaviours and non-obvious changes (e.g. VarDumper in web vs CLI). Documentation index and root README updated to link to it.
Changed
- VarDumper in
NowoPerformanceBundle::boot()– In web context the bundle no longer replaces the VarDumper handler; it returns before callingVarDumper::setHandler(), so Symfony’s default handler (DumpDataCollector) is used anddump()/dd()output appears in the Web Debug Toolbar. The fallback handler (writing to stderr via CliDumper) is now registered only whenPHP_SAPI === 'cli'. See BEHAVIOUR_AND_CHANGES.md. - Documentation – Docs index and references translated to English (docs/README.md, CONFIGURATION.md, INSTALLATION.md).
Fixed
- QueryTrackingMiddleware – Each query execution now gets a unique
queryId(usinguniqid). Previously the same SQL reused the same id, so repeated executions (e.g. N+1) were under-counted in metrics.
Commits
- chore(docs): update CHANGELOG for clarity and consistency (0c7e7a3)
- feat(docs): add Behaviour and Notable Changes documentation (b867cc6)
- Merge branch 'main' of github.com:nowo-tech/PerformanceBundle into main (a059271)
- fix(QueryTrackingMiddleware): enhance query ID uniqueness (06443f9)
- Apply PHP CS Fixer fixes [skip ci] (acc6d1d)
Release v2.0.11
Release 2.0.11
Changelog
Added
- README screenshots – New dashboard section with three screenshots (Performance Metrics Dashboard, Advanced Performance Statistics, Access Statistics by Hour) and brief descriptions. Images in
docs/images/.
Changed
- Documentation – Full configuration example in CONFIGURATION.md aligned with
Configuration.php(all options and defaults). INSTALLATION.md Step 5 verify list now includescreate-records-tableandcheck-dependencies. README: badges fixed, Requirements normalized (Symfony/Doctrine), Commands list and Quick Start (table creation) updated; Documentation section descriptions clarified. - Recipe – Default
ignore_routesnow includesweb_profiler*to match bundle default.
Commits
Release v2.0.10
Release 2.0.10
Changelog
Changed
- Documentation – Updated BRANCHING.md and CONTRIBUTING.md.
- Demo – Updated
bin/consolein Symfony 7 and Symfony 8 demo projects.
Commits
Release v2.0.9
Release v2.0.9
Release v2.0.8
feat: Enhance access records with new filters and UI improvements
- Added Referer and User filters to the Access Records page, allowing for partial match filtering. These filters are integrated into pagination, export options, and delete-by-filter functionality.
- Implemented scroll preservation in the Routes table when sorting or changing pages, improving user experience.
- Updated tests for RouteDataRecordRepository to accommodate new filter parameters.
- Enhanced documentation in the changelog and upgrading guide to reflect these changes.
Changelog
Added
- Access records: Referer and User filters – The Access Records page now supports filtering by Referer and User. Both use partial match (LIKE). The form includes Referer and User text fields; filters apply to pagination, export (CSV/JSON), and delete-by-filter.
RecordFilters,RouteDataRecordRepository,DeleteRecordsByFilterRequest, and export endpoints support the new filters. - Routes table: Scroll preservation – When sorting by column or changing page in the routes table, the browser scrolls to the
#routes-tableanchor so the table stays in view instead of jumping to the top. Sort links and paginator links append the fragment.
Fixed
- RouteDataRecordRepository tests – Fixed
testDeleteByFilterReturnsZeroWhenNoRecordsMatch(updated call for newrefereranduserparameters) andtestGetPaginatedRecordsReturnsStructure(added missingaddSelectmock on QueryBuilder).
Commits
Release v2.0.7
feat: Enhance access records with route parameters and path
- Added
route_params(JSON) androute_path(VARCHAR 2048) fields toRouteDataRecordfor improved access tracking. - Updated the Access Records UI to display a clickable Path column and include parameters in CSV/JSON exports.
- Modified related services, controllers, and message handlers to support the new fields.
- Updated documentation and changelog to reflect these changes and provide migration instructions.
Changelog
Added
- Access records: route params and path – Each
RouteDataRecordnow stores the route parameters (route_params, JSON) and the request path (route_path, VARCHAR 2048) for the specific access. The Access Records table shows a Path column with a clickable link to the exact URL that was hit (e.g./user/123). When path is not available, params are shown as JSON. CSV and JSON exports includepathandparams. Runphp bin/console nowo:performance:create-records-table --updateornowo:performance:sync-schemaafter updating.
See UPGRADING for migration steps.
Commits
Release v2.0.6
feat: Add symfony/yaml dependency and enhance cache configuration
- Added
symfony/yamlas a required dependency for loading YAML service configurations. - Introduced a dedicated cache configuration option for the performance bundle, allowing users to specify a custom cache pool.
- Updated documentation to reflect the new cache features and configuration options.
- Enhanced the changelog and upgrading guide with details on the new cache pool and its usage.
Changelog
Added
- Dedicated cache pool – The bundle now registers a dedicated filesystem cache pool
nowo_performance.cache(TTL 1h) viaframework.cache.pools.PerformanceCacheServiceuses this pool by default instead ofcache.app, isolating bundle cache from application cache. - Cache configuration – New
nowo_performance.cache.pooloption to override the cache pool (e.g.cache.appto share with the application). See CONFIGURATION. - TableStatusChecker: cache getMissingColumns –
getMissingColumns()results are now cached (filesystem, 5 min TTL) to reduceinformation_schemaqueries. UsesCACHE_TTL_SECONDSconstant (300s) shared withtableExistsandtableIsComplete. - symfony/yaml – Added as explicit
requiredependency forYamlFileLoaderwhen loading services config.
Added (tests)
- TableStatusCheckerTest –
testGetMissingColumnsReturnsCachedValueWhenCacheHit,testTableExistsWhenNoCacheAndDatabaseReturnsTrue,testRecordsTableExistsReturnsFalseWhenConnectionFails, and additional cache/exception path tests. - PerformanceExtensionTest –
testLoadCustomCachePoolConfiguration. - ConfigurationTest – Default
cache.poolassertion. - RouteDataRecordRepositoryTest –
testGetStatisticsByHourWithRouteNameAndStatusCodeFilters. - PerformanceAnalysisServiceTest – Correlations, efficiency with null metrics, traffic distribution with single route.
- RouteDataWithAggregatesTest –
getStatusCodesnull,getStatusCodeCountfor non-existent code,getStatusCodeRatiowith empty codes. - PerformanceMetricsServiceGetRouteDataAndRoutesByEnvTest –
testSetMessageBusAcceptsNull,testSetMessageBusAcceptsObject.
See UPGRADING for migration steps.
Commits
- feat: Add symfony/yaml dependency and enhance cache configuration (189fe1a)
- feat: Add cache configuration to performance bundle (060f8b4)
- test: Enhance unit tests for command help, form submissions, and performance metrics (ee7fdc8)
- Merge branch 'main' of github.com:nowo-tech/PerformanceBundle into main (9767735)
- test: Add unit tests for handling stage and test environments (317d80b)
- Apply PHP CS Fixer fixes [skip ci] (6529834)
- Merge branch 'main' of github.com:nowo-tech/PerformanceBundle into main (7ad358f)
- refactor: Update Makefile and PHPUnit configuration for improved test execution (5bd3cd3)
- Apply PHP CS Fixer fixes [skip ci] (4ba767e)