github kean/Pulse 2.0.0-beta.1
Pulse 2.0 (Beta 1)

latest releases: 5.1.1, 5.1.0, 5.0.0...
pre-release2 years ago
  • The documentation for this release is generated by DocC
  • Increase minimum supported platforms to iOS 13.0, watchOS 7.0, tvOS 13.0, macOS 11.0

PulseUI

  • Add support for pending requests. The requests are now added to the console as soon as they are started. This is also supported by the remote logger and Pulse Pro - #88
  • Add a way to store and display decoding errors (works with JSONDecoder or any other decoder). Decoding errors are highlighted directly in the downloaded response JSON.
  • Add a new Insights screen that analyses network traffic and presents some key insights in a visual way (takes advantage of Swift Charts)
  • Add a new store sharing screen where you can specify the output format, the time range, and the log level of the exported messages.
  • Add an all-new store details view (takes advantage of Swift Charts)
  • Add support for download and upload tasks
  • Completely redesigned Request Summary page. You can now see both the "original" and the "current" request.
  • Display parsed query items in the request summary (iOS, macOS)
  • Display response size directly in the message and request lists and also clearly marked responses coming from the cache
  • You can now open the Response view fullscreen (iOS)
  • Optimize response and message viewer to use less vertical space during search (iOS)
  • When you open a network log, it now shows the Response screen by default, which is what you want most of the time (iOS)
  • (iOS, macOS) Add simple syntax-highlighting for HTML
  • "Hosts" network filter now allows multi-selection and some hosts are now displayed inline in the filters panel
  • Update HTML/Markdown export to match the new Summary screen and add request body to the output (all)
  • Add an option to switch between original and current requests in Summary (iOS, macOS)
  • Add "Redirect", "Response Size", "Task Type", and "Response Source" network filters (iOS, macOS)
  • Use triple-column layout on iPad (iOS 14+)
  • Add "Time Period" filter to network filters
  • FileViewer now renders big files lazily
  • (watchOS) Add "Only Errors" and "Only Network" filters directly on the home page
  • (watchOS) Remove a way to pin messages
  • (watchOS) Fix an issue where if the data section was empty, it'll still display a "Show" button taking up valuable vertical space
  • (watchOS) Move the "Remove Messages" button and sharing options to a new Settings page
  • (watchOS) Reduce binary size (TODO: by how much?)
  • (tvOS) Red binary size
  • (iOS, macOS) Add an option to copy "key" to KeyValuePairView context menu
  • (iOS 16) context menu for KeyValuePairView now shows full value
  • (iOS) Add an option to preview HTML response in a web view
  • Free all of the memoized memory when closing the console
  • Improve image viewer: add image border, display size, and type
  • Add "Domain", "Redirect" and "Duration" fields to the request summary

PulseCore

  • Add significant space optimizations that add up to up to 90% reduction in the total space used by LoggerStore. The biggest improvement comes from the fact that the response blobs are now stored in compressed formats and decoded on-demand when you view them. And small blobs (<32 KB) are now stored directly in the database: SQLite is great at storing small blobs. The format for the unstructured data stored in the DB was also improved: for example, URLSessionTask metrics now take up to 50% less space. And finally the database now uses DELETE journal_mode.
  • The logger is now optimized for working with images. It now stores only image thumbnails using HEIF. This can save 95% or more space depending on the original image size.
  • Switch to SHA1 from SHA256 for generating response body hashes. It’s about 30% faster and uses just 40 characters for file names for blobs instead of 64 characters for SHA256.
  • Reduce the store memory usage. When you just write the logs and network requests in the background it now consumes zero memory.
  • Add a way to store decoding errors (NetworkLogger/isWaitingForDecoding and NetworkLogger/logTask(_:didFinishDecodingWith:))
  • You can now get store info (LoggerStore/info) for the current store, not just for the archives.
  • Sweeps are now performed much less regularly (used to be on every app launch)
  • Add copy(to:predicate) that allows you to create a copy of the store but only with messages that pass the given predicate.
  • Add LoggerStore.destroy() for when you want to delete the store that's already open
  • There is now a single LoggerStore/Configuration/sizeLimit option because smaller blobs are now inlined in the database.
  • NetworkLogger no longer stores trace messages – all information about the requests is now available in a structured way
  • You can now change the default store (LoggerStore.shared). It automatically registers as for remote logging source.
  • Add LoggerStore.Configuration. The options, such as sizeLimit can now be set on a per-store basis.
  • Add responseBodySizeLimit to LoggerStore.Configration with the default value of 10 Mb, preventing resources that are too large from being stored.
  • Add LoggerStore/Configuration/maxAge to limit the maximum age of stored messages and requests. By default, it's 2 weeks. When the outdated messages are deleted, the associated blobs also are (which wasn't the case in Pulse 1.0).
  • Add a new way to filter out or modify store events: willHandleEvent. It's available on both NetworkLogger and LoggerStore level
  • Make it easier to redact sensitive information from requests. Add redactringSensitiveHeaders(_:) to NetworkLogger.Request.
  • Add contentType and expectedContentLength to NetworkLoggerResponse
  • Add originalRequest and currentRequest to LoggerNetworkRequestDetailsEntity
  • Add taskId, taskType, startDate, requestBodySize, responseBodySize, isFromCache, redirectCount, progress (relationship) to LoggerNetworkRequestEntity
  • Add support for download tasks
  • Add loadTask(_:didUpdateProgress:) to NetworkLogger for progress reporting
  • Add a new LoggerStore option synchronous. When enabled, all writes to the store happen immediately and synchronously (you generally shouldn't need it).
  • Add a complete error description for networking errors
  • Add convenience property ``LoggerStore/viewContext`
  • Make LoggerStore.model private

Fixes

  • Fix an issue with pins sometimes incorrectly being displayed in table cells
  • Fix an issue with some debug logs appearing in the console when remote logging is enabled
  • Fix metrics rendering for request start/end
  • Fix an issue where on watchOS and tvOS all messages were displayed by default (and not just messages from the current session)
  • (watchOS, tvOS) Fix an issue where sometimes the details screen can get popped automatically
  • Fix an issue where "Remove Messages" button was not available when filters were applied that filter out all messages
  • Fix an issue where the network logger was storing localizedDescription for errors instead of a debugDescription
  • Fix an issue with errors that don't provide an error not being recorded as request failures
  • Fix an issue where some dates were formatted using the current locale
  • (iOS) Fix line height in raw headers viewer
  • Fix an issue where TransferSize view was showing info from only the latest transaction
  • Fix an issue where after calling LoggerStore.copy(to:) the temporary files created during archive weren't deleted
  • Fix an issue where N of messages wasn't being updated in the search bar (iOS)

PulseUI (macOS)

If someone is testing your macOS app, they now have a convenient way to preview the logs right from the app and enable remote logging.

  • Add PulseUI.MainView and PulseUI.SettingsView to macOS - #89#82

Demo

  • You can now use all demo projects to test Pulse Pro (remote logging is available for all of them)

Don't miss a new Pulse release

NewReleases is sending notifications on new releases.