Skip to content

Releases: nowo-tech/PerformanceBundle

Release v2.0.15

24 Mar 22:13

Choose a tag to compare

Release v2.0.15

Changelog

Added

  • Composertest-coverage-90 script: runs test-coverage then scripts/check-coverage.php with --min-percent=90 (statements and elements). Intended for maintainers; CI still enforces 80% (see .github/workflows/ci.yml).
  • Makefilemake test-coverage-90 runs the same check inside Docker.

Changed

  • PHPUnit coverageCreateTableCommand.php and CreateRecordsTableCommand.php are 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; PerformanceMetricsService integration cases (route params on access records, duplicate requestId, saveAccessRecords disabled); unit tests for recordMetricsSync with closed EntityManager, subscriber environment fallback without Kernel, and extra schema-command failure paths (metadata/SchemaTool errors, 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 (RouteData vs RouteDataRecord); removed obsolete metric columns on RouteData; “How it works” and FrankenPHP note aligned with demos (Caddyfile.dev vs 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.mdbundles.php example 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 removed RouteData::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

09 Mar 14:13

Choose a tag to compare

Release v2.0.14

Changelog

Added

  • Tests – Unit tests for CreateTableCommand and CreateRecordsTableCommand (execute with --update when table does not exist in schema manager; failure path shows Doctrine command suggestions). Unit tests for TableStatusChecker when registry returns non-Connection (tableExists, getMissingColumns). Integration test for RouteDataRecordRepository::findOneByRequestId when record exists.

Changed

  • Coverage – Removed exclusions of CreateTableCommand and CreateRecordsTableCommand from PHPUnit coverage; all src/ 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=80 in both the test job (PHP 8.2) and the coverage job.

Commits

  • Prepare v2.0.14 release (8195e68)
  • Merge branch 'main' of github.com:nowo-tech/PerformanceBundle into main (561495c)
  • chore: update configuration and dependencies (d13287b)
  • Apply PHP CS Fixer fixes [skip ci] (c58b2d6)

Release v2.0.13

02 Mar 11:00

Choose a tag to compare

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

  • chore(release): prepare v2.0.13 - changelog and upgrading (ac23c56)
  • feat(docker): enhance Docker setup and configuration (c73387a)

Release v2.0.12

12 Feb 18:58

Choose a tag to compare

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 calling VarDumper::setHandler(), so Symfony’s default handler (DumpDataCollector) is used and dump() / dd() output appears in the Web Debug Toolbar. The fallback handler (writing to stderr via CliDumper) is now registered only when PHP_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 (using uniqid). 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

03 Feb 17:15

Choose a tag to compare

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 includes create-records-table and check-dependencies. README: badges fixed, Requirements normalized (Symfony/Doctrine), Commands list and Quick Start (table creation) updated; Documentation section descriptions clarified.
  • Recipe – Default ignore_routes now includes web_profiler* to match bundle default.

Commits

  • chore(release): 2.0.11 changelog and upgrading (30d01eb)
  • feat(docs): enhance README and configuration documentation (ff1a545)
  • feat(performance): add table status check configuration (bbfa77b)
  • fix: Standardize icon dimensions in Performance templates (de5c21f)

Release v2.0.10

03 Feb 17:02

Choose a tag to compare

Release 2.0.10

Changelog

Changed

  • Documentation – Updated BRANCHING.md and CONTRIBUTING.md.
  • Demo – Updated bin/console in Symfony 7 and Symfony 8 demo projects.

Commits

  • Release 2.0.10: docs and demo updates (38951c0)
  • fix: Update icon dimensions in Performance UI (6dc50aa)
  • Merge branch 'main' of github.com:nowo-tech/PerformanceBundle into main (eeb6d8c)
  • Apply PHP CS Fixer fixes [skip ci] (6eb210a)

Release v2.0.9

03 Feb 17:02

Choose a tag to compare

Release v2.0.9

Release v2.0.8

02 Feb 09:58

Choose a tag to compare

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-table anchor 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 new referer and user parameters) and testGetPaginatedRecordsReturnsStructure (added missing addSelect mock on QueryBuilder).

Commits

  • feat: Enhance access records with new filters and UI improvements (71254c7)
  • docs: Update changelog and upgrading guide for route path enhancements (5256508)
  • refactor: Update route path handling to include query strings (b1e5c08)

Release v2.0.7

02 Feb 07:35

Choose a tag to compare

feat: Enhance access records with route parameters and path

  • Added route_params (JSON) and route_path (VARCHAR 2048) fields to RouteDataRecord for 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 RouteDataRecord now 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 include path and params. Run php bin/console nowo:performance:create-records-table --update or nowo:performance:sync-schema after updating.

See UPGRADING for migration steps.


Commits

  • feat: Enhance access records with route parameters and path (089aa83)
  • Merge branch 'main' of github.com:nowo-tech/PerformanceBundle into main (ec11dee)
  • Apply PHP CS Fixer fixes [skip ci] (2657ad1)

Release v2.0.6

02 Feb 06:34

Choose a tag to compare

feat: Add symfony/yaml dependency and enhance cache configuration

  • Added symfony/yaml as 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) via framework.cache.pools. PerformanceCacheService uses this pool by default instead of cache.app, isolating bundle cache from application cache.
  • Cache configuration – New nowo_performance.cache.pool option to override the cache pool (e.g. cache.app to share with the application). See CONFIGURATION.
  • TableStatusChecker: cache getMissingColumnsgetMissingColumns() results are now cached (filesystem, 5 min TTL) to reduce information_schema queries. Uses CACHE_TTL_SECONDS constant (300s) shared with tableExists and tableIsComplete.
  • symfony/yaml – Added as explicit require dependency for YamlFileLoader when loading services config.

Added (tests)

  • TableStatusCheckerTesttestGetMissingColumnsReturnsCachedValueWhenCacheHit, testTableExistsWhenNoCacheAndDatabaseReturnsTrue, testRecordsTableExistsReturnsFalseWhenConnectionFails, and additional cache/exception path tests.
  • PerformanceExtensionTesttestLoadCustomCachePoolConfiguration.
  • ConfigurationTest – Default cache.pool assertion.
  • RouteDataRecordRepositoryTesttestGetStatisticsByHourWithRouteNameAndStatusCodeFilters.
  • PerformanceAnalysisServiceTest – Correlations, efficiency with null metrics, traffic distribution with single route.
  • RouteDataWithAggregatesTestgetStatusCodes null, getStatusCodeCount for non-existent code, getStatusCodeRatio with empty codes.
  • PerformanceMetricsServiceGetRouteDataAndRoutesByEnvTesttestSetMessageBusAcceptsNull, 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)