Skip to content

Releases: FLEXTool/FLEX

4.1.1

06 Apr 22:48
Compare
Choose a tag to compare

Patch: namespace fishhook functions to avoid collisions

4.1.0

06 Apr 22:38
Compare
Choose a tag to compare
  • Heap viewer will take you straight to the instance if it is the only instance
  • Add ability to view any bundle as a database and query it
    • You can export this database from the file browser
  • Fix crash on iPad when pressing any button that presents an action sheet
  • Add a search bar to the view controllers list
  • Add < iOS 13 support to example project
  • Add option to disable dynamic property/ivar previews
  • Other minor bug fixes

4.0.0

24 Mar 20:57
Compare
Choose a tag to compare

This release has been the product of months of daily work. Most of FLEX was rewritten from the ground up. If you want to show your appreciation, I have a GitHub Sponsors profile with a range of tiers where you can donate to me on a monthly basis. I also have Cash App ($tannerbennett). Reach out to me on Twitter if you have any questions or concerns about anything!

(This is by no means a complete list of changes)

Misc

  • Drops support for iOS 8 — if you need to support iOS 8, use FLEX 3
  • Tabs! Every screen now has a toolbar you can use to view the list of open tabs and switch between them.
    • Background a tab by swiping down to dismiss the view controller (yes, even if you're not on iOS 13, try it)
    • Close a tab by pressing the "Done" button or by deleting it from the tabs list
  • Bookmarks! Bookmark objects to save them for later
    • Hit the + button in the tabs list to open a tab from a bookmark
  • New icons for the FLEX toolbar, taken from SFSymbols (yay @3x)
  • System log is back from the dead: iOS 10 largely broke the system log feature with the addition of os_log. FLEX now forces NSLog() to use ASL so you don't get a log full of useless internal junk
  • Added various singletons to the main menu screen
  • Dark mode improvements
  • Run queries on SQLite databases (thanks @LesykMelnychuk)
  • Most screens are now searchable, including lists of object references and the keychain
  • File browser now shows a list of classes when you select a mach-o file
  • More public APIs have been exposed
  • Added a Swift example project which makes use of some new public APIs

FLEX Toolbar

  • Long press on the Menu button to show the list of open tabs
  • Long press on the Views button after selecting a view to show a list of view controllers at that point
  • Long press on the Select button to show a list of all windows and scenes; tap a window to adjust it's level
  • Added a Recent button which opens the most recently backgrounded tab

FLEXObjectExplorer

  • New APIs for customizing "shortcuts" that are displayed for any given object or class
  • Uses a monospace font for displaying metadata
  • Adds context menus for metadata rows on iOS 13, useful for copying various metadata properties
  • Protocol conformances are listed at the bottom, as well as instance size and image of origin
  • Added various helpful shortcuts to a number of classes
  • Fine-tuned the shortcuts for various UIKit classes
  • Swipe left or right to change your position in the class hierarchy
  • Tapping on a property or ivar now takes you to the value; press the detail button to edit instead
  • Added a section index control to aid in quickly jumping to a specific metadata section
  • Added a toolbar with quick access to helpful toggles or options
    • Toggles for visibility of method overrides, property-backing ivars, and property-backing methods
    • Quickly copy the object's description or address or bookmark it
    • Quickly access the list of bookmarks or open tabs
  • Support NSDecimalNumber setters
  • Added option to view a list of subclasses when exploring a class object

View Explorer

  • Swipe left or right on the toolbar's selected view box quickly to move your selection higher or deeper into the view hierarchy
  • Added a 3D reveal-like view explorer: explore an exploded representation of the view hierarchy right on your device!
  • Background colors of views are more accurately indicated
  • Translucency is now correct
  • nil background colors don't show a color indicator at all

Runtime Browser

  • Replaces the System Libraries and App Classes screens
  • Browse the runtime using a key-path-like syntax: bundle.class.method
    • Accepts wildcards, like *.*View* which will list all classes that contain View
    • Currently only supports searching for methods, properties and ivars soon to come
    • Search for an instance method with -methodName, a class method with +methodName, or either by prefixing your query with a wildcard
      • For example, UIKit*.*Controller.*foo searches for any method containing foo in any class ending with Controller in any loaded bundle starting with UIKit

Method Calling

  • Added a "paste" button to argument input accessory views, useful for pasting an address
  • Added support for char * and SEL parameters

Network History

  • Now prompts you to turn it on before taking you to the screen
  • Easy access to the "clear" button in the toolbar
  • iOS 13 users can blacklist domains by 3D touching on requests
  • JSON payloads are now displayed as NSDictionary/NSArray when you try to view them

3.1.2

26 Dec 23:37
Compare
Choose a tag to compare
  • Fix +[FLEXRuntimeUtility potentiallyUnwrapBoxedPointer:type: so that it doesn't try to unbox NSNumber instances
  • Add -subviews and -superview @properties to UIView
  • Keep search bar active between screens
  • Fix #359 a little better—enumerate UIApplication.windows until we find the first UITextEffectsWindow and adjust that window instead of looking right at UIApplication.windows[1]

3.1.1

09 Dec 23:17
Compare
Choose a tag to compare
  • Fix various iOS 13 bugs
  • Add search bar to the database view
  • Swipe to delete keychain items
  • Fix "Copy/Copy Address" callouts not appearing on iOS 13
  • Fix a bug with the "class carousel" not working properly
  • Fix root view controller global not working
  • Fix crash in keychain viewer when viewing NSData

3.1.0

14 Nov 01:39
Compare
Choose a tag to compare

Marking this as 3.1 instead of 3.0.1 because we don't really have much of an "API" to use for semantic versioning, but a lot changed under the hood so I think a minor version change is warranted.

Major changes

  • Drops support for iOS 8
  • Initial support for iOS 13 and dark mode
  • Allow passing addresses for id arguments
  • Added a custom class hierarchy scope bar to the object/class explorer
    • This replaces the old scope bar which only had 2-4 options for viewing inherited metadata
  • You can now search the globals screen
  • Additions to the globals screen:
    • NSProcessInfo.processInfo
    • UIPasteboard.generalPasteboard
    • Explore bundle and container
    • Explore the keychain

Other notable changes

  • Various bug fixes
  • Adopt WKWebView
  • Migrate to UIAlertController
  • Various file browser upgrades
    • Improved image detection
    • Show editor for readonly properties with setters
    • Show share sheet for folders and files
    • Share the actual file instead of the file path in the file browser
    • Adopt context menu on iOS 13
  • By default, exploring user defaults from the globals screen will only show user defaults in the defaults file
    • This hides some useless defaults that appear in NSUserDefaults for all apps

v3.0.0

24 Apr 18:30
Compare
Choose a tag to compare

Notable changes

  • Support for notch-screens (iPhone X, etc)
  • Explore objects by address (#258)
  • Allow copying object addresses (33263bf)
    • Long press on description to activate
  • Support for viewing serialized objects (#254)
  • Rudimentary support for viewing system log messages on iOS 10+ (d7d40e6, #140)
  • Detect and unbox pointers to objects from void * (867ae61)
  • Add "Get" to readwrite editor screens (b64cd37)
  • Allow registration of custom content-type viewers (#241)
  • Exploring color objects shows their color as their description (24d5f3e)
  • Show a view-color indicator in the view hierarchy (#239)
  • Add +[NSBundle mainBundle] to global list (400a3cc)
  • Group similar "objects with ivars referencing this object" (#227)
  • Additional object explorer scopes (#228)
  • Failed network requests are highlighted in red (352bae0)
  • Add a network filter mechanism, aka a blacklist (#185)
    • At the moment this can only be enabled programmatically

All other changes are various bug fixes. You can see the full changelist here.

v2.4.0

01 Oct 22:44
Compare
Choose a tag to compare
  • Various bug fixes (@dazi.dp, @TimOliver, @revolter, @shepting, @ryanolsonk)
  • Search for specific classes under "system libraries" menu (@ThePantsThief)
  • Copy curl commands from network request debugger (@iampgzp)
  • Fix swizzling/network debugging when some NSURLSession methods are not implemented by the delegate (@Blankdlh)
  • Mute Xcode 8 warnings in example project (@c0diq)

v2.3.0

29 Feb 06:02
Compare
Choose a tag to compare
  • Realm database inspection (@TimOliver)
  • More stable heap search (@dazi.dp)
  • Access to ancestor view controller from any view (@nin9tyfour)
  • Support viewing AFNetworking request bodies (@ryanolsonk)
  • Keyboard shortcut handling crash fixes (@ryanolsonk)

v2.2.0

14 Dec 16:39
Compare
Choose a tag to compare
  • SQLite database browser! Access it through the file system browser. (@tttpeng)
  • Support for force touch in the iOS simulator. Use the shift, control, and command keys to apply force. One key == 1/3 maximum possible force. Three keys == full maximum possible force. (@ryanolsonk)
  • Search view hierarchy using pointer address (@untouchable741)
  • Modern array & dictionary syntax (@dlo)
  • Move to UISearchController & bump deployment target to 8.0 (@ryanolsonk)
  • Bug fixes (@revolter, @wanghengheng, @ryanolsonk)