Apr 2, 2023
- Fix warnings in Xcode 14.3
- Improve Dynamic Type support
Mar 10, 2023
- Fix logging on physical tvOS devices – #173 by @mmmcheese
Mar 5, 2023
- Improve search performance, especially when dealing with big responses (20+ MB) and short search terms (1 character) that result in a massive number of matches
- Fix #165: crash in search
Feb 17, 2023
- Add Swift 5.8 support – #164 by @thedavidharris
Feb 16, 2023
- Reduce xcframeworks binary size. Pulse 2.1 MB → 823 KB. PulseUI 7.6 MB → 3.9 MB.
- Reduce PulseUI .swiftmodule size: 4.4 MB → 260 KB.
- When you focus on one of the groups, it now preserves the order of the logs
- On iOS, Insights screen now shows all requests for the current session
- When you open slowest requests, redirects, and failures from the Insights screen, the list now updates automatically as new requests are added
Feb 11, 2023
- Fix #161: misleading title for successful local URL requests
- [macOS] Fix an issue where changing sort descriptors in a table view would affect other display modes
- [macOS] Fix an issue where on first selection in a text view or search results list, the main panel would reload
- The insights view now shows info for the currently selected tasks
- Fix a crash when sharing store and using "This Session" filter
- Address #162: Add
label
parameter toLoggerStore/storeRequest
andNetworkLogger/Configuration
to allow customizing the label associated with the created logs - Remove
NetworkLoggerInsights
Feb 9, 2023
- Fix #155: fix an issue with
GTMSessionFetcher
not working correctly with automationURLSessionProxyDelegate
registration enabled
Feb 7, 2023
- [macOS] Update the design to use the transparent toolbar and move the inspectors to the native left sidebar
- [macOS] Fix an issue with navigation from the metrics screen not working correctly
- [macOS] Move the button to switch from the horizontal to vertical layout to the details view
- [macOS] Fix an issue with text view not scrolling to the selected match when opened from the full-body console search
Feb 6, 2023
- Fix selection not working in search results view on macOS
- Fix transaction details opening an empty page
- Fix a couple of minor issues in light mode on macOS
- Use darker background color for details view (mainly text) on macOS
Feb 4, 2023
- Introduce several features from Pulse Pro to the macOS version of the console
Jan 30, 2023
- Redesign the macOS version of the app and introduce some of the feature from Pulse Pro
- Add the new search that was introduced on iOS in version 3.2
Jan 29, 2023
Jan 27, 2023
- Fix backward compatibility with Pulse Pro 2.x
Jan 24, 2023
- Add new powerful search
- Improve console design
- Add "Sort By" and "Group By" options
- Display pins at the top
- Add "Show Previous Session" button to search
- Other minor changes
- Add metadata search - #148 by @ejensen
Jan 14, 2023
- Update minimum requirements: Swift 5.7 | Xcode 14.0 | iOS 14.0, tvOS 14.0, watchOS 7.0, macOS 12.0
- Add
ConsoleView.network
to other platforms (originally was available only on iOS) - Fix a couple of minor design issues
- Fix missing live progress in Console for upload and download tasks
- New message and network filters design on macOS
- Add search, expand/collapse, enable-all/disable-all buttons to labels and domains filters on all platforms
- Add a missing "Remove Pins" button on macOS
- Add a counter next to labels and domains
- Display labels and domains only visible for the current filter
- Fix an issue where when you were focusing a log label, it wasn't reflected in the filters
- Fix an issue where using the "Recent" date filter was applying the "Session" filter instead
- Improve task to
NSAttributedString
generation speed by up to 7x faster. For multiple tasks, there is up to x3 improvement on top of that. And when converting multiple tasks with the same request or response body, you can see up to 90% faster exports. These optimizations affect everything: rendering response bodies, lists of messages, request headers, sharing (regardless of the output format), and more. - Improve HTML generation speed by 40% (not including
NSAttributedString
improvements that directly affect it) - Add a spinner while preparing a large file for sharing. You can still interact with the app while it's working. Note: it doesn't work with PDF because it has to be used on the main thread.
- Add some basic formatting) for plain text output to make it easier to read
- Fix double dot in shared files extensions
- Remove share as .pdf from Console and TextView (keep in NetworkInspector) - too slow to be used for any reasonable amount of content
Jan 10, 2023
- Add
includedHosts
,includedURLs
,excludedHosts
, andexcludedURLs
toNetworkLogger/Configuration
. By default, they support simple wildcards, e.g.*.example.com
, but you can also enable full regex using another new configuration options:isRegexEnabled
. - Add
sensitiveHeaders
,sensitiveQueryItems
,sensitiveDataFields
toNetworkLogger/Configuration
for redacting sentitive information from logged HTTP headers - Add a new convenience initializer to
NetworkLogger
withconfigure
trailing closure - Make
LoggerStore.Event
frozen
- A complete overhaul. See https://kean.blog/post/pulse-3 for more details.
Dec 18, 2022
- Fix an issue with tabbar transparency (iOS 15 feature) not always working as expected
Sep 30, 2022
- Fix crash when using a custom filter and searching by "label" - #116
- Remove "line" and "function" filters
Sep 11, 2022
- Fix build issues with Catalyst on Xcode 14.0 (PulseUI framework)
- Address warnings on macOS
Sep 10, 2022
- Fix a build issue with Catalyst on Xcode 14.0
Sep 10, 2022
- Add Xcode 14.0 support
Aug 22, 2022
- Fix an issue caught by ConcurrencyDebug - #104
Aug 19, 2022
- Fix #102 – invalid error type used in
LoggerStore/storeRequest(...)
method - Fix toolbar icons color on Ventura (macOS)
Aug 16, 2022
- Fix a crash when saving connection security details - #100
Aug 15, 2022
There are too many changes to list them here.
See Introducing Pulse 2.0 to learn about the new major features.
May 14, 2022
- [iOS, watchOS] Update message details design, display custom metadata – #81
- [iOS] Fix an issue with search toolbar not showing up during searching
May 3, 2022
- 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
Apr 28, 2022
- Fix #74 – crash on Network view
- Fix search bar behavior (replace TextField with UISearchBar)
- Fix gray area at the bottom of MainViewController - #73, thanks to TBXark
Apr 24, 2022
- [iOS] Fix labels not loading in console filters
Apr 23, 2022
- [iOS] Replace
List
withUITableView
to address some performance and usability issues - [iOS] Add console and network filters from Pulse Pro are now available on iOS
- [iOS] Fix an issue with “Remove Messages” button not working on the Console screen
- [iOS] Replace quick filters with "show only errors" button, which is now also available on Network screen. The remaining quick filters are now available on the Filters screen.
- [iOS, watchOS] Add swipe action “Pin” for table cells
- [All] Optimize some search filters
- [iOS] Improve table cells design, allowing for more text to be displayed and making pins more visible
Mar 23, 2022
- Fix multi-threading crash - #69, thanks to Scott Gruby
- Make
SettingsView
public - #68, thanks to Martin Daum
Dec 23, 2021
- Add a default
delegate
value toURLSessionProxyDelegate
Nov 13, 2021
- Fix #58: status code not shown when using
Alamofire.EventMonitor
- Request headers now display cookies
- Add a way to filter out sensitive information using
NetworkLogger
(seewillLogTask
) - Add an option to disable sharing
Nov 5, 2021
- Fix compilation on Xcode 13.2 beta - #54
Oct 19, 2021
- Remove unused
PulseInternal
target - #51, thanks to Agapov Alexey
Oct 18, 2021
- Fix an issue with a URL hardcoded for testing on the summary page
18 Oct, 2021
- Temporarily remove
PulseInternal
17 Oct, 2021
- Rename the folder that Pulse creates in Logs/ directory to
com.github.kean.logger
. Previously, it was using.pulse
as a suffix which was conflicting with the extension used for Pulse documents - #48, thanks to Agapov Alexey - Add
filename
toLoggerMessageEntity
- Add URLSession configuration information to logged network requests, including httpAdditionalHeaders
- Coalesce disk writes to reduce disk usage
- Perform less work on the logger's caller's thread
- Catch all Objective-C exceptions (just in case)
- Fix a warning that the logger would write into the console during initialization
- [All Platforms] Display additional HTTP headers - #41
4 Oct, 2021
- [PulseCore] Add
RemoteLogger
(requires Pulse Pro releasing on Oct 5) - [PulseCore] Store pins persistently and add the respective APIs to
LoggerStore
- [PulseCore] Add new fields to the entities:
levelOrder
,contentType
,requestState
- [PulseCore] Add
LoggerStore.Info.AppInfo
with an app name, bundle identifier, and other information about the app to the Pulse documents - [PulseCore] Opening a (readonly) Pulse document with an unsupported scheme will now throw an error
- [PulseCore] Pins are now stored persistently and are exported along with the store. Add APIs for managing pins in
LoggerStore
- [iOS] Display new
LoggerStore.Info.AppInfo
when opening an existing store - [All Platforms] Improved JSON color theme matching Xcode
15 Sep, 2021
- Add Xcode 13 support - #39, thanks to Jeffrey Macko
13 Sep, 2021
- Add support to httpBodyStreamData - #37, thanks to Klemen Košir
- Fix an issue where cURL share was using request body instead of the response body - #38, thanks to BB9z
11 Sep, 2021
- Add
storeRequest(_,response:error:data:metrics)
method toLoggerStore
. It can be used if you just want to log the response without incremental updates. For incremental updates, use the existingNetworkLogger
class instead. - Fix a crash occurring when you invalidate a
URLSession
that usesURLSessionProxyDelegate
- #36 - Fix an issue where
URLSessionProxyDelegate
was not retaining the real delegate the wayURLSession
does - [iOS] Display a context menu with all available options (plain text, HTML, cURL) etc when pressing "Share" button in a network request details screen on iOS 14
- [HTML export] Add soft-wrap for long header fields
- [HTML export] Add proper overflow for response bodies
- Automatically remove appearance overrides for navigation bar in MainViewController; some break SwiftUI layout (if you need to disable it, use isAutomaticAppearanceOverrideRemovalEnabled.isAutomaticAppearanceOverrideRemovalEnabled)
- [iOS] Limit the size of text values in key-value sections to 4 lines
- [iOS] Add a way to view raw error description
- New icon for "Network"
- Fix missing closing parentheses in error description in an error section
24 Aug, 2021
- Fix an issue with 0 and 1 being printed as Boolean values by the JSON printer – #34, thanks to Abdula Magomedov
21 Aug, 2021
- Fix crash with URLSession automatic session registration - #31, thanks to Ivan Lisovyi
ConsoleView
,NetworkView
, andPinsView
are no longer wrapped intoNavigationView
by default. It gives you more integration options. For example, you can now push aConsoleView
into your ownUINavigationControllers
(orNavigationViews
).- Add
onDismiss
parameter toMainViewController
andMainView
to show a close button - Make
PinsView
initializer public - Make Pulse compatible with earlier Xcode versions (at least down to Xcode 12.4)
- [iOS] Add a "Remove Messages" button directly to the console
- Remove
date
parameter fromstoreMessage
(LoggerStore
) and add default parameters for file, function
7 Jul, 2021
- Fix archive actions for a macOS app
2 Jul, 2021
- Fix #19 – fails to present a file browser
27 Apr, 2021
- Add a missing
CFBundleVersion
.
21 Apr, 2021
- Add HTML export for network requests
- When using a Markdown export, add
.markdown
file extension
- Add
URLSessionProxyDelegate.enableAutomaticRegistration()
for more convenient proxy registration
19 Apr, 2021
Initial public release. See Pulse Docs for more info.
- Frameworks are distributed as SPM packages (using XCFramework) and are also attached to this release
- iOS app is currently available as an open beta at https://testflight.apple.com/join/1jcanE3q
- macOS app attached to the release https://github.com/kean/Pulse/releases/download/0.14.2/Pulse.app.zip
Mar 30, 2021
Performance improvements on iOS, tvOS, watchOS
Mar 29, 2021
- Fix an issue when displaying errors for store issues
- Initial release of UI components
- Fix disclosure indicators in horizontal mode
- Remove @EnvironmentObject usage (still has defects)
Mar 27, 2021
- Add new
LoggerStoreOptions.sweep
that automatically reduces store size when needed by removing the least recently added messages and blobs - Make
LoggerStore.Options
a nested type
- Improve window management on macOS
- Add commands: Open, Open Recent
- Display recent documents on the welcome screen (replaces onDrop which became useless after Pulse document type addition)
- Remove link detection when viewing headers
- Add formatting when viewing raw headers (bold header names)
- Initial release (no UI, just logger)
Mar 21, 2021
- Add Pulse document type. It can be either a readonly archive (for sharing) for a package (for editing). Read here.
- Remove
LoggerStore(name:)
initializer - Rework and document
LoggerStore
initializer - Add
LoggerStore.empty
(can be used as a fallback to throwing init),LoggerStore.archiveURL
- Add experimental
URLSessionProxy
- Add public API to control blob size limit (
LoggerStore.blobsSizeLimit
) - Add
LoggerStore.sweep
API and instead of logs expiration interval use size limit (LoggerStore.databaseSizeLimit
) - Add
Experimental.URLSessionProxy
- Introduce a document-based "Pulse" iOS app to view logs (in addition to an SDK that you can integrate into your app). Beta coming soon.
- Integrate a document browser to view stored files (replaces ad-hoc "Archive" introduce in Pulse 0.10)
- Performance improvements
- Fix "Copy cURL" context action
- Add "Copy response" context action
- Fix an issue with search in text viewer when multiple windows are open
- Improve quick filters screen, now automatically dismissed after selecting a filter
Mar 14, 2021
- [watchOS] Initial watchOS version.
- [iOS] Add a separate option to share a store as text
- [iOS] Fix sharing to Dropbox, Outlook
- [macOS] Fix an issue when sometimes outdated logs will get deleted when viewing archived store
- [macOS] More performance improvements
- [macOS] Fix pin management when multiple stores are open
- [Pulse] Add custom document type with ".pulse" extension. The file is a deflated zip archive that contains blobs, database, and store manifest
- [Pulse] Add new APIs for
LoggerMessageStore
:archive()
creates a store archive (.pulse file)copyStore(at:)
allNetworkRequests()
- [Pulse] Remove
BlobStore
and all associated APIs, it's now managed automatically byLoggerMessageStore
Mar 7, 2021
- Display request duration right in the list
- Add Catalyst support
Mar 2, 2021
macOS-only release
- Add more performance improvements on macOS
- Fix a couple of search-related issues
Mar 1, 2021
- Multiple performance optimizations across the board. Pulse now effortlessly support 50.000+ logs. More optimizations to come in the future versions.
- Fix an issue with sharing network messages from the list on iOS
- Fix case-sensitive text search
- Fix search when log levels are all disabled
- Fix an issue where a Mac app would sometimes remove messages (add new readonly LoggerMessageStore option)
Feb 20, 2021
- Initial macOS version is now available
- Fix an issue where text disappears during search (iOS)
macOS demo attached to the release as .pkg (see private repo)
Feb 13, 2021
- Fix Settings navigation on iPad (use stacked style)
- Add placeholders on iPad for when no navigation item is selected
- Move search toolbar in response viewer to the bottom, this way the fingers don't cover the screen when iterating between matches
- Add search to regular message details view
- Add haptic feedback
- Add "View Raw" buttons to response and request headers
- Fix foreground color for raw text views
- Remove "Response" and "Request" tabs and instead add "View Raw" buttons directly to the "Summary" page. This way viewer has more vertical space and can have its own dedicated navigation bar items. It's also easier to reach, especially after tapping on one of the messages.
- Add "Share" button to response viewer, works both for text and images
- UI improvements
Feb 11, 2021
- Display image pixel size in image response viewer
- Fix layout issues in response viewer on smaller devices
- Add more network request examples in the demo: image response, big JSON response (2500 lines)
- Optimize response text view, now interactive search is able to handle 2000+ lines of text
- Hide keyboard when moving between matches in response text view
NetworkLogger
to send "start request" events with.trace
level- Disable autocapitalization and autocorrection in search bars
- Fix cell highlighting when search bar clear button is tapped
Feb 10, 2021
- Add default initializers for PulseUI views
- Add
MainViewController
for easier UIKit integration - Pulse now be installed on as low as iOS 11. Console will only work on iOS 13, but
MainViewController
is available on iOS 11 and will show "Console is only available in iOS 13 and higher" when running on iOS 12 or lower - Rename
LoggerView
toMainView
- Fix an issue with mock store creation
Feb 9, 2021
- Fix URLSessionProxyDelegate delegate issue where some events weren't recorded properly
- Remove
ConsoleSearchCriteria
,ConsoleShareService
and some other types from the public interface which were not meant to be there - Fix regex crash when using constructs that might produce empty matches, e.g. empty side of an alternation
- Advanced text view with search can now be used with all types of text-based responses, not just JSON
Feb 8, 2021
iOS
- Refined message list UI
- Add quick filters for easy access to commonly used filters
- Add an easy way to reset filters
- Network viewer (using tabs)
- Add "Pins" tab. Pin messages by either using a context menu or by going to the details screen.
- Add new filters: select any combinations of log levels to display, or set cuastom date interval
- Dedicated share sheet for network messages:
- Share as plain text, markdown, or cURL command
- Copy URL, host, or response
- Better placeholders
- Add badge to details screen with message status
- In addition to JSON, response body viewer now supports more content types: plain text, images
- You can now copy HTTP header keys and values
- Copy or share response/request in Network Inspector
- In case of a URLError, display both the code and the short description in the list
- Network tab. Search based on method, path, parameters - anything
- Add powerful search to Response view
macOS
- Update is work in progress
Fixes
- Fix an issue where "Remove All" button was not removing blobs, only messages
- Fix edge insets on inspector screens and use inline style for pushed screens titles
- Fix an issue with empty headers rendering
- Fix an issue with timeline rendering with cache lookup
- Search is now case-insensitive
Feb 6, 2021
- Move
NetworkLogger
and other related types toPulse
- Remove mock stores from
PulseUI
public interfaces - Simplify project structure using Swift Package Manager local dependencies
- Fix Release compilation
Feb 5, 2021
NetworkLogger
is now created with a default logger and blob store- Add
URLSessionProxyDelegate
to automateURLSession
task logging - Add a guide on logging network events
Feb 4, 2021
- Remove UserDefaults sharing from share service
- Response and Request blobs are now stored in a dedicated BlobStore, essentially filesystem. The store has a size limit and uses LRU algorithm for cleanup. BlobStore also deduplicates the blobs, so if the app receives the same response multiple times, only one blob is stored.
- You can open a Pulse store on macOS be selecting a directory with a store, not just the store itself
- Refined view for message list on iOS
- Special messages list cells for network requests
Feb 1, 2021
- Add Network Inspector
Jan 28, 2021
- Add Big Sur support
- Add iOS 14 support
- Update to support "label" filters on macOS
- Add "trace" filter support, "trace" messages are no longer visible by default
May 6, 2020
- Update to Pulse 0.3
May 4, 2020
- Update package dependency to no longer use local dependencies
May 4, 2020
- Optimize search queries
May 3, 2020
- Initial version