Skip to content

Latest commit

 

History

History
129 lines (84 loc) · 5.78 KB

CHANGELOG.md

File metadata and controls

129 lines (84 loc) · 5.78 KB

Change Log

Version 0.28 2024-11_20

  • Fix onCurrentMainThreadMessageFinished() running after multiple messages when Espresso is taking over the looper queue

Version 0.27 2024-10_25

Version 0.26 2024-09_11

  • Improve tracking on choreographer frame ends #68. New interesting APIs: MainThreadMessageSpy.currentMessageAsString, Handlers.onCurrentMainThreadMessageFinished(), prop by mainThreadMessageScopedLazy {}, Choreographers.postOnFrameRendered(), Choreographers.postOnWindowFrameRendered() and Choreographers.isInChoreographerFrame.

Version 0.22 2024-08_28

  • Introduced MainThreadMessageSpy (artifact: papa-main-trace) which provides an API to be notified of main thread message dispatching.
  • Introduced InteractionTrigger (2 sub types: SimpleInteractionTrigger and InteractionTriggerWithPayload to represent the concept of a trigger (such as a tap or a key input) in a more generic way that allows for new trigger types, which then allows for better tracking of what started and interaction, and when. Introduced new trigger: main-message to find track the proper start time of an interaction not started with a tap (disble this by setting papa_track_main_thread_triggers to false). New API: MainThreadTriggerStack helps us manage current triggers.
  • API breaking changes: renamed interactionInput to interactionTrigger on InteractionResultData and TrackedInteraction. Removed it entirely from OnEventScope. Removed InteractionStartInput which was replaced by the more generic InteractionTrigger.

Version 0.18 2024-08_21

  • Add support for custom startInteraction start input events #66.

Version 0.15 2023-11-30

  • bugfix: Allow thread disk reads temporarily at onAppCrashing() function

Version 0.14 2023-08-04

  • bugfix: remove the 1 second post delay to compute the lastAliveCurrentMillis value, which can cause excessive reads/writes to disk.

Version 0.13 2023-03-24

  • bugfix: prevent negative values from being recorded for interaction durations. if eventTime is after delivery uptime, use deliveryUptimeMillis for DeliveredInput's uptime.

Version 0.12 2023-03-14

  • Add EventFrameLabeler to leverage with SafeTrace and WindowOverlay to make it easy to match frames in Perfetto & on screen.
  • Add WindowOverlay in papa-dev to facilitate drawing on top of the app windows.
  • Add support for customization of the main thread section names (SafeTraceSetup.mainThreadSectionNameMapper)
  • Make PerfAppComponentFactory public
  • Rename papa-dev-receivers to papa-dev
  • Add OnEventScope.recordSingleFrameInteraction(), OnEventScope.cancel() and OnEventScope.cancelRunningInteractions()
  • Add InteractionRuleClient.trackedInteractions
  • Rename RunningInteraction.events to RunningInteraction.sentEvents

Version 0.10 2022-10-12

  • bugfix: never cleared finishing interactions
  • Add support for registering against event interfaces

Version 0.8 2022-10-06

  • Even more rewrite of the interaction latency APIs! Interactions are now just a list of events (no more start & end, no more interaction type)

Version 0.7 2022-10-03

  • More rewrite of the interaction latency APIs. Adds reporting of start & end events, centralizes the handling of the ending of the interactions.
  • Removing a rule cancels any interaction in flight.

Version 0.6

2022-09-28

  • Rewrite of the APIs to track interaction latency to facilitate integration in a large codebase (#38). This also starts introducing the Kotlin Duration class in the APIs (instead of longs) and started replacing millis measurements with nanos measurements (the accumulated of rounding error led to results that were a few millis off). This also adds tracking of frame count per interaction (#29).
  • Use MessageCompat.setAsynchronous to support API 16+ (#33)
  • onCurrentFrameRendered() joins multiple calls into a single post (#35)

Version 0.5

2022-05-26

  • Library name changed from square/tart to square/papa
  • APIs entirely rewritten, most things are now done via PapaEventListener.install
  • Removed legacy package.
  • APIs still aren't stable but they're getting closer.

Version 0.4.1

2021-10-28

  • Adding atrace traces for touch tracking, leveraging Jetpack tracing.

Version 0.3

2021-9-30

  • Legacy FrozenFrameOnTouchDetector only reports cases where the input has a delay on delivery, rather than looking at total duration from input to frame. This is so that we don't do extra work on every touch down, i.e. previous released would traverse the view hierarchy looking for a pressed view on every touch down when really we just want it for frozen cases.
  • New APIs: isChoreographerDoingFrame() and Window.onCurrentFrameDisplayed().

Version 0.2

2021-9-28

  • Launch detection relies on a predraw listener instead of a draw listener for 1st frame (draw may be skipped if nothing to redraw)
  • Update CpuDuration so that the time Unit is now part of its state instead of being millis. Now relying on nanos where possible. duration.uptimeMillis => duration.uptime(MILLISECONDS).
  • Added new pre launch state: NO_PROCESS_FIRST_LAUNCH_AFTER_CLEAR_DATA
  • Fixed import errors that led to legacy APIs landing in the internal package instead of legacy.
  • Instrumented CI and fixed flakes
  • Improved last touch up recording and added last back recording (currently still a legacy API)
  • FrozenFrameOnTouchDetector stopped reporting one frame late.

Version 0.1

2021-9-23

Initial release.

  • Let's do this!