Skip to content

Release v2.0.0

Choose a tag to compare

@github-actions github-actions released this 28 Jan 14:06

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 from RouteDataRecord or a dedicated aggregates layer.

Added (RouteDataRecord)

  • totalQueries, queryTime, memoryUsage per access record.

Added

  • Export access records (CSV / JSON) – On the Access Records page, export individual RouteDataRecord rows 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). Requires enable_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 commandnowo:performance:sync-schema syncs both routes_data and routes_data_records with entity metadata (add missing, alter differing, optional drop with --drop-obsolete). Primary key id is never dropped.
  • Drop obsolete option--drop-obsolete for nowo:performance:create-table, nowo:performance:create-records-table, and nowo:performance:sync-schema. Drops columns that exist in DB but not in the entity.
  • Create-records-table column updates--update now 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, and route_name in the collector before any early return.
  • RebuildAggregatesCommand updates RouteData lastAccessedAt from RouteDataRecord; metrics live in records.

Fixed

  • Advanced Performance Statistics – Histograms not rendering: chart script moved to scripts_extra block so Chart.js is loaded before use; creation wrapped in IIFE with typeof 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 to null so 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; extended RecordFiltersTypeTest and DeleteRecordsByFilterTypeTest for new fields.
  • Repository: RouteDataRecordRepositoryAdvancedTestgetPaginatedRecords and deleteByFilter with 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-obsolete and nowo: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)