Release v2.0.0
chore: unify CHANGELOG and docs for v2.0.0 release
Changelog
Breaking: Entity normalization. See V2_MIGRATION.md and ENTITY_NORMALIZATION_PLAN.md.
Removed (from RouteData)
totalQueries,requestTime,queryTime,memoryUsage,accessCount,statusCodes,updatedAt— metrics move to aggregates fromRouteDataRecordor a dedicated aggregates layer.
Added (RouteDataRecord)
totalQueries,queryTime,memoryUsageper access record.
Added
- Export access records (CSV / JSON) – On the Access Records page, export individual
RouteDataRecordrows via Export Records (CSV) and Export Records (JSON). Uses the same filters as the records view (env, date range, route, status code, query time, memory). Requiresenable_access_records: true. New routes:nowo_performance.export_records_csv,nowo_performance.export_records_json. - Access Records: query time, memory, filters – Access Records page shows columns Queries, Query Time, Memory (formatted). Form filters: min/max query time (s), min/max memory (MB). Export and pagination preserve these filter params. RecordFilters and RouteDataRecordRepository support
minQueryTime,maxQueryTime,minMemoryUsage,maxMemoryUsage. - Index dashboard: Status Codes column – Routes table shows status codes with percentage and total responses per code (descending), only codes that have records. Total responses and error-rate warning when >10% non-2xx.
- Schema sync command –
nowo:performance:sync-schemasyncs bothroutes_dataandroutes_data_recordswith entity metadata (add missing, alter differing, optional drop with--drop-obsolete). Primary keyidis never dropped. - Drop obsolete option –
--drop-obsoletefornowo:performance:create-table,nowo:performance:create-records-table, andnowo:performance:sync-schema. Drops columns that exist in DB but not in the entity. - Create-records-table column updates –
--updatenow also alters existing columns when type, nullable or default differ (previously only added missing columns). - Translations – New/updated keys for status codes, total responses, error rate, query time, memory usage, min/max query time and memory in all supported locales.
Changed
- RouteData only holds identity (env, name, httpMethod, params) and metadata (createdAt, lastAccessedAt, reviewed, reviewedAt, reviewedBy, queriesImproved, timeImproved). Dashboard, API, notifications and exports use aggregated data or records instead of RouteData getters for metrics.
- Collector diagnostics when disabled – Web Profiler Performance panel shows full diagnostics even when tracking is disabled (route, request time, query count, query time, environment, processing mode, table status, dependency status). Subscriber always sets
configured_environments,current_environment, androute_namein the collector before any early return. - RebuildAggregatesCommand updates RouteData
lastAccessedAtfrom RouteDataRecord; metrics live in records.
Fixed
- Advanced Performance Statistics – Histograms not rendering: chart script moved to
scripts_extrablock so Chart.js is loaded before use; creation wrapped in IIFE withtypeof Chart !== 'undefined'check. - Access statistics with empty route filter – When
route=was present in the URL, the controller passed an empty string and no rows matched. Empty route is now normalized tonullso statistics are returned for all routes.
Added (tests)
- Models:
RecordFiltersTest(query time/memory filters),DeleteRecordsByFilterRequestTest(min/max query time and memory),StatisticsEnvFilterTest,ClearPerformanceDataRequestTest. - Form types:
StatisticsEnvFilterTypeTest,ClearPerformanceDataTypeTest,DeleteRecordTypeTest; extendedRecordFiltersTypeTestandDeleteRecordsByFilterTypeTestfor new fields. - Repository:
RouteDataRecordRepositoryAdvancedTest–getPaginatedRecordsanddeleteByFilterwith query time and memory filters; explicit calls with full parameter list. - DataCollector:
disabledReason,configuredEnvironments/currentEnvironment, diagnostics when disabled, table/dependency status,getProcessingMode. PerformanceMetricsSubscriberCollectorDiagnosticsTest,RouteDataWithAggregatesTest,SyncSchemaCommandTest.
Documentation
- COMMANDS.md:
--drop-obsoleteandnowo:performance:sync-schema. - INSTALLATION.md: Step 5 lists main commands; note on sync-schema after entity changes.
- UPGRADING.md: "Upgrading to 2.0.0" with migration steps; removed duplicate sections.
- PHPDoc: all bundle PHP docblocks and comments in English (constructors, params, returns, form types, models, commands, examples).
Commits
- chore: unify CHANGELOG and docs for v2.0.0 release (6ec2bfc)