Releases: kean/Pulse
Releases · kean/Pulse
Pulse 2.0.2
- Fix #102 – invalid error type used in
LoggerStore/storeRequest(...)
method - Fix toolbar icons color on Ventura (macOS)
Pulse 2.0.1
- Fix a crash when saving connection security details - #100
Pulse 2.0
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)
- 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)
- Rename the modules:
PulseCore
->Pulse
andPulse
->PulseLogHandler.
The original naming never made sense because the originally namedPulse
module was completely optional. It is providing only aLogHandler
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)
- 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
andNetworkLogger/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 assizeLimit
can now be set on a per-store basis. - Add
responseBodySizeLimit
toLoggerStore.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 bothNetworkLogger
andLoggerStore
level - Make it easier to redact sensitive information from requests. Add
redactringSensitiveHeaders(_:)
toNetworkLogger.Request
. - Add
contentType
andexpectedContentLength
toNetworkLoggerResponse
- Add
originalRequest
andcurrentRequest
toLoggerNetworkRequestDetailsEntity
- Add
taskId
,taskType
,startDate
,requestBodySize
,responseBodySize
,isFromCache
,redirectCount
,progress
(relationship) toLoggerNetworkRequestEntity
- Add support for download tasks
- Add
loadTask(_:didUpdateProgress:)
toNetworkLogger
for progress reporting - Add a new
LoggerStore
optionsynchronous
. 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 adebugDescription
- 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.
Demo
- You can now use all demo projects to test Pulse Pro (remote logging is available for all of them)
Pulse 1.1.0
- [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
Pulse 1.0.2
Pulse 1.0.1
- [iOS] Fix labels not loading in console filters