Skip to content

Releases: MxIris-Reverse-Engineering/RuntimeViewer

RuntimeViewer v2.0.1

01 May 14:50
455ba88

Choose a tag to compare

v2.0.1

Stability patch focused on multi-device runtime mirroring and the
underlying message-channel transport.


Improvements

AWDL / Bonjour transport

  • Per-request timeouts on every mirrored-engine RPC so a stalled remote no longer pins a sidebar entry indefinitely
  • Heartbeat-based liveness probes for AWDL-routed peers — the sidebar reflects reality much faster when a peer drops off
  • Tolerate transient AWDL congestion: brief failures no longer fire a spurious "disconnected" notification

Engine mirroring

  • Forwarded mirror engines are cleared when the leaf peer they advertise actually disconnects
  • Mirrors duplicating a direct local route are suppressed so a peer doesn't show up twice when reached two ways

Bug Fixes

  • RuntimeMessageChannel.sendRequest releases its send semaphore on every exit path (previous code leaked a slot whenever the request threw)
  • The timeout task is cancelled the moment a response arrives, so it can't fire later against a re-used identifier
  • Pending requests are drained with an error when the underlying transport closes — callers no longer hang on a dead channel

Internal

  • Release tooling renamed ReleaseScript.shArchiveScript.sh; gains --update-packages
  • Runtime-engine ownership moved into the RuntimeViewerApplication package; mirror reconcile/dedup logic extracted into RuntimeEngineMirrorRegistry with unit tests
  • RuntimeViewerCore / RuntimeViewerPackages gain USING_LOCAL_DEPENDENCIES env switch

Dependencies

  • Bump AssociatedObject 0.15, combine-schedulers 1.2, FrameworkToolbox 0.5.2, Rearrange 2.1.1, swift-asn1 1.7, swift-certificates 1.19.1, swift-dyld-private 1.2
  • Add RunningApplicationKit + RxAppKit pins

RuntimeViewer v2.0.0

24 Apr 07:04

Choose a tag to compare

v2.0.0

Important

If you run into device connection issues (e.g., iOS devices or other macOS peers not being discovered), completely uninstall any previous version (App Cleaner is recommended) before retrying, and make sure every device is running the latest version.

Runtime Viewer v2.0.0 is a ground-up rewrite of the runtime inspection engine
with first-class Swift support, MCP integration for LLM clients, multi-device
inspection over Bonjour, and built-in auto-updates.

Manual install required for this release

v2.0.0 is the first RuntimeViewer build with Sparkle auto-updates. If you
are on v1.x or any earlier v2.x beta / RC, download and install this release
manually — future releases will arrive through Check for Updates….


Highlights

  • Swift interface support — generate Swift type interfaces, memory layouts, and enum layouts from Mach-O binaries
  • MCP integration — let LLM clients (e.g., Claude) inspect runtime information via the Model Context Protocol
  • Bonjour multi-device — discover and connect to iOS / macOS peers on the local network; remote engines mirror into your toolbar
  • Code injection reconnection — injected processes survive app restarts
  • arm64e code injection — inject into arm64e system apps with helper service support
  • Export interface wizard — Xcode-style multi-step export for ObjC and Swift interfaces
  • Auto-update — opt-in beta channel, EdDSA-signed archives, feed served from GitHub Pages

What's new

Swift interface support

Swift type interfaces with memory layout, enum layout, VTable offsets, and
a generic-type indicator icon. Swift-specific generation options control
concurrency annotations, access control, and more. Powered by
MachOSwiftSection.

Faster, more accurate ObjC engine

ClassDumpRuntime is replaced by
MachOObjCSection.
Better performance, better memory behavior, with category dumping.

MCP integration (macOS 15+)

  • Built-in MCP bridge server with automatic port discovery
  • Tools to list classes / protocols, fetch interfaces, look up member addresses, and load/unload images
  • Status indicator and connection popover in the main toolbar
  • MCP settings page with port configuration and one-click client config copy

Bonjour & multi-device

  • Discover and connect to iOS and macOS peers on the local network
  • Remote runtime engines show up in the toolbar alongside local ones, grouped by host
  • Device name, icon, and simulator flag carried over Bonjour metadata
  • Automatic retry on transient failures
  • iOS real-device support including local-network permission handling

Code injection

  • Reconnect automatically to previously injected processes on app restart
  • arm64e targets supported (main app stays arm64, helper and server frameworks compile as arm64e)
  • Inspect sandboxed apps via local TCP sockets

Export & transformers

  • New Xcode-style wizard for exporting ObjC / Swift interfaces to files — handles C++ template filenames and special characters
  • Pluggable runtime interface transformers: C type replacement, Swift type layout, enum layout, VTable offsets, and member addresses
  • Customizable token-template presets, reorderable in Settings

Auto-update (Sparkle)

  • Check for Updates… directly below About
  • Updates settings page with check interval, manual check, and an opt-in beta channel
  • Every archive verified with an EdDSA signature
  • Appcast feed served from GitHub Pages

Filters, bookmarks, and quality-of-life

  • Fuzzy filter for classes and protocols
  • Drag-to-reorder bookmarks
  • Determinate progress bar in the sidebar with phase descriptions ("indexing Swift types", "loading ObjC classes", …)
  • Debug → Export Logs for one-click OSLog export
  • System notifications on connect / disconnect
  • Jump-to-definition icon in the interface viewer
  • IMP addresses shown in ObjC interface output

Platform requirements

  • Main app: macOS 15+
  • MCP features: macOS 15+
  • iOS variant: iOS 18+
  • Runtime inspection library: macOS 10.15+, iOS 13+, Mac Catalyst 13+, watchOS 6+, tvOS 13+, visionOS 1+

Migration from v1.x

  • Helper Service — migrated to SMAppService. Reinstall from Settings → Helper Service after upgrading.
  • Bookmarks — storage moved to Application Support; a one-time migration runs on first launch.
  • MCP — new feature. Point your LLM client at the MCP server path shown in Settings → MCP.

RuntimeViewer v2.0.0-RC.6

24 Apr 05:13

Choose a tag to compare

Pre-release

v2.0.0-RC.6

One-time manual install required

This is the first RuntimeViewer build to include Sparkle-based auto-updates.
Users on v2.0.0-RC.3 or any earlier v2.x beta/RC must download and install
this release manually — there is no auto-update path from a Sparkle-less
build. Every release after RC.6 will be delivered through the in-app
update flow.


New Features

Auto-Update (Sparkle)

  • Integrated Sparkle for secure, in-app automatic updates
  • Check for Updates… menu item directly below About
  • New Updates settings page with "Check now", automatic-check toggle, check interval (hourly / daily / weekly), and opt-in pre-release (beta) channel
  • EdDSA signature verification on every downloaded archive
  • Appcast feed served from GitHub Pages (docs/appcast.xml); subsequent releases update the feed automatically through the unified ReleaseScript.sh

Bug Fixes

  • Fix a receive-loop deadlock caused by conflicting no-response handler sentinels
  • Serialize RuntimeClientConnection mutable state with @Mutex to eliminate a concurrent-access race

Dependencies

  • Bump MachOKit to 0.49.100 and drop the private DyldPrivate import

v2.0.0-RC.3

03 Mar 05:52

Choose a tag to compare

v2.0.0-RC.3 Pre-release
Pre-release

v2.0.0-RC.2

01 Mar 16:08

Choose a tag to compare

v2.0.0-RC.2 Pre-release
Pre-release

v2.0.0-RC.2

Bug fixes and improvements since v2.0.0-RC.1.


Improvements

App Behavior

  • The app no longer quits when the last window is closed — you can reopen documents from the menu or Dock icon
  • Window toolbar now uses the unified style for a cleaner look

Export

  • Fixed the "Export Interface" menu item not being clickable
  • The export menu is now automatically disabled when no image is selected, preventing accidental clicks
  • Improved exported file naming for more intuitive output

Sidebar & Search

  • Fixed the case-insensitive toggle not taking effect when filtering
  • Fixed filter results not refreshing immediately after switching search modes
  • Improved search debouncing to reduce unnecessary refreshes while typing

Interface Viewer

  • ObjC method interface output now includes IMP address comments for easier function location
  • ObjC property getter/setter interface output now includes IMP address comments
  • Significantly improved syntax highlighting rendering performance for smoother browsing of large interfaces

MCP Integration

  • Added get_member_addresses tool for querying Swift function and computed property memory addresses
  • Improved descriptions for all MCP tools so LLM clients can understand and use them more accurately
  • Improved MCP Bridge async communication design for better stability
  • Added "Copy MCP Server Path" menu item for easier LLM client configuration

Bug Fixes

  • Fixed a crash in the export wizard caused by a lost router reference under certain conditions
  • Fixed redundant work when loading the same image multiple times
  • Fixed the window title not correctly reflecting the currently selected image name
  • Fixed a potential crash when the case-insensitive search button was accessed before the view was fully loaded

v2.0.0-RC.1

22 Feb 07:43

Choose a tag to compare

v2.0.0-RC.1 Pre-release
Pre-release

Highlights

  • Swift Interface Support — View Swift type interfaces alongside Objective-C, powered by MachOSwiftSection
  • MachOObjCSection Integration — Replaced ClassDumpRuntime with MachOObjCSection for improved ObjC inspection performance, accuracy, and category dumping support
  • MCP (Model Context Protocol) Integration — LLM clients (e.g., Claude) can now inspect runtime information via MCP
  • Export Interface Wizard — Xcode-style multi-step wizard for exporting runtime interfaces to files
  • arm64e Code Injection — Inject into arm64e applications (such as system apps) with helper service support
  • macOS 26 / Xcode 26 Compatibility — Full adaptation for the latest macOS and Xcode

New Features

Swift Interface Support

  • Add initial Swift interface generation support, fully integrated with MachOSwiftSection
  • Support Swift section generation options and Swift concurrency
  • View Swift type layouts and enum layouts with memory offset display

MCP Integration (Model Context Protocol)

  • Add MCP Server executable for runtime inspection via LLM clients (macOS 15+)

Export Interface Wizard

  • Export single or multiple runtime interfaces (ObjC/Swift) to files

Runtime Interface Transformer

  • Customizable C type replacements in generated interfaces
  • ObjC/Swift split transformer configuration with independent settings
  • SwiftTypeLayout and SwiftEnumLayout transformers with memory offset display and uppercase hex formatting

Settings Panel

  • New settings window with general settings, helper service management, and notification preferences
  • Install/uninstall helper service directly from settings
  • Configurable connection notification options

Filter Engine

  • Implement filter engine and UI for runtime class/protocol filtering
  • Add fuzzy search support for type name filtering
  • RunningApplicationPicker supports search

Sandbox App Code Injection

  • Add Local Socket connection support for injecting into sandboxed apps
  • Communicate with sandboxed apps via local TCP socket

Connection & Notification System

  • Automatic reconnection support with destroy-and-recreate strategy
  • System notification when connecting to a new RuntimeSource
  • Notification alert on disconnection
  • Configurable notification options in settings

arm64e Architecture Support

  • Support arm64e for code injection into arm64e applications (e.g., system apps)
  • Main app remains arm64; only daemon and server-side Frameworks are compiled as arm64e
  • Fixed crash in arm64e environment

Other Features

  • Jump to definition icon in the interface viewer
  • Open Quickly feature (WIP)

v2.0.0-beta.9

19 Jan 17:18

Choose a tag to compare

v2.0.0-beta.9 Pre-release
Pre-release

New Features

Settings Panel

  • New settings window with general settings, helper service management, and notification preferences
  • Install/uninstall helper service directly from settings

Sandbox App Code Injection

  • Add Local Socket connection support for injecting into sandboxed apps
  • Communicate with sandboxed apps via local TCP socket

Connection Notifications

  • System notification when connecting to a new RuntimeSource
  • Notification alert when disconnected
  • Configurable notification options in settings

New Helper Service

  • Migrate to new SMAppService helper architecture
  • Requires reinstalling helper from the settings panel
  • Support for uninstalling legacy helper service

Bug Fixes

Multiple Documents Infinite Loading

  • Fix infinite loading issue when opening multiple document windows

XPC Connection Stability

  • Fix crash when reconnecting XPC connections
  • XPC connections now recover by destroying and recreating instead of reconnecting

v2.0.0-beta.8

11 Jan 17:23

Choose a tag to compare

v2.0.0-beta.8 Pre-release
Pre-release

Release Notes

Highlights

This release features a major refactor of the Objective-C runtime inspection engine, replacing ClassDumpRuntime with the new MachOObjCSection integration for improved performance and accuracy.

New Features

  • Type Layout Support: Added support for printing Swift type layouts and enum layouts
  • OpenQuickly (WIP): Initial implementation of quick navigation feature
  • Bookmark(WIP): Add interested directories or RuntimeObjects to bookmarks

Major Changes

  • MachOObjCSection Integration: Replaced ClassDumpRuntime with MachOObjCSection for Objective-C interface generation
    • Improved performance and memory efficiency
    • Support dumping Objective-C categories

Bug Fixes

  • Fixed AppKit autosave name issues causing window state conflicts

v2.0.0-beta.5

30 Nov 17:51

Choose a tag to compare

v2.0.0-beta.5 Pre-release
Pre-release

Increased fuzzy search filter type name

RunningApplicationPicker supports search

Optimized Text View Loading flickering issue

v2.0.0-beta.4

24 Nov 18:05

Choose a tag to compare

v2.0.0-beta.4 Pre-release
Pre-release
  • Fixed crash on arm64e environment.

  • The main App is no longer compiled as arm64e; only the daemon and server-side Frameworks are compiled as arm64e (because injection into other arm64e programs is required, the main App remains arm64).