3 days ago
LNPopupController

v4.5.5

Fixed a crash in iOS 27 beta 5

5 days ago
KSCrash

2.6.0

[!NOTE] KSCrash 2.6.0 is fully backward-compatible with 2.5.1: no source-breaking changes, and all renamed or removed APIs keep working as deprecated aliases. The Migration Guide covers everything that changed and how to adopt the new features.

Highlights

  • Watchdog monitor: detects main-thread hangs using run-loop observation and a 250ms threshold matching Apple's hang definition, with full backtraces, recovery tracking, and optional non-fatal reports for recovered hangs. Replaces the deprecated Deadlock monitor.
  • Termination monitor: detects OS-level terminations that can't be caught at runtime (OOM, thermal, CPU watchdog, reboots, OS/app upgrades), and previousTerminationReason reports why the previous run ended.
  • CPU tracker: sliding-window CPU state tracking that mirrors Apple's enforcement thresholds, with optional non-fatal EXC_RESOURCE reports on state transitions.
  • Per-key user info: an async-signal-safe, mmap'd key-value store with zero crash-time overhead, replacing the deprecated dictionary userInfo property.
  • Swift modules: Report (strongly-typed CrashReport model for parsing reports), Monitors (MetricKit plugin), and Profiler (sampling profiler).
  • Plus a plugin monitor API, direct backtrace capture API, threadcrumbs, compact binary images, opt-in Swift async stack traces, and a long list of crash-time correctness and hardening fixes.

The CHANGELOG has the complete list of features, deprecations, behavioral changes, and bug fixes.

Full Changelog: https://github.com/kstenerud/KSCrash/compare/2.5.1...2.6.0

11 days ago
KSCrash

2.6.0-beta.5

[!NOTE] Please review this page in the wiki for a deeper dive into all the changes.

[!NOTE] We're naming this v2.6.0 to be clear that we expect it to be 100% compatible, non-source breaking with v2.5.1. Please report any issues you may find.

What's Changed

Full Changelog: https://github.com/kstenerud/KSCrash/compare/2.6.0-beta.4...2.6.0-beta.5

11 days ago
LNPopupController

v4.5.4

  • Implemented the automatic interaction style

    • The automatic interaction style lets the system handle interactions, and may choose different interaction styles for opening and closing the popup
    • Not yet enabled by default; set popupPresentationContainerController.popupInteractionStyle = .automatic to enable
  • Catalyst improvements

12 days ago
LNPopupController

v4.5.3

  • Enabled popupBarAvoidsPrimaryColumn and popupOpensOverSplitViewController by default on all device types
    • To revert to the previous behavior, set them to false on the respective popup presentation container controller
  • popupBarAvoidsPrimaryColumn and popupOpensOverSplitViewController are no longer limited to iOS 26 or 27
  • Reworked bar and content view close button metrics on iOS 27
    • Bar metrics gated behind inheritsBottomBarMetrics, which is enabled by default
  • Some layout improvements
  • Fixed compiler warnings for really old iOS versions (iOS 13..<15)
19 days ago
LNPopupController

v4.5.2

This is a very big release, with many improvements.

Mac iPad

  • Many layout improvements to the popup bar and how it handles the countless variations of bar buttons
  • Fixes to complex RTL layouts
  • Catalyst and iPad are now much better supported, with layouts that were previously not possible
    • The LNPopupItem.leadingBarButtonItems and LNPopupItem.trailingBarButtonItems APIs have been undeprecated and it is now possible to place leading and trailing buttons on any bar style
    • The LNPopupItem.barButtonItems will continue to place items at the trailing edge; however, if you were relying on the previous behaviur, where LNPopupItem.leadingBarButtonItems would be placed in the trailing items on floating bars, this is no longer the case
  • If too many buttons are placed in a bar item and there is no space for the image and/or titles, the popup bar will hide elements to make space available for buttons
    • This is especially important in freely resizeable environments, such as iPads, Mac windows and … future iPhone devices
    • Use the new LNPopupBar.effectiveContentSize API to inspect the effect size of the popup bar content and reduce the number of buttons depending on available space
  • Escape key now closes the popup in most scene environments
    • Some more complex scenes cannot be supported since the popup might be opened in a controller that is not in the responder chain
    • In these cases, route the keys yourself or make the view controller the first responder
  • Catalyst now has first-class support and a new example project
  • New APIs introduced to better support split view controllers on large devices
    • UISplitViewController.popupBarAvoidsPrimaryColumn API has been introduced to better supprot environments where a popup is presented with the split view controller as the popup presentation controller
      • When enabled, the system will attempt to avoid the primary split and move the popup bar out of the way
      • The popup will continue to open over the entire split view controller’s bounds
      • Enabed by default
    • UIViewController.popupOpensOverSplitViewController API has been introduced to better support environments where a popup is presented by a popup presentation controller that is part of a split view controller scene
      • When enabled, the system will open the popup over the entire split view controller’s view bounds rather than only within the specific split
      • This is enabled by default on Catalyst but disabled on iOS (to preserve previous behavior)
      • The popup bar will remain within the containing view controller’s bounds
    • The two new APIs can result in a similar looking behavior from the user’s standpoint, but offer different benefits and tradeoffs; consider first presenting your popup bar over the split view controller
19 days ago
KSCrash

2.6.0-beta.4

[!NOTE] Please review this page in the wiki for a deeper dive into all the changes.

[!NOTE] We're naming this v2.6.0 to be clear that we expect it to be 100% compatible, non-source breaking with v2.5.1. Please report any issues you may find.

What's Changed

Full Changelog: https://github.com/kstenerud/KSCrash/compare/2.6.0-beta.3...2.6.0-beta.4

20 days ago
LNPopupController

v4.5.5

Continued improvements to layout and transitions


Release notes from recent updates:

This is a very big release, with many improvements.

Mac iPad

  • Many layout improvements to the popup bar and how it handles the countless variations of bar buttons
  • Fixes to complex RTL layouts
  • Catalyst and iPad are now much better supported, with layouts that were previously not possible
    • The LNPopupItem.leadingBarButtonItems and LNPopupItem.trailingBarButtonItems APIs have been undeprecated and it is now possible to place leading and trailing buttons on any bar style
    • The LNPopupItem.barButtonItems will continue to place items at the trailing edge; however, if you were relying on the previous behaviur, where LNPopupItem.leadingBarButtonItems would be placed in the trailing items on floating bars, this is no longer the case
  • If too many buttons are placed in a bar item and there is no space for the image and/or titles, the popup bar will hide elements to make space available for buttons
    • This is especially important in freely resizeable environments, such as iPads, Mac windows and … future iPhone devices
    • Use the new LNPopupBar.effectiveContentSize API to inspect the effect size of the popup bar content and reduce the number of buttons depending on available space
  • Escape key now closes the popup in most scene environments
    • Some more complex scenes cannot be supported since the popup might be opened in a controller that is not in the responder chain
    • In these cases, route the keys yourself or make the view controller the first responder
  • Catalyst now has first-class support and a new example project
  • New APIs introduced to better support split view controllers on large devices
    • UISplitViewController.popupBarAvoidsPrimaryColumn API has been introduced to better supprot environments where a popup is presented with the split view controller as the popup presentation controller
      • When enabled, the system will attempt to avoid the primary split and move the popup bar out of the way
      • The popup will continue to open over the entire split view controller’s bounds
      • Enabed by default
    • UIViewController.popupOpensOverSplitViewController API has been introduced to better support environments where a popup is presented by a popup presentation controller that is part of a split view controller scene
      • When enabled, the system will open the popup over the entire split view controller’s view bounds rather than only within the specific split
      • This is enabled by default on Catalyst but disabled on iOS (to preserve previous behavior)
      • The popup bar will remain within the containing view controller’s bounds
    • The two new APIs can result in a similar looking behavior from the user’s standpoint, but offer different benefits and tradeoffs; consider first presenting your popup bar over the split view controller
20 days ago
LNPopupController

v4.5.4

Continued improvements to layout and transitions


Release notes from recent updates:

This is a very big release, with many improvements.

Mac iPad

  • Many layout improvements to the popup bar and how it handles the countless variations of bar buttons
  • Fixes to complex RTL layouts
  • Catalyst and iPad are now much better supported, with layouts that were previously not possible
    • The LNPopupItem.leadingBarButtonItems and LNPopupItem.trailingBarButtonItems APIs have been undeprecated and it is now possible to place leading and trailing buttons on any bar style
    • The LNPopupItem.barButtonItems will continue to place items at the trailing edge; however, if you were relying on the previous behaviur, where LNPopupItem.leadingBarButtonItems would be placed in the trailing items on floating bars, this is no longer the case
  • If too many buttons are placed in a bar item and there is no space for the image and/or titles, the popup bar will hide elements to make space available for buttons
    • This is especially important in freely resizeable environments, such as iPads, Mac windows and … future iPhone devices
    • Use the new LNPopupBar.effectiveContentSize API to inspect the effect size of the popup bar content and reduce the number of buttons depending on available space
  • Escape key now closes the popup in most scene environments
    • Some more complex scenes cannot be supported since the popup might be opened in a controller that is not in the responder chain
    • In these cases, route the keys yourself or make the view controller the first responder
  • Catalyst now has first-class support and a new example project
  • New APIs introduced to better support split view controllers on large devices
    • UISplitViewController.popupBarAvoidsPrimaryColumn API has been introduced to better supprot environments where a popup is presented with the split view controller as the popup presentation controller
      • When enabled, the system will attempt to avoid the primary split and move the popup bar out of the way
      • The popup will continue to open over the entire split view controller’s bounds
      • Enabed by default
    • UIViewController.popupOpensOverSplitViewController API has been introduced to better support environments where a popup is presented by a popup presentation controller that is part of a split view controller scene
      • When enabled, the system will open the popup over the entire split view controller’s view bounds rather than only within the specific split
      • This is enabled by default on Catalyst but disabled on iOS (to preserve previous behavior)
      • The popup bar will remain within the containing view controller’s bounds
    • The two new APIs can result in a similar looking behavior from the user’s standpoint, but offer different benefits and tradeoffs; consider first presenting your popup bar over the split view controller