openvidu/openvidu-dashboard/openspec/changes/ui-review-fixes/tasks.md

3.1 KiB

Tasks

1. Backend

  • 1.1 Replace the index discovery of InfoService.storageEntry() with the time field map of design D6 (the global scope for analytics_daily, firstSeenAt for nodes, no entry for tracks, track_subscriptions and track_stats). Verify with the info unit tests and an integration test of "Oldest per collection" that runs explain() on every query: one document examined, COLLSCAN only on nodes.

2. UI library

  • 2.1 Set the x-axis minInterval from the label unit, the y-axis minInterval: 1 for all-integer data and the closing point of step series in timeSeriesOption(). Verify with chart-options unit tests of the three scenarios of "Time-series chart fixed to the range".
  • 2.2 Make ovd-skeleton invisible for its first 300 ms while keeping its height, and drop the fade under prefers-reduced-motion. Verify with a component test of the delay and an e2e check that a fast mocked response paints no skeleton bar.
  • 2.3 Round formatDuration() to the smallest unit shown, add the floor mode and use it in ovd-duration while running. Verify with formatter unit tests of "Rounded durations" and a duration component test of "Running and then ended".
  • 2.4 Add BROWSER_LABELS and clientOsLabel() to format/labels.ts, export them, and label the browser donut and its table with them. Verify with label unit tests of "Browser keys" and "Reported OS" and an Analytics component test of "Sessions without a browser".
  • 2.5 Render the footer version as plain text. Verify with the sidenav footer test.
  • 2.6 Hint "No room ended in this range" on both room averages when roomsEnded is 0. Verify with Analytics component tests of "No room ended yet" and "Missing average".
  • 2.7 Rename the Egress page tile "Total duration" with INFO_TEXTS.egressTotalDuration. Verify with the Egress page test of the tiles and the info tip.
  • 2.8 Add the Total row and the "—" tooltip to the About storage table. Verify with About tab tests of "Storage total" and "Collection without an oldest date".
  • 2.9 Add the locked tracks/:trackSid route, and map track in exactIdTarget() to it. Verify with a global search test of "Exact track ID" and an e2e test of "Track route in CE".
  • 2.10 Space the media statistics notice of the Data transferred card from the tiles below it. Verify by a screenshot of an Analytics range with partial media statistics.

3. End-to-end and docs

  • 3.1 Update the e2e fixtures and screenshots whose durations or labels change, and run ./dashboard.sh e2e. Verify that it passes.
  • 3.2 Update the library README and AGENTS.md notes that list the exported labels or the routes, if any. Verify by reading them against the change.

4. Integration check

  • 4.1 Run ./dashboard.sh check and ./dashboard.sh test-integration. Verify that both pass.
  • 4.2 On a local deployment with ./dashboard.sh dev, check an Analytics chart of a 15-minute custom range, the About table and a fast page load against the scenarios. Verify by screenshots.