Skip to content

Releases: kean/Pulse

Pulse 2.0.2

20 Aug 01:02
Compare
Choose a tag to compare
  • Fix #102 – invalid error type used in LoggerStore/storeRequest(...) method
  • Fix toolbar icons color on Ventura (macOS)

Pulse 2.0.1

16 Aug 17:48
Compare
Choose a tag to compare
  • Fix a crash when saving connection security details - #100

Pulse 2.0

16 Aug 00:49
Compare
Choose a tag to compare

See Introducing Pulse 2.0 to learn about the new major features.

The binary frameworks will be available with the upcoming patch release when Xcode 14 is released

Pulse 2.0 (RC1)

13 Aug 22:37
Compare
Choose a tag to compare
Pulse 2.0 (RC1) Pre-release
Pre-release
  • All the logged data is now SQL-compatible
  • Optimize storage for custom message metadata
  • Some filters that were programmatic now use the database, e.g. response and request headers filters
  • (iOS) Indicate in the UI when filters are applied
  • Move cURLDescription to Pulse
  • Add support to PDF in FileViewer
  • Fix an issue with store details not loading on iOS 14
  • (macOS) Fix HTML main text color in FileViewer on dark mode
  • (macOS) Fix width of fitlers view
  • (macOS) Fix Network Inspector sometimes failing to load content

Pulse 2.0 (Beta 2)

08 Aug 01:23
76495a6
Compare
Choose a tag to compare
Pulse 2.0 (Beta 2) Pre-release
Pre-release
  • Rename the modules: PulseCore -> Pulse and Pulse -> PulseLogHandler. The original naming never made sense because the originally named Pulse module was completely optional. It is providing only a LogHandler for SwiftLog.
  • Pulse Pro 2.0 was updated to use Pulse 2.0 communication protocol (but more work is needed to support Ventura)
  • Remote logger now also uses compression, reducing the transfers size by up to 90%
  • Fix an issue with StoreDetailsView displaying incorrect decompressed size for blobs
  • Reduce the store space usage by extra 20%
    • The same table that's used for inlined blobs is now also used for unstructured request details (7%)
    • Compress unstructured request details when at rest (13%)
  • Pulse Document now uses SQLite as the underlying document format instead of zip. It improves sharing speed by about 2.5x and document opening speed by a factor of 3x.
  • Switch to .lzfse compression (about 3x faster) and remove ZIPFoundation dependency
  • Request request metrics size by further 20%
  • Reduce maximum store size to 128 MB
  • Store blob keys (SHA1) as binary instead of strings
  • Fix an issue with responseBodySizeLimit not being used
  • A couple of minor fixes and improvements

Pulse 2.0 (Beta 1)

06 Aug 00:59
76495a6
Compare
Choose a tag to compare
Pulse 2.0 (Beta 1) Pre-release
Pre-release
  • 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)

Pulse 1.1.0

14 May 23:44
403699c
Compare
Choose a tag to compare
  • [iOS, watchOS] Update message details design, display custom metadata – #81
  • [iOS] Fix an issue with search toolbar not showing up during searching

Pulse 1.0.3

04 May 01:54
Compare
Choose a tag to compare
  • Fix missing tab bar icons on iOS 13 – #77
  • Fix Network view filters on iOS 13 – #77
  • Fix Time Period filter design on iOS 13

Pulse 1.0.2

29 Apr 01:47
Compare
Choose a tag to compare
  • Fix gray area at the bottom of MainViewController - #73, thanks to TBXark (iOS)
  • Fix #74 – crash on Network view search (iOS)
  • Fix search bar behavior (replace TextField with UISearchBar) (iOS)

Pulse 1.0.1

24 Apr 15:41
Compare
Choose a tag to compare
  • [iOS] Fix labels not loading in console filters