Skip to content

Keep opt-in iPhone performance capture running across tabs - #2758

Open
AlexSchmidt1999 wants to merge 5 commits into
ryanbr:mainfrom
AlexSchmidt1999:codex/upstream-performance-capture-oct10
Open

AlexSchmidt1999 wants to merge 5 commits into
ryanbr:mainfrom
AlexSchmidt1999:codex/upstream-performance-capture-oct10

Conversation

@AlexSchmidt1999

@AlexSchmidt1999 AlexSchmidt1999 commented Oct 10, 2026 •

Copy link
Copy Markdown

What this PR does

Display & Performance capture stops when Test Centre leaves the screen, missing normal Today and Trends use. On iPhone, the existing monitor now follows the app's foreground lifecycle while the mode is enabled. It stops in the background or when the mode is disabled.

Bounded summaries record the tab, build, actual display cadence, CPU, memory, thermal state, and sync state. A separate rotating local archive protects them from verbose strap logs and joins the existing redacted test export. Capture stays off by default and sends nothing over the network. macOS keeps its screen-scoped capture.

The late-callback count accounts for adaptive refresh cadence. The existing 33 ms threshold remains a separate statistic.

Type of change

  • Bug fix

How it was tested

Tests cover foreground/background transitions, tab windows, disabled capture, delayed data-volume reads, cadence changes, and percentile calculation. Raw user captures are excluded.

The focused macOS tests and iOS Release build passed on this PR head. Source hygiene and iOS translation checks passed too.

Checklist

  • Generated projects, build output, and credentials are excluded.
  • No new dependencies or destructive strap commands.

iPhone follow-up, October 16

Performance capture is working during ordinary Today use. The retrieved archive includes summaries from both the previous fixed version and the latest merged installation, recorded outside Test Centre.

The anonymized Today measurements from the combined fixes record 1 late callback out of 3,873 (0.026%) over 64.71 seconds, compared with 0.536% over 860.79 seconds before the day-cycle scheduling change. The worst callback interval falls from 159.6 to 63.4 ms. The latest merged installation adds a 6.29-second sample with zero intervals over 33 ms. The report includes the callback counts and source revisions. Raw archives and personal data stay local.

Installed-source update, October 16

The summaries now include independent workout and Lift Log phases (none, active, paused). Phase changes flush the current window, and each foreground start reads the current sessions. This update includes the durable pause contracts in #2759. Review the capture changes above that dependency.

Review head: 34fcc5a240fe. A local merge of the PRs reproduces the installed iPhone commit f88a1e12: 1,182 of 1,183 Apple product files are byte-identical; the remaining file uses the existing NoopMetrics.space3 token for the same 12-point spacing. The combined macOS build and iPhone Release build pass, including widgets and Watch components. The macOS run completes 2,352 app tests with three skipped and zero failures.

@AlexSchmidt1999

Copy link
Copy Markdown
Author

I am using NOOP 12.1.0 Release build 456 on my iPhone 17 Pro Max, and the app runs very smoothly in everyday use.

This PR is included in that combined build, together with my other Apple changes and the performance fixes from #2724 by @UtkuDenizAltiok and #2705 by @kavemang. The installed source is d67cceb5.

Both Apple builds and the local app, analytics, database and Python test suites passed for this combined build.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants